Replace field_is_static with a method
authorTom Tromey <tom@tromey.com>
Sat, 22 Apr 2023 18:41:43 +0000 (12:41 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 1 May 2023 15:20:37 +0000 (09:20 -0600)
This changes field_is_static to be a method on struct field, and
updates all the callers.  Most of this patch was written by script.

Regression tested on x86-64 Fedora 36.

24 files changed:
gdb/aarch64-tdep.c
gdb/amd64-tdep.c
gdb/arm-tdep.c
gdb/ax-gdb.c
gdb/c-typeprint.c
gdb/c-varobj.c
gdb/compile/compile-c-symbols.c
gdb/compile/compile-cplus-types.c
gdb/cp-valprint.c
gdb/eval.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/gnu-v3-abi.c
gdb/i386-tdep.c
gdb/loongarch-tdep.c
gdb/mips-tdep.c
gdb/p-typeprint.c
gdb/p-valprint.c
gdb/ppc-sysv-tdep.c
gdb/python/py-type.c
gdb/rust-lang.c
gdb/s390-tdep.c
gdb/typeprint.c
gdb/valops.c

index ec0e51bdaf72d7dfe84e7f367927f37b77dcd7ef..6402b28158e2a0ccece1bde81dacaa2a22e401f2 100644 (file)
@@ -1537,7 +1537,7 @@ aapcs_is_vfp_call_or_return_candidate_1 (struct type *type,
        for (int i = 0; i < type->num_fields (); i++)
          {
            /* Ignore any static fields.  */
-           if (field_is_static (&type->field (i)))
+           if (type->field (i).is_static ())
              continue;
 
            struct type *member = check_typedef (type->field (i).type ());
@@ -1813,7 +1813,7 @@ pass_in_v_vfp_candidate (struct gdbarch *gdbarch, struct regcache *regcache,
       for (int i = 0; i < arg_type->num_fields (); i++)
        {
          /* Don't include static fields.  */
-         if (field_is_static (&arg_type->field (i)))
+         if (arg_type->field (i).is_static ())
            continue;
 
          struct value *field = arg->primitive_field (0, i, arg_type);
index 8d345257e1289e019d1b0d46052e96b3fcf575cf..d37497a23458132e03b8479e72aad8c83ae4d316 100644 (file)
@@ -557,7 +557,7 @@ amd64_has_unaligned_fields (struct type *type)
          /* Ignore static fields, empty fields (for example nested
             empty structures), and bitfields (these are handled by
             the caller).  */
-         if (field_is_static (&type->field (i))
+         if (type->field (i).is_static ()
              || (TYPE_FIELD_BITSIZE (type, i) == 0
                  && subtype->length () == 0)
              || TYPE_FIELD_PACKED (type, i))
@@ -601,7 +601,7 @@ amd64_classify_aggregate_field (struct type *type, int i,
 
   /* Ignore static fields, or empty fields, for example nested
      empty structures.*/
-  if (field_is_static (&type->field (i)) || bitsize == 0)
+  if (type->field (i).is_static () || bitsize == 0)
     return;
 
   int bitpos = bitoffset + type->field (i).loc_bitpos ();
index bfe7d63ed8f1ea72181dd067b07fb289a45bac54..a49a8b7a976bb42ba8f961cd041c6343e9755ceb 100644 (file)
@@ -4524,7 +4524,7 @@ arm_vfp_cprc_sub_candidate (struct type *t,
          {
            int sub_count = 0;
 
-           if (!field_is_static (&t->field (i)))
+           if (!t->field (i).is_static ())
              sub_count = arm_vfp_cprc_sub_candidate (t->field (i).type (),
                                                      base_type);
            if (sub_count == -1)
index 9dda7fe524d76b7eeca1f5d21b476e92038ac134..528f45e19ebb83a5d3d208de49cdebe02e5d1626 100644 (file)
@@ -210,7 +210,7 @@ gen_trace_static_fields (struct agent_expr *ax,
 
   for (i = type->num_fields () - 1; i >= nbases; i--)
     {
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        {
          gen_static_field (ax, &value, type, i);
          if (value.optimized_out)
@@ -1359,7 +1359,7 @@ gen_struct_ref_recursive (struct agent_expr *ax, struct axs_value *value,
                 "this") will have been generated already, which will
                 be unnecessary but not harmful if the static field is
                 being handled as a global.  */
-             if (field_is_static (&type->field (i)))
+             if (type->field (i).is_static ())
                {
                  gen_static_field (ax, value, type, i);
                  if (value->optimized_out)
@@ -1495,7 +1495,7 @@ gen_struct_elt_for_reference (struct agent_expr *ax, struct axs_value *value,
 
       if (t_field_name && strcmp (t_field_name, fieldname) == 0)
        {
-         if (field_is_static (&t->field (i)))
+         if (t->field (i).is_static ())
            {
              gen_static_field (ax, value, t, i);
              if (value->optimized_out)
index 7e9d941a4358d4074d55ff980222fe7b68c5ffe8..416f63bacf52703f5ffc1f6b67b904a7c7c6850f 100644 (file)
@@ -1113,7 +1113,7 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
                 TYPE_FIELD_PRIVATE (type, i), flags);
            }
 
-         bool is_static = field_is_static (&type->field (i));
+         bool is_static = type->field (i).is_static ();
 
          if (flags->print_offsets)
            podata->update (type, i, stream);
index ef4d0bd5047073ccce6b228cdcf434a64515c007..d2a415e60c276a7f2c2ea9fe29f2b2b5bda2ec3f 100644 (file)
@@ -254,7 +254,7 @@ value_struct_element_index (struct value *value, int type_index)
 
   try
     {
-      if (field_is_static (&type->field (type_index)))
+      if (type->field (type_index).is_static ())
        result = value_static_field (type, type_index);
       else
        result = value->primitive_field (0, type_index, type);
index e21689dc25bbf3acdbfa809fb4e9cadda56f5880..617297c3263fcd5386376d04ada2c2fe7729d4b8 100644 (file)
@@ -528,7 +528,7 @@ generate_vla_size (compile_instance *compiler,
        int i;
 
        for (i = 0; i < type->num_fields (); ++i)
-         if (!field_is_static (&type->field (i)))
+         if (!type->field (i).is_static ())
            generate_vla_size (compiler, stream, gdbarch, registers_used, pc,
                               type->field (i).type (), sym);
       }
index 02cd3810b5dad8d63a97ebadd98f8db399def1d4..2f87ad865faa7eeb8b490e5fafac2b5660c36a2a 100644 (file)
@@ -594,7 +594,7 @@ compile_cplus_convert_struct_or_union_members
       gcc_type field_type
        = instance->convert_type (type->field (i).type ());
 
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        {
          CORE_ADDR physaddr;
 
index 167cf0314af695d5f745d476a18f33cfb6289f95..8fad9523a7e5ae8384ce9d899915a4d5e6f238e9 100644 (file)
@@ -193,7 +193,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
 
          /* If requested, skip printing of static fields.  */
          if (!options->static_field_print
-             && field_is_static (&type->field (i)))
+             && type->field (i).is_static ())
            continue;
 
          if (fields_seen)
@@ -227,7 +227,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
 
          annotate_field_begin (type->field (i).type ());
 
-         if (field_is_static (&type->field (i)))
+         if (type->field (i).is_static ())
            {
              gdb_puts ("static ", stream);
              fprintf_symbol (stream,
@@ -258,7 +258,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
            }
          annotate_field_value ();
 
-         if (!field_is_static (&type->field (i))
+         if (!type->field (i).is_static ()
              && TYPE_FIELD_PACKED (type, i))
            {
              struct value *v;
@@ -295,7 +295,7 @@ cp_print_value_fields (struct value *val, struct ui_file *stream,
                  fputs_styled ("<optimized out or zero length>",
                                metadata_style.style (), stream);
                }
-             else if (field_is_static (&type->field (i)))
+             else if (type->field (i).is_static ())
                {
                  try
                    {
@@ -637,7 +637,7 @@ cp_find_class_member (struct type **self_p, int *fieldno,
   for (i = TYPE_N_BASECLASSES (self); i < len; i++)
     {
       field &f = self->field (i);
-      if (field_is_static (&f))
+      if (f.is_static ())
        continue;
       LONGEST bitpos = f.loc_bitpos ();
 
index 6b362f46424546cc8ff807fcb744888dcc32624c..8db9c4df1abc7bf6d7b378af91d6e24062967e3e 100644 (file)
@@ -2366,7 +2366,7 @@ array_operation::evaluate_struct_tuple (struct value *struct_val,
       fieldno++;
       /* Skip static fields.  */
       while (fieldno < struct_type->num_fields ()
-            && field_is_static (&struct_type->field (fieldno)))
+            && struct_type->field (fieldno).is_static ())
        fieldno++;
       if (fieldno >= struct_type->num_fields ())
        error (_("too many initializers"));
index c8d5314bce7e7e827025fae45d5ad3104bed9f0f..75fd4bf19d8931b833fd53a853ae3496353823a3 100644 (file)
@@ -2113,7 +2113,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
        for (i = 0; i < type->num_fields (); ++i)
          {
            /* Static fields can be ignored here.  */
-           if (field_is_static (&type->field (i)))
+           if (type->field (i).is_static ())
              continue;
            /* If the field has dynamic type, then so does TYPE.  */
            if (is_dynamic_type_internal (type->field (i).type (), 0))
@@ -2461,7 +2461,7 @@ resolve_dynamic_union (struct type *type,
     {
       struct type *t;
 
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        continue;
 
       t = resolve_dynamic_type_internal (resolved_type->field (i).type (),
@@ -2677,7 +2677,7 @@ resolve_dynamic_struct (struct type *type,
       unsigned new_bit_length;
       struct property_addr_info pinfo;
 
-      if (field_is_static (&resolved_type->field (i)))
+      if (resolved_type->field (i).is_static ())
        continue;
 
       if (resolved_type->field (i).loc_kind () == FIELD_LOC_KIND_DWARF_BLOCK)
@@ -3582,7 +3582,7 @@ type_align (struct type *type)
        int number_of_non_static_fields = 0;
        for (unsigned i = 0; i < type->num_fields (); ++i)
          {
-           if (!field_is_static (&type->field (i)))
+           if (!type->field (i).is_static ())
              {
                number_of_non_static_fields++;
                ULONGEST f_align = type_align (type->field (i).type ());
@@ -4941,18 +4941,6 @@ print_args (struct field *args, int nargs, int spaces)
     }
 }
 
-int
-field_is_static (struct field *f)
-{
-  /* "static" fields are the fields whose location is not relative
-     to the address of the enclosing struct.  It would be nice to
-     have a dedicated flag that would be set for static fields when
-     the type is being created.  But in practice, checking the field
-     loc_kind should give us an accurate answer.  */
-  return (f->loc_kind () == FIELD_LOC_KIND_PHYSNAME
-         || f->loc_kind () == FIELD_LOC_KIND_PHYSADDR);
-}
-
 static void
 dump_fn_fieldlists (struct type *type, int spaces)
 {
index b5cccb784b2bf301840f2a742aa80698c573e128..9254ec994e3e19805435fabf8325321bf7ef2ffd 100644 (file)
@@ -559,6 +559,18 @@ struct field
     m_name = name;
   }
 
+  /* Return true if this field is static; false if not.  */
+  bool is_static () const
+  {
+    /* "static" fields are the fields whose location is not relative
+       to the address of the enclosing struct.  It would be nice to
+       have a dedicated flag that would be set for static fields when
+       the type is being created.  But in practice, checking the field
+       loc_kind should give us an accurate answer.  */
+    return (m_loc_kind == FIELD_LOC_KIND_PHYSNAME
+           || m_loc_kind == FIELD_LOC_KIND_PHYSADDR);
+  }
+
   /* Location getters / setters.  */
 
   field_loc_kind loc_kind () const
@@ -2686,8 +2698,6 @@ extern struct rank rank_one_type (struct type *, struct type *,
 
 extern void recursive_dump_type (struct type *, int);
 
-extern int field_is_static (struct field *);
-
 /* printcmd.c */
 
 extern void print_scalar_formatted (const gdb_byte *, struct type *,
index 12bc5b09a93d3a6103429f419c8d892587344878..4d1aa12746fbd7d131d76e18131465d0b529134c 100644 (file)
@@ -1536,7 +1536,7 @@ gnuv3_pass_by_reference (struct type *type)
      about recursive loops here, since we are only looking at members
      of complete class type.  Also ignore any static members.  */
   for (fieldnum = 0; fieldnum < type->num_fields (); fieldnum++)
-    if (!field_is_static (&type->field (fieldnum)))
+    if (!type->field (fieldnum).is_static ())
       {
        struct type *field_type = type->field (fieldnum).type ();
 
index 1ab9fc0e87d44bed5c6ad342dd25845eb6dcbb1d..2c73c123c3a346cc182b0a669920a36e7fb1fc74 100644 (file)
@@ -2698,7 +2698,7 @@ i386_16_byte_align_p (struct type *type)
       int i;
       for (i = 0; i < type->num_fields (); i++)
        {
-         if (field_is_static (&type->field (i)))
+         if (type->field (i).is_static ())
            continue;
          if (i386_16_byte_align_p (type->field (i).type ()))
            return 1;
index 74f14c40d5141274b668d8dfa50ad999784e1211..5739af6cc874fc4ce7c0d6bdc8fb6f2172d174e7 100644 (file)
@@ -521,7 +521,7 @@ compute_struct_member (struct type *type,
   for (int i = 0; i < type->num_fields (); i++)
     {
       /* Ignore any static fields.  */
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        continue;
 
       struct type *field_type = check_typedef (type->field (i).type ());
index 7092b266db3cfbad3bec8c7aae127535eb105ff9..6bbee0556aefc03eb2237b1347b0e4049afa935a 100644 (file)
@@ -4886,7 +4886,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbarch *gdbarch, struct type *arg_type,
       struct type *field_type;
 
       /* We're only looking at normal fields.  */
-      if (field_is_static (&arg_type->field (i))
+      if (arg_type->field (i).is_static ()
          || (arg_type->field (i).loc_bitpos () % 8) != 0)
        continue;
 
index 7458aa6c0957a5b8dd709bad3b5cd7ac0de04b8c..563f619425b3f1e8317cb54c7d6eb7c93df94e74 100644 (file)
@@ -516,12 +516,12 @@ pascal_language::type_print_base (struct type *type, struct ui_file *stream, int
                }
 
              print_spaces (level + 4, stream);
-             if (field_is_static (&type->field (i)))
+             if (type->field (i).is_static ())
                gdb_printf (stream, "static ");
              print_type (type->field (i).type (),
                                 type->field (i).name (),
                                 stream, show - 1, level + 4, flags);
-             if (!field_is_static (&type->field (i))
+             if (!type->field (i).is_static ()
                  && TYPE_FIELD_PACKED (type, i))
                {
                  /* It is a bitfield.  This code does not attempt
index d74c738bc22a34d4afec89dfe3b791ca503c7005..2136a192bbc24a4fded0af423ea0adb7521a3efb 100644 (file)
@@ -553,7 +553,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
        {
          /* If requested, skip printing of static fields.  */
          if (!options->pascal_static_field_print
-             && field_is_static (&type->field (i)))
+             && type->field (i).is_static ())
            continue;
          if (fields_seen)
            gdb_printf (stream, ", ");
@@ -582,7 +582,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
 
          annotate_field_begin (type->field (i).type ());
 
-         if (field_is_static (&type->field (i)))
+         if (type->field (i).is_static ())
            {
              gdb_puts ("static ", stream);
              fprintf_symbol (stream,
@@ -597,7 +597,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
          gdb_puts (" = ", stream);
          annotate_field_value ();
 
-         if (!field_is_static (&type->field (i))
+         if (!type->field (i).is_static ()
              && TYPE_FIELD_PACKED (type, i))
            {
              struct value *v;
@@ -634,7 +634,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
                  fputs_styled ("<optimized out or zero length>",
                                metadata_style.style (), stream);
                }
-             else if (field_is_static (&type->field (i)))
+             else if (type->field (i).is_static ())
                {
                  /* struct value *v = value_static_field (type, i);
                     v4.17 specific.  */
index 66630793e86e5f61ef1241f3b86dbab19401aeca..20e732ff1627abdfb8527bc6fc9da053d31f6e91 100644 (file)
@@ -1149,7 +1149,7 @@ ppc64_aggregate_candidate (struct type *type,
            {
              LONGEST sub_count;
 
-             if (field_is_static (&type->field (i)))
+             if (type->field (i).is_static ())
                continue;
 
              sub_count = ppc64_aggregate_candidate
index b68ec8d2c9225e3bd4c7a1825958f3c1ed70e454..feb94efb461fb94f232058520af502e1726a1d5d 100644 (file)
@@ -154,7 +154,7 @@ convert_field (struct type *type, int field)
   if (PyObject_SetAttrString (result.get (), "parent_type", arg.get ()) < 0)
     return NULL;
 
-  if (!field_is_static (&type->field (field)))
+  if (!type->field (field).is_static ())
     {
       const char *attrstring;
 
index 3ef8fcaa329ee5882d7d528ea423a10edc90872d..a060720fd767f4b24a4409b65f8a7df82d13b296 100644 (file)
@@ -130,7 +130,7 @@ rust_underscore_fields (struct type *type)
     return false;
   for (i = 0; i < type->num_fields (); ++i)
     {
-      if (!field_is_static (&type->field (i)))
+      if (!type->field (i).is_static ())
        {
          char buf[20];
 
@@ -403,7 +403,7 @@ rust_language::val_print_struct
   first_field = 1;
   for (i = 0; i < type->num_fields (); ++i)
     {
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        continue;
 
       if (!first_field)
@@ -723,7 +723,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
   std::vector<int> fields;
   for (int i = 0; i < type->num_fields (); ++i)
     {
-      if (field_is_static (&type->field (i)))
+      if (type->field (i).is_static ())
        continue;
       if (is_enum && TYPE_FIELD_ARTIFICIAL (type, i))
        continue;
@@ -741,7 +741,7 @@ rust_print_struct_def (struct type *type, const char *varstring,
     {
       QUIT;
 
-      gdb_assert (!field_is_static (&type->field (i)));
+      gdb_assert (!type->field (i).is_static ());
       gdb_assert (! (is_enum && TYPE_FIELD_ARTIFICIAL (type, i)));
 
       if (flags->print_offsets)
index 047ee088aed03f22341b68aae05806bfccf15608..54b5c89e5e3cfabf5a88c038159ba19b33537054 100644 (file)
@@ -1648,7 +1648,7 @@ s390_effective_inner_type (struct type *type, unsigned int min_size)
        {
          struct field f = type->field (i);
 
-         if (field_is_static (&f))
+         if (f.is_static ())
            continue;
          if (inner != NULL)
            return type;
index 06ecd2c4776f253aa80c6146f00562fa48ce931d..bfe851f348ca855a11f3aa807bf1382d205ec702 100644 (file)
@@ -125,7 +125,7 @@ void
 print_offset_data::update (struct type *type, unsigned int field_idx,
                           struct ui_file *stream)
 {
-  if (field_is_static (&type->field (field_idx)))
+  if (type->field (field_idx).is_static ())
     {
       print_spaces (indentation, stream);
       return;
index d002c9dca9b1b4aa9caa53262c0dff4c47c49648..22be4805a5272c3d1ec6a1aeebfcc3b72ad71804 100644 (file)
@@ -2017,7 +2017,7 @@ struct_field_searcher::search (struct value *arg1, LONGEST offset,
          {
            struct value *v;
 
-           if (field_is_static (&type->field (i)))
+           if (type->field (i).is_static ())
              v = value_static_field (type, i);
            else
              v = arg1->primitive_field (offset, i, type);
@@ -2462,7 +2462,7 @@ value_struct_elt_bitpos (struct value **argp, int bitpos, struct type *ftype,
 
   for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
     {
-      if (!field_is_static (&t->field (i))
+      if (!t->field (i).is_static ()
          && bitpos == t->field (i).loc_bitpos ()
          && types_equal (ftype, t->field (i).type ()))
        return (*argp)->primitive_field (0, i, t);
@@ -3581,7 +3581,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
 
       if (t_field_name && strcmp (t_field_name, name) == 0)
        {
-         if (field_is_static (&t->field (i)))
+         if (t->field (i).is_static ())
            {
              struct value *v = value_static_field (t, i);
              if (want_address)