gdb: add type::is_fixed_instance / type::set_is_fixed_instance
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:08:06 +0000 (11:08 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Mon, 14 Sep 2020 15:08:06 +0000 (11:08 -0400)
Add the `is_fixed_instance` and `set_is_fixed_instance` methods on `struct
type`, in order to remove the `TYPE_FIXED_INSTANCE` macro.  In this patch, the
macro is changed to use the getter, so all the call sites of the macro that are
used as a setter are changed to use the setter method directly.  The next patch
will remove the macro completely.

gdb/ChangeLog:

* gdbtypes.h (struct type) <is_fixed_instance,
set_is_fixed_instance>: New methods.
(TYPE_FIXED_INSTANCE): Use type::is_fixed_instance, change all
write call sites to use type::set_is_fixed_instance.

Change-Id: I4401d81512fab9eab4232bbea48ce6c7d586b94c

gdb/ChangeLog
gdb/ada-lang.c
gdb/gdbtypes.h

index eba28b86ce47b10b57cecc9fcaa5b09a2f6ad59c..29212d996a1e3ce6cb86473f3309d35f0e0abf8b 100644 (file)
@@ -1,3 +1,10 @@
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+       * gdbtypes.h (struct type) <is_fixed_instance,
+       set_is_fixed_instance>: New methods.
+       (TYPE_FIXED_INSTANCE): Use type::is_fixed_instance, change all
+       write call sites to use type::set_is_fixed_instance.
+
 2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdbtypes.h (TYPE_GNU_IFUNC): Remove, replace all
index 4aaf862fd8f60cbcc905498bac2233f6d22d88af..1f9c274b1d0a9febcf05374dfdf28babb6860082 100644 (file)
@@ -2108,7 +2108,7 @@ constrained_packed_array_type (struct type *type, long *elt_bits)
         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
     }
 
-  TYPE_FIXED_INSTANCE (new_type) = 1;
+  new_type->set_is_fixed_instance (true);
   return new_type;
 }
 
@@ -7820,7 +7820,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
   rtype->set_fields
    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
   rtype->set_name (ada_type_name (type));
-  TYPE_FIXED_INSTANCE (rtype) = 1;
+  rtype->set_is_fixed_instance (true);
 
   off = 0;
   bit_len = 0;
@@ -8100,7 +8100,7 @@ template_to_static_fixed_type (struct type *type0)
              type->set_fields (fields);
 
              type->set_name (ada_type_name (type0));
-             TYPE_FIXED_INSTANCE (type) = 1;
+             type->set_is_fixed_instance (true);
              TYPE_LENGTH (type) = 0;
            }
          type->field (f).set_type (new_type);
@@ -8151,7 +8151,7 @@ to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
   rtype->set_fields (fields);
 
   rtype->set_name (ada_type_name (type));
-  TYPE_FIXED_INSTANCE (rtype) = 1;
+  rtype->set_is_fixed_instance (true);
   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
 
   branch_type = to_fixed_variant_branch_type
@@ -8223,7 +8223,7 @@ to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
     }
   else
     {
-      TYPE_FIXED_INSTANCE (type0) = 1;
+      type0->set_is_fixed_instance (true);
       return type0;
     }
 
@@ -8489,7 +8489,7 @@ to_fixed_array_type (struct type *type0, struct value *dval,
         TYPE_LENGTH (result)++;
     }
 
-  TYPE_FIXED_INSTANCE (result) = 1;
+  result->set_is_fixed_instance (true);
   return result;
 }
 
index f72f711bdabd1294066ae2c97aa2a2002dfaf3b8..4bd7c341a73e57f7c5edffd7f4052e2afe9a9ea9 100644 (file)
@@ -226,7 +226,7 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_flag_value, type_instance_flags);
    further interpretation.  Optionally marks ordinary, fixed-size GDB
    type.  */
 
-#define TYPE_FIXED_INSTANCE(t) (TYPE_MAIN_TYPE (t)->flag_fixed_instance)
+#define TYPE_FIXED_INSTANCE(t) ((t)->is_fixed_instance ())
 
 /* * Not textual.  By default, GDB treats all single byte integers as
    characters (or elements of strings) unless this flag is set.  */
@@ -808,7 +808,7 @@ struct main_type
   unsigned int m_flag_vector : 1;
   unsigned int m_flag_stub_supported : 1;
   unsigned int m_flag_gnu_ifunc : 1;
-  unsigned int flag_fixed_instance : 1;
+  unsigned int m_flag_fixed_instance : 1;
   unsigned int flag_objfile_owned : 1;
   unsigned int flag_endianity_not_default : 1;
 
@@ -1141,6 +1141,16 @@ struct type
     this->main_type->m_flag_gnu_ifunc = is_gnu_ifunc;
   }
 
+  bool is_fixed_instance () const
+  {
+    return this->main_type->m_flag_fixed_instance;
+  }
+
+  void set_is_fixed_instance (bool is_fixed_instance)
+  {
+    this->main_type->m_flag_fixed_instance = is_fixed_instance;
+  }
+
   /* * Return the dynamic property of the requested KIND from this type's
      list of dynamic properties.  */
   dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;