[v4,04/14] add make_unqualified_type

Message ID 20141123192748.32193.45077.stgit@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil Nov. 23, 2014, 7:27 p.m. UTC
  From: Tom Tromey <tromey@redhat.com>

There's seemingly no function to get the unqualified variant of a
type, so this patch adds one.  This new function will be used in the
final patch.

2014-10-07  Tom Tromey  <tromey@redhat.com>

	* gdbtypes.h (make_unqualified_type): Declare.
	* gdbtypes.c (make_unqualified_type): New function.
---
 gdb/ChangeLog  |    5 +++++
 gdb/gdbtypes.c |   13 +++++++++++++
 gdb/gdbtypes.h |    2 ++
 3 files changed, 20 insertions(+)
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d6d2b49..15753eb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@ 
 2014-10-07  Tom Tromey  <tromey@redhat.com>
 
+	* gdbtypes.h (make_unqualified_type): Declare.
+	* gdbtypes.c (make_unqualified_type): New function.
+
+2014-10-07  Tom Tromey  <tromey@redhat.com>
+
 	* ui-file.h (ui_file_write_for_put): Declare.
 	* ui-file.c (ui_file_write_for_put): New function.
 	* mi/mi-out.c (do_write): Remove.
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index b921c64..d0f2a9b 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -703,6 +703,19 @@  make_restrict_type (struct type *type)
 			      NULL);
 }
 
+/* Make a type without const, volatile, or restrict.  */
+
+struct type *
+make_unqualified_type (struct type *type)
+{
+  return make_qualified_type (type,
+			      (TYPE_INSTANCE_FLAGS (type)
+			       & ~(TYPE_INSTANCE_FLAG_CONST
+				   | TYPE_INSTANCE_FLAG_VOLATILE
+				   | TYPE_INSTANCE_FLAG_RESTRICT)),
+			      NULL);
+}
+
 /* Replace the contents of ntype with the type *type.  This changes the
    contents, rather than the pointer for TYPE_MAIN_TYPE (ntype); thus
    the changes are propogated to all types in the TYPE_CHAIN.
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 14a1f08..a29fb5f 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -1632,6 +1632,8 @@  extern struct type *make_cv_type (int, int, struct type *, struct type **);
 
 extern struct type *make_restrict_type (struct type *);
 
+extern struct type *make_unqualified_type (struct type *);
+
 extern void replace_type (struct type *, struct type *);
 
 extern int address_space_name_to_int (struct gdbarch *, char *);