Initial support of anonymous data members
authorDodji Seketeli <dodji@redhat.com>
Wed, 9 May 2018 06:51:50 +0000 (08:51 +0200)
committerDodji Seketeli <dodji@redhat.com>
Mon, 14 May 2018 04:41:38 +0000 (06:41 +0200)
An anonymous data member is a data member of a struct or a union which
has no name.  The type of such data member is either a struct or a
union.  For instance:

    struct foo {
      int a;
      struct { // <-- this is an anonymous data member
char a;
char b;
      };
      int c;
    };

In DWARF (as emitted by GCC at least), an anonymous data member is
represented as a data member with an empty name.  Libabigail sees it
just fine, but then when representing *changes* to that kind of data
member, it needs special treatment, otherwise users cannot make sense
of the reports.

This patch adds initial support to represent changes to anonymous data
members.

* include/abg-comparison.h (is_class_or_union_diff)
(is_anonymous_class_or_union_diff): Declare new functions.
* include/abg-fwd.h (is_class_type): Declare new overload for
type_or_decl_base&.
(is_data_member): Declare new overload for decl_base*.
(is_anonymous_data_member)
(anonymous_data_member_to_class_or_union)
(get_class_or_union_flat_representation)
(data_member_has_anonymous_type): Declare new functions.
(is_at_class_scope): Return the class or union scope.
* include/abg-ir.h (var_decl::get_qualified_name): New virtual
data member which overloads decl_base::get_qualified_name.
* src/abg-comparison.cc (is_class_or_union_diff)
(is_anonymous_class_or_union_diff): Define new functions
(leaf_diff_node_marker_visitor::visit_begin): Don't mark anonymous
class or union diff nodes as diff nodes.
* src/abg-ir.cc (is_data_member): Define new overload for
decl_base*.
(is_class_type, is_union_type): Define new overload for type_or_decl_base&.
(is_anonymous_data_member)
(anonymous_data_member_to_class_or_union)
(get_class_or_union_flat_representation)
(data_member_has_anonymous_type): Define new function overloads.
(var_decl::get_qualified_name): Define new virtual member
function.
(is_at_class_scope): Return the class or union scope.
(var_decl::get_pretty_representation): Support anonymous data
members.
(equals): In the overload for class_or_union_diff, mark data
member textual representation changes as local changes.
* src/abg-reporter-priv.cc (represent): In the overload for
var_diff, support changes to anonymous data members.
* src/abg-leaf-reporter.cc (leaf_reporter::report): Report sorted
-- by offset -- data member changes before the ones that are
sorted by other things.
* tests/data/test-diff-filter/libtest44-anonymous-data-member-v{0,1}.so:
New binary test input
* tests/data/test-diff-filter/test44-anonymous-data-member-report-{0,1}.txt:
New reference test outputs.
* tests/data/test-diff-filter/test44-anonymous-data-member-v{0,1}.c:
Source code of the new binary test output above.
* tests/data/Makefile.am: Add the new test files above to the
source distribution.
* tests/data/test-annotate/libtest23.so.abi: Adjust test reference
output.
* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
* tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise.
* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise.
* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
36 files changed:
include/abg-comparison.h
include/abg-fwd.h
include/abg-ir.h
src/abg-comparison.cc
src/abg-ir.cc
src/abg-leaf-reporter.cc
src/abg-reporter-priv.cc
tests/data/Makefile.am
tests/data/test-annotate/libtest23.so.abi
tests/data/test-annotate/libtest24-drop-fns-2.so.abi
tests/data/test-annotate/libtest24-drop-fns.so.abi
tests/data/test-annotate/test13-pr18894.so.abi
tests/data/test-annotate/test14-pr18893.so.abi
tests/data/test-annotate/test15-pr18892.so.abi
tests/data/test-annotate/test17-pr19027.so.abi
tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi
tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi
tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi
tests/data/test-annotate/test21-pr19092.so.abi
tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
tests/data/test-diff-filter/libtest44-anonymous-data-member-v0.so [new file with mode: 0755]
tests/data/test-diff-filter/libtest44-anonymous-data-member-v1.so [new file with mode: 0755]
tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt
tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt
tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt [new file with mode: 0644]
tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt [new file with mode: 0644]
tests/data/test-diff-filter/test44-anonymous-data-member-v0.c [new file with mode: 0644]
tests/data/test-diff-filter/test44-anonymous-data-member-v1.c [new file with mode: 0644]
tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt
tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
tests/test-diff-filter.cc

index 5d25508..592009b 100644 (file)
@@ -2664,6 +2664,12 @@ is_class_diff(const diff* diff);
 const union_diff*
 is_union_diff(const diff* diff);
 
+const class_or_union_diff*
+is_class_or_union_diff(const diff* d);
+
+const class_or_union_diff*
+is_anonymous_class_or_union_diff(const diff* d);
+
 const array_diff*
 is_array_diff(const diff* diff);
 
index 9fd2e3e..24e37ec 100644 (file)
@@ -362,13 +362,13 @@ is_at_global_scope(const decl_base&);
 bool
 is_at_global_scope(const decl_base_sptr);
 
-bool
+class_or_union*
 is_at_class_scope(const decl_base_sptr);
 
-bool
+class_or_union*
 is_at_class_scope(const decl_base*);
 
-bool
+class_or_union*
 is_at_class_scope(const decl_base&);
 
 bool
@@ -428,6 +428,9 @@ is_typedef(type_base*);
 enum_type_decl_sptr
 is_enum_type(const type_or_decl_base_sptr&);
 
+bool
+is_class_type(const type_or_decl_base&);
+
 class_decl*
 is_class_type(const type_or_decl_base*);
 
@@ -440,6 +443,9 @@ is_class_or_union_type(const type_or_decl_base*);
 class_or_union_sptr
 is_class_or_union_type(const type_or_decl_base_sptr&);
 
+bool
+is_union_type(const type_or_decl_base&);
+
 union_decl*
 is_union_type(const type_or_decl_base*);
 
@@ -586,6 +592,42 @@ is_data_member(const var_decl_sptr);
 var_decl_sptr
 is_data_member(const decl_base_sptr&);
 
+var_decl*
+is_data_member(const decl_base *);
+
+bool
+is_anonymous_data_member(const decl_base&);
+
+const var_decl*
+is_anonymous_data_member(const decl_base*);
+
+var_decl_sptr
+is_anonymous_data_member(const decl_base_sptr&);
+
+var_decl_sptr
+is_anonymous_data_member(const var_decl_sptr&);
+
+const var_decl*
+is_anonymous_data_member(const var_decl*);
+
+bool
+is_anonymous_data_member(const var_decl&);
+
+const class_or_union*
+anonymous_data_member_to_class_or_union(const var_decl*);
+
+class_or_union_sptr
+anonymous_data_member_to_class_or_union(const var_decl_sptr&);
+
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl& d);
+
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl* d);
+
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl_sptr& d);
+
 array_type_def*
 is_array_type(const type_or_decl_base* decl);
 
@@ -844,6 +886,21 @@ string
 get_pretty_representation(const method_type_sptr&,
                          bool internal = false);
 
+string
+get_class_or_union_flat_representation(const class_or_union& cou,
+                                      const string& indent,
+                                      bool one_line);
+
+string
+get_class_or_union_flat_representation(const class_or_union* cou,
+                                      const string& indent,
+                                      bool one_line);
+
+string
+get_class_or_union_flat_representation(const class_or_union_sptr& cou,
+                                      const string& indent,
+                                      bool one_line);
+
 bool
 odr_is_relevant(const type_or_decl_base&);
 
index 47816d8..a5c755f 100644 (file)
@@ -2479,6 +2479,9 @@ public:
   interned_string
   get_id() const;
 
+  virtual const interned_string&
+  get_qualified_name(bool internal = false) const;
+
   virtual size_t
   get_hash() const;
 
index d40f4db..0401440 100644 (file)
@@ -593,6 +593,33 @@ const union_diff*
 is_union_diff(const diff* diff)
 {return dynamic_cast<const union_diff*>(diff);}
 
+/// Test if a diff node is a @ref class_or_union_diff node.
+///
+/// @param d the diff node to consider.
+///
+/// @return a non-nil pointer to the @ref class_or_union_diff denoted
+/// by @p d iff @p d is a @ref class_or_union_diff.
+const class_or_union_diff*
+is_class_or_union_diff(const diff* d)
+{return dynamic_cast<const class_or_union_diff*>(d);}
+
+/// Test if a diff node is a @ref class_or_union_diff between two
+/// anonymous classes or unions.
+///
+/// @param d the diff node to consider.
+///
+/// @return a non-nil pointer to the @ref class_or_union_diff iff @p
+/// denoted by @p d iff @p is pointer to an anonymous class or union
+/// diff.
+const class_or_union_diff*
+is_anonymous_class_or_union_diff(const diff* d)
+{
+  if (const class_or_union_diff *dif = is_class_or_union_diff(d))
+    if (dif->first_class_or_union()->get_is_anonymous())
+      return dif;
+  return 0;
+}
+
 /// Test if a diff node is a @ref typedef_diff node.
 ///
 /// @param diff the diff node to consider.
@@ -9819,6 +9846,13 @@ struct leaf_diff_node_marker_visitor : public diff_node_visitor
        // part of the variable change whose pointer type changed, for
        // instance.
        && !is_pointer_diff(d)
+       // An anonymous class or union diff doesn't make sense on its
+       // own.  It must have been described already by the diff of
+       // the enclosing struct or union if 'd' is from an anonymous
+       // data member, or from a typedef change if 'd' is from a
+       // typedef change which underlying type is an anonymous
+       // struct/union.
+       && !is_anonymous_class_or_union_diff(d)
        // Don't show decl-only-ness changes of classes either.
        && !filtering::has_class_decl_only_def_change(d))
       {
index d731ddd..703ff99 100644 (file)
@@ -3787,6 +3787,171 @@ is_data_member(const decl_base_sptr& d)
   return var_decl_sptr();
 }
 
+/// Test if a decl is a data member.
+///
+/// @param d the decl to consider.
+///
+/// @return a pointer to the data member iff @p d is a data member, or
+/// a null pointer.
+var_decl*
+is_data_member(const decl_base *d)
+{
+  if (var_decl *v = is_var_decl(d))
+    if (is_data_member(v))
+      return v;
+  return 0;
+}
+
+/// Test if a decl is an anonymous data member.
+///
+/// @param d the decl to consider.
+///
+/// @return true iff @p d is an anonymous data member.
+bool
+is_anonymous_data_member(const decl_base& d)
+{return is_anonymous_data_member(&d);}
+
+/// Test if a decl is an anonymous data member.
+///
+/// @param d the decl to consider.
+///
+/// @return a non-nil pointer to the @ref var_decl denoted by @p d if
+/// it's an anonymous data member.  Otherwise returns a nil pointer.
+const var_decl*
+is_anonymous_data_member(const decl_base* d)
+{
+  if (const var_decl* v = is_data_member(d))
+    {
+      if (is_anonymous_data_member(v))
+       return v;
+    }
+  return 0;
+}
+
+/// Test if a decl is an anonymous data member.
+///
+/// @param d the decl to consider.
+///
+/// @return a non-nil pointer to the @ref var_decl denoted by @p d if
+/// it's an anonymous data member.  Otherwise returns a nil pointer.
+var_decl_sptr
+is_anonymous_data_member(const decl_base_sptr& d)
+{
+  if (var_decl_sptr v = is_data_member(d))
+    return is_anonymous_data_member(v);
+  return var_decl_sptr();
+}
+
+/// Test if a @ref var_decl is an anonymous data member.
+///
+/// @param d the @ref var_decl to consider.
+///
+/// @return a non-nil pointer to the @ref var_decl denoted by @p d if
+/// it's an anonymous data member.  Otherwise returns a nil pointer.
+var_decl_sptr
+is_anonymous_data_member(const var_decl_sptr& d)
+{
+  if (is_anonymous_data_member(d.get()))
+    return d;
+  return var_decl_sptr();
+}
+
+/// Test if a @ref var_decl is an anonymous data member.
+///
+/// @param d the @ref var_decl to consider.
+///
+/// @return a non-nil pointer to the @ref var_decl denoted by @p d if
+/// it's an anonymous data member.  Otherwise returns a nil pointer.
+const var_decl*
+is_anonymous_data_member(const var_decl* d)
+{
+  if (d && is_anonymous_data_member(*d))
+    return d;
+  return 0;
+}
+
+/// Test if a @ref var_decl is an anonymous data member.
+///
+/// @param d the @ref var_decl to consider.
+///
+/// @return true iff @p d is an anonymous data member.
+bool
+is_anonymous_data_member(const var_decl& d)
+{
+  return (is_data_member(d)
+         && d.get_name().empty()
+         && is_class_or_union_type(d.get_type()));
+}
+
+/// Get the @ref class_or_union type of a given anonymous data member.
+///
+/// @param d the anonymous data member to consider.
+///
+/// @return the @ref class_or_union type of the anonymous data member
+/// @p d.
+const class_or_union*
+anonymous_data_member_to_class_or_union(const var_decl* d)
+{
+  if ((d = is_anonymous_data_member(d)))
+    return is_class_or_union_type(d->get_type().get());
+  return 0;
+}
+
+/// Test if a data member has annonymous type or not.
+///
+/// @param d the data member to consider.
+///
+/// @return the anonymous class or union type iff @p turns out to have
+/// an anonymous type.  Otherwise, returns nil.
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl& d)
+{
+  if (is_data_member(d))
+    if (const class_or_union_sptr cou = is_class_or_union_type(d.get_type()))
+      if (cou->get_is_anonymous())
+       return cou;
+
+  return class_or_union_sptr();
+}
+
+/// Test if a data member has annonymous type or not.
+///
+/// @param d the data member to consider.
+///
+/// @return the anonymous class or union type iff @p turns out to have
+/// an anonymous type.  Otherwise, returns nil.
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl* d)
+{
+  if (d)
+    return data_member_has_anonymous_type(*d);
+  return class_or_union_sptr();
+}
+
+/// Test if a data member has annonymous type or not.
+///
+/// @param d the data member to consider.
+///
+/// @return the anonymous class or union type iff @p turns out to have
+/// an anonymous type.  Otherwise, returns nil.
+const class_or_union_sptr
+data_member_has_anonymous_type(const var_decl_sptr& d)
+{return data_member_has_anonymous_type(d.get());}
+
+/// Get the @ref class_or_union type of a given anonymous data member.
+///
+/// @param d the anonymous data member to consider.
+///
+/// @return the @ref class_or_union type of the anonymous data member
+/// @p d.
+class_or_union_sptr
+anonymous_data_member_to_class_or_union(const var_decl_sptr &d)
+{
+  if (var_decl_sptr v = is_anonymous_data_member(d))
+    return is_class_or_union_type(v->get_type());
+  return class_or_union_sptr();
+}
+
 /// Set the offset of a data member into its containing class.
 ///
 /// @param m the data member to consider.
@@ -6022,6 +6187,141 @@ string
 get_pretty_representation(const method_type_sptr method, bool internal)
 {return get_pretty_representation(method.get(), internal);}
 
+/// Get the flat representation of an instance of @ref class_or_union
+/// type.
+///
+/// The flat representation of a given @ref class_or_union type is the
+/// actual definition of the type, for instance:
+///
+///   struct foo {int a; char b;}
+///
+///@param cou the instance of @ref class_or_union to consider.
+///
+///@param indent the identation spaces to use in the representation.
+///
+///@param one_line if true, then the flat representation stands on one
+///line.  Otherwise, it stands on multiple lines.
+///
+///@return the resulting flat representation.
+string
+get_class_or_union_flat_representation(const class_or_union& cou,
+                                      const string& indent,
+                                      bool one_line)
+{
+  string repr;
+  string local_indent = "  ";
+
+  if (class_decl* clazz = is_class_type(&cou))
+    {
+      repr = indent;
+      if (clazz->is_struct())
+       repr += "struct";
+      else
+       repr += "class";
+    }
+  else if (is_union_type(cou))
+    repr = indent + "union";
+  else
+    return "";
+
+  repr += " ";
+
+  string name = cou.get_qualified_name();
+
+  if (!cou.get_is_anonymous())
+    repr += name;
+
+  repr += "{";
+
+  if (!one_line)
+    repr += "\n";
+
+  string real_indent;
+  const class_or_union::data_members &dmems = cou.get_data_members();
+  for (class_or_union::data_members::const_iterator dm = dmems.begin();
+       dm != dmems.end();
+       ++dm)
+    {
+      if (dm != dmems.begin())
+       {
+         if (one_line)
+           real_indent = " ";
+         else
+           real_indent = "\n" + indent + local_indent;
+       }
+
+      if (var_decl_sptr v = is_anonymous_data_member(*dm))
+       repr +=
+         get_class_or_union_flat_representation
+         (anonymous_data_member_to_class_or_union(*dm),
+          real_indent, one_line);
+      else
+       {
+         if (one_line)
+           {
+             if (dm != dmems.begin())
+               repr += real_indent;
+             repr += (*dm)->get_pretty_representation();
+           }
+         else
+           repr +=  real_indent+ (*dm)->get_pretty_representation();
+       }
+      repr += ";";
+    }
+
+  repr += indent + "}";
+
+  return repr;
+}
+
+/// Get the flat representation of an instance of @ref class_or_union
+/// type.
+///
+/// The flat representation of a given @ref class_or_union type is the
+/// actual definition of the type, for instance:
+///
+///   struct foo {int a; char b;}
+///
+///@param cou the instance of @ref class_or_union to consider.
+///
+///@param indent the identation spaces to use in the representation.
+///
+///@param one_line if true, then the flat representation stands on one
+///line.  Otherwise, it stands on multiple lines.
+///
+///@return the resulting flat representation.
+string
+get_class_or_union_flat_representation(class_or_union* cou,
+                                      const string& indent,
+                                      bool one_line)
+{
+  if (cou)
+    return get_class_or_union_flat_representation(*cou, indent, one_line);
+  return "";
+}
+
+/// Get the flat representation of an instance of @ref class_or_union
+/// type.
+///
+/// The flat representation of a given @ref class_or_union type is the
+/// actual definition of the type, for instance:
+///
+///   struct foo {int a; char b;}
+///
+///@param cou the instance of @ref class_or_union to consider.
+///
+///@param indent the identation spaces to use in the representation.
+///
+///@param one_line if true, then the flat representation stands on one
+///line.  Otherwise, it stands on multiple lines.
+///
+///@return the resulting flat representation.
+string
+get_class_or_union_flat_representation(const class_or_union_sptr& cou,
+                                      const string& indent,
+                                      bool one_line)
+{return get_class_or_union_flat_representation(cou.get(), indent, one_line);}
+
 /// By looking at the language of the TU a given ABI artifact belongs
 /// to, test if the ONE Definition Rule should apply.
 ///
@@ -6207,7 +6507,7 @@ is_at_global_scope(const decl_base_sptr decl)
 /// @param decl the decl to consider.
 ///
 /// @return true iff decl is at class scope.
-bool
+class_or_union*
 is_at_class_scope(const decl_base_sptr decl)
 {return is_at_class_scope(decl.get());}
 
@@ -6216,11 +6516,11 @@ is_at_class_scope(const decl_base_sptr decl)
 /// @param decl the decl to consider.
 ///
 /// @return true iff decl is at class scope.
-bool
+class_or_union*
 is_at_class_scope(const decl_base* decl)
 {
   if (!decl)
-    return false;
+    return 0;
 
   return is_at_class_scope(*decl);
 }
@@ -6230,11 +6530,15 @@ is_at_class_scope(const decl_base* decl)
 /// @param decl the decl to consider.
 ///
 /// @return true iff decl is at class scope.
-bool
+class_or_union*
 is_at_class_scope(const decl_base& decl)
 {
   scope_decl* scope = decl.get_scope();
-  return (is_class_type(scope) || is_union_type(scope));
+  if (class_or_union* cl = is_class_type(scope))
+    return cl;
+  if (class_or_union* cl = is_union_type(scope))
+    return cl;
+  return 0;
 }
 
 /// Tests whether a given decl is at template scope.
@@ -6514,6 +6818,15 @@ is_compatible_with_class_type(const decl_base_sptr& t)
 ///
 /// @parm t the type to consider.
 ///
+/// @return true iff @p t is a class_decl.
+bool
+is_class_type(const type_or_decl_base& t)
+{return is_class_type(&t);}
+
+/// Test whether a type is a class.
+///
+/// @parm t the type to consider.
+///
 /// @return the class_decl if @p t is a class_decl or null otherwise.
 class_decl*
 is_class_type(const type_or_decl_base* t)
@@ -6552,8 +6865,17 @@ is_class_or_union_type(const shared_ptr<type_or_decl_base>& t)
 ///
 /// @param t the type to consider.
 ///
+/// @return true iff @p t is a union_decl.
+bool
+is_union_type(const type_or_decl_base& t)
+{return is_union_type(&t);}
+
+/// Test if a type is a @ref union_decl.
+///
+/// @param t the type to consider.
+///
 /// @return the @ref union_decl is @p is a @ref union_decl, or nil
-/// otherwise.n
+/// otherwise.
 union_decl*
 is_union_type(const type_or_decl_base* t)
 {return dynamic_cast<union_decl*>(const_cast<type_or_decl_base*>(t));}
@@ -13821,6 +14143,46 @@ var_decl::get_hash() const
   return hash_var(this);
 }
 
+/// Get the qualified name of a given variable or data member.
+///
+///
+/// Note that if the current instance of @ref var_decl is an anonymous
+/// data member, then the qualified name is actually the flat
+/// representation (the definition) of the type of the anonymous data
+/// member.  We chose the flat representation because otherwise, the
+/// name an *anonymous* data member is empty, by construction, e.g:
+///
+///   struct foo {
+///     int a;
+///     union {
+///       char b;
+///       char c;
+///     }; // <---- this data member is anonymous.
+///     int d;
+///   }
+///
+///   The string returned for the anonymous member here is going to be:
+///
+///     "union {char b; char c}"
+///
+/// @param internal if true then this is for a purpose to the library,
+/// otherwise, it's for being displayed to users.
+///
+/// @return the resulting qualified name.
+const interned_string&
+var_decl::get_qualified_name(bool internal) const
+{
+  if (is_anonymous_data_member(this)
+      && decl_base::get_qualified_name().empty())
+    {
+      // Display the anonymous data member in a way that makes sense.
+      string r = get_pretty_representation(internal);
+      set_qualified_name(get_environment()->intern(r));
+    }
+
+    return decl_base::get_qualified_name(internal);
+}
+
 /// Build and return the pretty representation of this variable.
 ///
 /// @param internal set to true if the call is intended for an
@@ -13836,13 +14198,68 @@ var_decl::get_pretty_representation(bool internal) const
 
   if (is_member_decl(this) && get_member_is_static(this))
     result = "static ";
+
+  // Detect if the current instance of var_decl is a member of
+  // an anonymous class or union.
+  bool member_of_anonymous_class = false;
+  if (class_or_union* scope = is_at_class_scope(this))
+    if (scope->get_is_anonymous())
+      member_of_anonymous_class = true;
+
   if (array_type_def_sptr t = is_array_type(get_type()))
-    result +=
-      get_type_declaration(t->get_element_type())->get_qualified_name(internal)
-      + " " + get_qualified_name(internal) + t->get_subrange_representation();
+    {
+      string name;
+      if (member_of_anonymous_class)
+       name = get_name();
+      else
+       name = get_qualified_name(internal);
+
+      result +=
+       get_type_declaration(t->get_element_type())->get_qualified_name(internal)
+       + " " + name + t->get_subrange_representation();
+    }
   else
-    result += get_type_declaration(get_type())->get_qualified_name(internal)
-      + " " + get_qualified_name(internal);
+    {
+      if (is_anonymous_data_member(this))
+       {
+         // Display the anonymous data member in a way that
+         // makes sense.
+         result +=
+           get_class_or_union_flat_representation
+           (is_class_or_union_type(get_type()),
+            "", /*one_line=*/true);
+       }
+      else if (data_member_has_anonymous_type(this))
+       {
+         result += get_class_or_union_flat_representation
+           (is_class_or_union_type(get_type()),
+            "", /*one_line=*/true);
+         result += " ";
+         if (member_of_anonymous_class)
+           // It doesn't make sense to name the member of an
+           // anonymous class or union like:
+           // "__anonymous__::data_member_name".  So let's just use
+           // its non-qualified name.
+           result += get_name();
+         else
+           result += get_qualified_name(internal);
+       }
+      else
+       {
+         result +=
+           get_type_declaration(get_type())->get_qualified_name(internal)
+           + " ";
+
+         if (member_of_anonymous_class)
+           // It doesn't make sense to name the member of an
+           // anonymous class or union like:
+           // "__anonymous__::data_member_name".  So let's just use
+           // its non-qualified name.
+           result += get_name();
+         else
+           result += get_qualified_name(internal);
+       }
+    }
   return result;
 }
 
@@ -16744,8 +17161,11 @@ equals(const class_or_union& l, const class_or_union& r, change_kind* k)
          if (k)
            {
              *k |= SUBTYPE_CHANGE_KIND;
-             // TODO: continue this by reporting any representation
-             // change as being local.
+             // Report any representation change as being local.
+             string repr1 = (*d0)->get_pretty_representation();
+             string repr2 = (*d1)->get_pretty_representation();
+             if (repr1 != repr2)
+               *k |= LOCAL_CHANGE_KIND;
              break;
            }
          else
index b458591..c675ca3 100644 (file)
@@ -634,10 +634,10 @@ leaf_reporter::report(const class_or_union_diff& d,
 
       // report changes
       size_t numchanges =
-       d.class_or_union_diff::get_priv()->sorted_subtype_changed_dm_.size();
+       d.class_or_union_diff::get_priv()->sorted_changed_dm_.size();
       size_t num_filtered =
        d.class_or_union_diff::get_priv()->
-       count_filtered_subtype_changed_dm(/*local_only =*/ true);
+       count_filtered_changed_dm(/*local_only =*/ true);
       assert(numchanges >= num_filtered);
       size_t net_numchanges = numchanges - num_filtered;
 
@@ -647,9 +647,9 @@ leaf_reporter::report(const class_or_union_diff& d,
          report_mem_header(out, subtype_change_kind, "data member", indent);
          for (var_diff_sptrs_type::const_iterator it =
                 d.class_or_union_diff::get_priv()->
-                sorted_subtype_changed_dm_.begin();
+                sorted_changed_dm_.begin();
               it != d.class_or_union_diff::get_priv()->
-                sorted_subtype_changed_dm_.end();
+                sorted_changed_dm_.end();
               ++it)
            {
              if (diff_to_be_reported((*it).get()))
@@ -662,10 +662,11 @@ leaf_reporter::report(const class_or_union_diff& d,
            }
        }
 
-      numchanges = d.class_or_union_diff::get_priv()->sorted_changed_dm_.size();
+      numchanges =
+       d.class_or_union_diff::get_priv()->sorted_subtype_changed_dm_.size();
       num_filtered =
        d.class_or_union_diff::get_priv()->
-       count_filtered_changed_dm(/*local_only =*/ true);
+       count_filtered_subtype_changed_dm(/*local_only =*/ true);
       assert(numchanges >= num_filtered);
       net_numchanges = numchanges - num_filtered;
 
@@ -674,8 +675,8 @@ leaf_reporter::report(const class_or_union_diff& d,
          if (!emitted_data_members_changes)
            report_mem_header(out, change_kind, "data member", indent);
          for (var_diff_sptrs_type::const_iterator it =
-                d.class_or_union_diff::get_priv()->sorted_changed_dm_.begin();
-              it != d.class_or_union_diff::get_priv()->sorted_changed_dm_.end();
+                d.class_or_union_diff::get_priv()->sorted_subtype_changed_dm_.begin();
+              it != d.class_or_union_diff::get_priv()->sorted_subtype_changed_dm_.end();
               ++it)
            {
              if (diff_to_be_reported((*it).get()))
index 0663942..5d1da6c 100644 (file)
@@ -414,39 +414,55 @@ represent(const var_diff_sptr     &diff,
   string name1 = o->get_qualified_name();
   string name2 = n->get_qualified_name();
   string pretty_representation = o->get_pretty_representation();
+  bool is_anonymous_data_member_change = false;
 
-    if (diff_sptr d = diff->type_diff())
-      {
-       if (local_only)
-         {
-           string tr1 = get_pretty_representation(o->get_type());
-           string tr2 = get_pretty_representation(n->get_type());
-           if (tr1 != tr2)
-             {
-               out << indent << "type of "
-                   << pretty_representation
-                   << " changed from '" << tr1
-                   << "' to '" << tr2 << "'\n";
-             }
-         }
-       else
-         {
-           if (ctxt->get_reporter()->diff_to_be_reported(d.get()))
-             {
-               out << indent
-                   << "type of '" << pretty_representation << "' changed:\n";
-               if (d->currently_reporting())
-                 out << indent << "  details are being reported\n";
-               else if (d->reported_once())
-                 out << indent << "  details were reported earlier\n";
-               else
-                 d->report(out, indent + "  ");
-               begin_with_and = true;
-             }
-         }
-      }
-
-  if (name1 != name2)
+  if (is_anonymous_data_member(o) && is_anonymous_data_member(n))
+    {
+      is_anonymous_data_member_change = true;
+      string tr1 = o->get_pretty_representation();
+      string tr2 = n->get_pretty_representation();
+      if (tr1 != tr2)
+       {
+         out << indent << "anonymous data member at offset ";
+         emit_num_value(get_data_member_offset(o), *ctxt, out);
+         out << " changed from:\n"
+             << indent << "  " << tr1 << "\n"
+             << indent << "to:\n"
+             << indent << "  " << tr2 << "\n";
+       }
+    }
+  else if (diff_sptr d = diff->type_diff())
+    {
+      if (local_only)
+       {
+         string tr1 = get_pretty_representation(o->get_type());
+         string tr2 = get_pretty_representation(n->get_type());
+         if (tr1 != tr2)
+           {
+             out << indent << "type of "
+                 << pretty_representation
+                 << " changed from '" << tr1
+                 << "' to '" << tr2 << "'\n";
+           }
+       }
+      else
+       {
+         if (ctxt->get_reporter()->diff_to_be_reported(d.get()))
+           {
+             out << indent
+                 << "type of '" << pretty_representation << "' changed:\n";
+             if (d->currently_reporting())
+               out << indent << "  details are being reported\n";
+             else if (d->reported_once())
+               out << indent << "  details were reported earlier\n";
+             else
+               d->report(out, indent + "  ");
+             begin_with_and = true;
+           }
+       }
+    }
+
+  if (!is_anonymous_data_member_change && name1 != name2)
     {
       if (filtering::has_harmless_name_change(o, n)
          && !(ctxt->get_allowed_category()
@@ -494,7 +510,12 @@ represent(const var_diff_sptr      &diff,
              begin_with_and = false;
            }
          else if (!emitted)
-           out << indent << "'" << pretty_representation << "' ";
+           {
+             if (is_anonymous_data_member_change)
+               out << indent;
+             else
+               out << indent << "'" << pretty_representation << "' ";
+           }
          else
            out << ", ";
 
@@ -517,7 +538,12 @@ represent(const var_diff_sptr      &diff,
              begin_with_and = false;
            }
          else if (!emitted)
-           out << indent << "'" << pretty_representation << "' ";
+           {
+             if (is_anonymous_data_member_change)
+               out << indent;
+             else
+               out << indent << "'" << pretty_representation << "' ";
+           }
          else
            out << ", ";
 
index 7fe60d4..0834f11 100644 (file)
@@ -651,6 +651,12 @@ test-diff-filter/libtest43-decl-only-def-change-leaf-report-v1.so \
 test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt \
 test-diff-filter/test43-decl-only-def-change-leaf-report-v0.cc \
 test-diff-filter/test43-decl-only-def-change-leaf-report-v1.cc \
+test-diff-filter/libtest44-anonymous-data-member-v0.so \
+test-diff-filter/libtest44-anonymous-data-member-v1.so \
+test-diff-filter/test44-anonymous-data-member-report-0.txt \
+test-diff-filter/test44-anonymous-data-member-report-1.txt \
+test-diff-filter/test44-anonymous-data-member-v0.c \
+test-diff-filter/test44-anonymous-data-member-v1.c \
 \
 test-diff-suppr/test0-type-suppr-v0.cc \
 test-diff-suppr/test0-type-suppr-v1.cc \
index 2ee06b9..811dcff 100644 (file)
         <union-decl name='__anonymous_union__' is-anonymous='yes' visibility='default' is-declaration-only='yes' id='type-id-30'/>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::__count -->
+        <!-- int __count -->
         <var-decl name='__count' type-id='type-id-16' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __anonymous_struct__::__anonymous_union__ __anonymous_struct__::__value -->
+        <!-- union {} __value -->
         <var-decl name='__value' type-id='type-id-30' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
       </data-member>
     </class-decl>
index f350547..896bf4b 100644 (file)
         <!-- union __anonymous_struct__::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-93'>
           <data-member access='private'>
-            <!-- unsigned int __anonymous_struct__::__anonymous_union__::__wch -->
+            <!-- unsigned int __wch -->
             <var-decl name='__wch' type-id='type-id-81' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- char __anonymous_struct__::__anonymous_union__::__wchb[4] -->
+            <!-- char __wchb[4] -->
             <var-decl name='__wchb' type-id='type-id-94' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::__count -->
+        <!-- int __count -->
         <var-decl name='__count' type-id='type-id-37' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __anonymous_struct__::__anonymous_union__ __anonymous_struct__::__value -->
+        <!-- union {unsigned int __wch; char __wchb[4];} __value -->
         <var-decl name='__value' type-id='type-id-93' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
       </data-member>
     </class-decl>
index f350547..896bf4b 100644 (file)
         <!-- union __anonymous_struct__::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-93'>
           <data-member access='private'>
-            <!-- unsigned int __anonymous_struct__::__anonymous_union__::__wch -->
+            <!-- unsigned int __wch -->
             <var-decl name='__wch' type-id='type-id-81' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- char __anonymous_struct__::__anonymous_union__::__wchb[4] -->
+            <!-- char __wchb[4] -->
             <var-decl name='__wchb' type-id='type-id-94' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::__count -->
+        <!-- int __count -->
         <var-decl name='__count' type-id='type-id-37' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __anonymous_struct__::__anonymous_union__ __anonymous_struct__::__value -->
+        <!-- union {unsigned int __wch; char __wchb[4];} __value -->
         <var-decl name='__value' type-id='type-id-93' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
       </data-member>
     </class-decl>
index 9480011..80d67a7 100644 (file)
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-170' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='45' column='1' id='type-id-171'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void* __anonymous_struct__::dummy1 -->
+        <!-- void* dummy1 -->
         <var-decl name='dummy1' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='46' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- void* __anonymous_struct__::dummy2 -->
+        <!-- void* dummy2 -->
         <var-decl name='dummy2' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- dbus_uint32_t __anonymous_struct__::dummy8 -->
+        <!-- dbus_uint32_t dummy8 -->
         <var-decl name='dummy8' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='48' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int __anonymous_struct__::dummy12 -->
+        <!-- int dummy12 -->
         <var-decl name='dummy12' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='49' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int __anonymous_struct__::dummy17 -->
+        <!-- int dummy17 -->
         <var-decl name='dummy17' type-id='type-id-9' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='50' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='1216' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-178' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='153' column='1' id='type-id-179'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned int __anonymous_struct__::mask -->
+        <!-- unsigned int mask -->
         <var-decl name='mask' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='154' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusMutexNewFunction __anonymous_struct__::mutex_new -->
+        <!-- DBusMutexNewFunction mutex_new -->
         <var-decl name='mutex_new' type-id='type-id-180' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='156' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DBusMutexFreeFunction __anonymous_struct__::mutex_free -->
+        <!-- DBusMutexFreeFunction mutex_free -->
         <var-decl name='mutex_free' type-id='type-id-181' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='157' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusMutexLockFunction __anonymous_struct__::mutex_lock -->
+        <!-- DBusMutexLockFunction mutex_lock -->
         <var-decl name='mutex_lock' type-id='type-id-182' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='158' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusMutexUnlockFunction __anonymous_struct__::mutex_unlock -->
+        <!-- DBusMutexUnlockFunction mutex_unlock -->
         <var-decl name='mutex_unlock' type-id='type-id-183' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='159' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
-        <!-- DBusCondVarNewFunction __anonymous_struct__::condvar_new -->
+        <!-- DBusCondVarNewFunction condvar_new -->
         <var-decl name='condvar_new' type-id='type-id-184' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='161' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
-        <!-- DBusCondVarFreeFunction __anonymous_struct__::condvar_free -->
+        <!-- DBusCondVarFreeFunction condvar_free -->
         <var-decl name='condvar_free' type-id='type-id-185' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='162' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
-        <!-- DBusCondVarWaitFunction __anonymous_struct__::condvar_wait -->
+        <!-- DBusCondVarWaitFunction condvar_wait -->
         <var-decl name='condvar_wait' type-id='type-id-186' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='163' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
-        <!-- DBusCondVarWaitTimeoutFunction __anonymous_struct__::condvar_wait_timeout -->
+        <!-- DBusCondVarWaitTimeoutFunction condvar_wait_timeout -->
         <var-decl name='condvar_wait_timeout' type-id='type-id-187' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='164' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
-        <!-- DBusCondVarWakeOneFunction __anonymous_struct__::condvar_wake_one -->
+        <!-- DBusCondVarWakeOneFunction condvar_wake_one -->
         <var-decl name='condvar_wake_one' type-id='type-id-188' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='165' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
-        <!-- DBusCondVarWakeAllFunction __anonymous_struct__::condvar_wake_all -->
+        <!-- DBusCondVarWakeAllFunction condvar_wake_all -->
         <var-decl name='condvar_wake_all' type-id='type-id-189' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='166' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
-        <!-- DBusRecursiveMutexNewFunction __anonymous_struct__::recursive_mutex_new -->
+        <!-- DBusRecursiveMutexNewFunction recursive_mutex_new -->
         <var-decl name='recursive_mutex_new' type-id='type-id-190' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='168' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='768'>
-        <!-- DBusRecursiveMutexFreeFunction __anonymous_struct__::recursive_mutex_free -->
+        <!-- DBusRecursiveMutexFreeFunction recursive_mutex_free -->
         <var-decl name='recursive_mutex_free' type-id='type-id-191' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='169' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='832'>
-        <!-- DBusRecursiveMutexLockFunction __anonymous_struct__::recursive_mutex_lock -->
+        <!-- DBusRecursiveMutexLockFunction recursive_mutex_lock -->
         <var-decl name='recursive_mutex_lock' type-id='type-id-192' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='170' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
-        <!-- DBusRecursiveMutexUnlockFunction __anonymous_struct__::recursive_mutex_unlock -->
+        <!-- DBusRecursiveMutexUnlockFunction recursive_mutex_unlock -->
         <var-decl name='recursive_mutex_unlock' type-id='type-id-193' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='171' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
-        <!-- void ()* __anonymous_struct__::padding1 -->
+        <!-- void ()* padding1 -->
         <var-decl name='padding1' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='173' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
-        <!-- void ()* __anonymous_struct__::padding2 -->
+        <!-- void ()* padding2 -->
         <var-decl name='padding2' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='174' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
-        <!-- void ()* __anonymous_struct__::padding3 -->
+        <!-- void ()* padding3 -->
         <var-decl name='padding3' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='175' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1152'>
-        <!-- void ()* __anonymous_struct__::padding4 -->
+        <!-- void ()* padding4 -->
         <var-decl name='padding4' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='176' column='1'/>
       </data-member>
     </class-decl>
index f102abe..e863842 100644 (file)
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-85' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1' id='type-id-86'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PQHeapHandle __anonymous_struct__::handle -->
+        <!-- PQHeapHandle handle -->
         <var-decl name='handle' type-id='type-id-83' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-87' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1' id='type-id-88'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PQHeapKey __anonymous_struct__::key -->
+        <!-- PQHeapKey key -->
         <var-decl name='key' type-id='type-id-89' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- PQHeapHandle __anonymous_struct__::node -->
+        <!-- PQHeapHandle node -->
         <var-decl name='node' type-id='type-id-83' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='1024' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-112' visibility='default' filepath='/usr/include/bits/sigset.h' line='30' column='1' id='type-id-115'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned long int __anonymous_struct__::__val[16] -->
+        <!-- unsigned long int __val[16] -->
         <var-decl name='__val' type-id='type-id-116' visibility='default' filepath='/usr/include/bits/sigset.h' line='31' column='1'/>
       </data-member>
     </class-decl>
         <!-- union O_curve::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='56' column='1' id='type-id-284'>
           <data-member access='private'>
-            <!-- O_nurbscurve* O_curve::__anonymous_union__::o_nurbscurve -->
+            <!-- O_nurbscurve* o_nurbscurve -->
             <var-decl name='o_nurbscurve' type-id='type-id-194' visibility='default' filepath='libnurbs/internals/reader.h' line='57' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- O_pwlcurve* O_curve::__anonymous_union__::o_pwlcurve -->
+            <!-- O_pwlcurve* o_pwlcurve -->
             <var-decl name='o_pwlcurve' type-id='type-id-193' visibility='default' filepath='libnurbs/internals/reader.h' line='58' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- O_curve::__anonymous_union__ O_curve::curve -->
+        <!-- union {O_nurbscurve* o_nurbscurve; O_pwlcurve* o_pwlcurve;} O_curve::curve -->
         <var-decl name='curve' type-id='type-id-284' visibility='default' filepath='libnurbs/internals/reader.h' line='59' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-270' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-323'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void (NurbsTessellator*, void*)* __anonymous_struct__::__pfn -->
+        <!-- void (NurbsTessellator*, void*)* __pfn -->
         <var-decl name='__pfn' type-id='type-id-348' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int __anonymous_struct__::__delta -->
+        <!-- long int __delta -->
         <var-decl name='__delta' type-id='type-id-55' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
       </data-member>
     </class-decl>
index dfbdd62..88c4dff 100644 (file)
       <!-- struct __sanitizer::__anonymous_struct__ -->
       <class-decl name='__anonymous_struct__' size-in-bits='1024' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-620' visibility='default' filepath='../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h' line='379' column='1' id='type-id-621'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <!-- unsigned long int __sanitizer::__anonymous_struct__::fds_bits[16] -->
+          <!-- unsigned long int fds_bits[16] -->
           <var-decl name='fds_bits' type-id='type-id-622' visibility='default' filepath='../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h' line='380' column='1'/>
         </data-member>
       </class-decl>
         <!-- union sigaction_t::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_interceptors.cc' line='92' column='1' id='type-id-754'>
           <data-member access='private'>
-            <!-- sighandler_t sigaction_t::__anonymous_union__::sa_handler -->
+            <!-- sighandler_t sa_handler -->
             <var-decl name='sa_handler' type-id='type-id-755' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_interceptors.cc' line='93' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- void (int, my_siginfo_t*, void*)* sigaction_t::__anonymous_union__::sa_sigaction -->
+            <!-- void (int, my_siginfo_t*, void*)* sa_sigaction -->
             <var-decl name='sa_sigaction' type-id='type-id-756' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_interceptors.cc' line='94' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- sigaction_t::__anonymous_union__  -->
+        <!-- union {sighandler_t sa_handler; void (int, my_siginfo_t*, void*)* sa_sigaction;} -->
         <var-decl name='' type-id='type-id-754' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
       <!-- struct __tsan::__anonymous_struct__ -->
       <class-decl name='__anonymous_struct__' size-in-bits='1216' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='33' column='1' id='type-id-1456'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::lo -->
+          <!-- __tsan::MD5_u32plus lo -->
           <var-decl name='lo' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='34' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::hi -->
+          <!-- __tsan::MD5_u32plus hi -->
           <var-decl name='hi' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='34' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::a -->
+          <!-- __tsan::MD5_u32plus a -->
           <var-decl name='a' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='35' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::b -->
+          <!-- __tsan::MD5_u32plus b -->
           <var-decl name='b' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='35' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::c -->
+          <!-- __tsan::MD5_u32plus c -->
           <var-decl name='c' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='35' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='160'>
-          <!-- __tsan::MD5_u32plus __tsan::__anonymous_struct__::d -->
+          <!-- __tsan::MD5_u32plus d -->
           <var-decl name='d' type-id='type-id-1457' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='35' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <!-- unsigned char __tsan::__anonymous_struct__::buffer[64] -->
+          <!-- unsigned char buffer[64] -->
           <var-decl name='buffer' type-id='type-id-1458' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='36' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='704'>
-          <!-- unsigned int __tsan::__anonymous_struct__::block[16] -->
+          <!-- unsigned int block[16] -->
           <var-decl name='block' type-id='type-id-166' visibility='default' filepath='../../.././libsanitizer/tsan/tsan_md5.cc' line='37' column='1'/>
         </data-member>
       </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='448' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-1539' visibility='default' filepath='/usr/include/elf.h' line='551' column='1' id='type-id-1540'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Elf64_Word __anonymous_struct__::p_type -->
+        <!-- Elf64_Word p_type -->
         <var-decl name='p_type' type-id='type-id-1541' visibility='default' filepath='/usr/include/elf.h' line='552' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- Elf64_Word __anonymous_struct__::p_flags -->
+        <!-- Elf64_Word p_flags -->
         <var-decl name='p_flags' type-id='type-id-1541' visibility='default' filepath='/usr/include/elf.h' line='553' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- Elf64_Off __anonymous_struct__::p_offset -->
+        <!-- Elf64_Off p_offset -->
         <var-decl name='p_offset' type-id='type-id-1542' visibility='default' filepath='/usr/include/elf.h' line='554' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Elf64_Addr __anonymous_struct__::p_vaddr -->
+        <!-- Elf64_Addr p_vaddr -->
         <var-decl name='p_vaddr' type-id='type-id-1534' visibility='default' filepath='/usr/include/elf.h' line='555' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- Elf64_Addr __anonymous_struct__::p_paddr -->
+        <!-- Elf64_Addr p_paddr -->
         <var-decl name='p_paddr' type-id='type-id-1534' visibility='default' filepath='/usr/include/elf.h' line='556' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
-        <!-- Elf64_Xword __anonymous_struct__::p_filesz -->
+        <!-- Elf64_Xword p_filesz -->
         <var-decl name='p_filesz' type-id='type-id-1543' visibility='default' filepath='/usr/include/elf.h' line='557' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
-        <!-- Elf64_Xword __anonymous_struct__::p_memsz -->
+        <!-- Elf64_Xword p_memsz -->
         <var-decl name='p_memsz' type-id='type-id-1543' visibility='default' filepath='/usr/include/elf.h' line='558' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
-        <!-- Elf64_Xword __anonymous_struct__::p_align -->
+        <!-- Elf64_Xword p_align -->
         <var-decl name='p_align' type-id='type-id-1543' visibility='default' filepath='/usr/include/elf.h' line='559' column='1'/>
       </data-member>
     </class-decl>
           <!-- union __sanitizer::__sanitizer_kernel_sigaction_t::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h' line='424' column='1' id='type-id-1599'>
             <data-member access='private'>
-              <!-- void (int, void*, void*)* __sanitizer::__sanitizer_kernel_sigaction_t::__anonymous_union__::sigaction -->
+              <!-- void (int, void*, void*)* sigaction -->
               <var-decl name='sigaction' type-id='type-id-1600' visibility='default' filepath='../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h' line='425' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- void (int)* __sanitizer::__sanitizer_kernel_sigaction_t::__anonymous_union__::handler -->
+              <!-- void (int)* handler -->
               <var-decl name='handler' type-id='type-id-758' visibility='default' filepath='../../.././libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h' line='426' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='public' layout-offset-in-bits='0'>
-          <!-- __sanitizer::__sanitizer_kernel_sigaction_t::__anonymous_union__  -->
+          <!-- union {void (int, void*, void*)* sigaction; void (int)* handler;} -->
           <var-decl name='' type-id='type-id-1599' visibility='default'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
         <!-- union __anonymous_struct__::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/usr/include/elf.h' line='646' column='1' id='type-id-1619'>
           <data-member access='private'>
-            <!-- Elf64_Xword __anonymous_struct__::__anonymous_union__::d_val -->
+            <!-- Elf64_Xword d_val -->
             <var-decl name='d_val' type-id='type-id-1543' visibility='default' filepath='/usr/include/elf.h' line='647' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- Elf64_Addr __anonymous_struct__::__anonymous_union__::d_ptr -->
+            <!-- Elf64_Addr d_ptr -->
             <var-decl name='d_ptr' type-id='type-id-1534' visibility='default' filepath='/usr/include/elf.h' line='648' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Elf64_Sxword __anonymous_struct__::d_tag -->
+        <!-- Elf64_Sxword d_tag -->
         <var-decl name='d_tag' type-id='type-id-1620' visibility='default' filepath='/usr/include/elf.h' line='644' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- __anonymous_struct__::__anonymous_union__ __anonymous_struct__::d_un -->
+        <!-- union {Elf64_Xword d_val; Elf64_Addr d_ptr;} d_un -->
         <var-decl name='d_un' type-id='type-id-1619' visibility='default' filepath='/usr/include/elf.h' line='649' column='1'/>
       </data-member>
     </class-decl>
     <!-- union __anonymous_union__ -->
     <union-decl name='__anonymous_union__' size-in-bits='448' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/pthreadtypes.h' line='54' column='1' id='type-id-1631'>
       <data-member access='private'>
-        <!-- char __anonymous_union__::__size[56] -->
+        <!-- char __size[56] -->
         <var-decl name='__size' type-id='type-id-1632' visibility='default' filepath='/usr/include/bits/pthreadtypes.h' line='55' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- long int __anonymous_union__::__align -->
+        <!-- long int __align -->
         <var-decl name='__align' type-id='type-id-293' visibility='default' filepath='/usr/include/bits/pthreadtypes.h' line='56' column='1'/>
       </data-member>
     </union-decl>
         <var-decl name='type' type-id='type-id-1727' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='456' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- __anonymous_union__ demangle_component::u -->
+        <!-- union {struct {const char* s; int len;} s_name; struct {const demangle_operator_info* op;} s_operator; struct {int args; demangle_component* name;} s_extended_operator; struct {demangle_component* length; short int accum; short int sat;} s_fixed; struct {gnu_v3_ctor_kinds kind; demangle_component* name;} s_ctor; struct {gnu_v3_dtor_kinds kind; demangle_component* name;} s_dtor; struct {const demangle_builtin_type_info* type;} s_builtin; struct {const char* string; int len;} s_string; struct {long int number;} s_number; struct {int character;} s_character; struct {demangle_component* left; demangle_component* right;} s_binary; struct {demangle_component* sub; int num;} s_unary_num;} demangle_component::u -->
         <var-decl name='u' type-id='type-id-1728' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='560' column='1'/>
       </data-member>
     </class-decl>
     <!-- union __anonymous_union__ -->
     <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='458' column='1' id='type-id-1728'>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_name -->
+        <!-- struct {const char* s; int len;} s_name -->
         <var-decl name='s_name' type-id='type-id-1729' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='467' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_operator -->
+        <!-- struct {const demangle_operator_info* op;} s_operator -->
         <var-decl name='s_operator' type-id='type-id-1730' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='474' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_extended_operator -->
+        <!-- struct {int args; demangle_component* name;} s_extended_operator -->
         <var-decl name='s_extended_operator' type-id='type-id-1731' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='483' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_fixed -->
+        <!-- struct {demangle_component* length; short int accum; short int sat;} s_fixed -->
         <var-decl name='s_fixed' type-id='type-id-1732' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='494' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_ctor -->
+        <!-- struct {gnu_v3_ctor_kinds kind; demangle_component* name;} s_ctor -->
         <var-decl name='s_ctor' type-id='type-id-1733' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='503' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_dtor -->
+        <!-- struct {gnu_v3_dtor_kinds kind; demangle_component* name;} s_dtor -->
         <var-decl name='s_dtor' type-id='type-id-1734' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='512' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_builtin -->
+        <!-- struct {const demangle_builtin_type_info* type;} s_builtin -->
         <var-decl name='s_builtin' type-id='type-id-1735' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='519' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_string -->
+        <!-- struct {const char* string; int len;} s_string -->
         <var-decl name='s_string' type-id='type-id-1736' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='528' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_number -->
+        <!-- struct {long int number;} s_number -->
         <var-decl name='s_number' type-id='type-id-1737' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='535' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_character -->
+        <!-- struct {int character;} s_character -->
         <var-decl name='s_character' type-id='type-id-1738' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='541' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_binary -->
+        <!-- struct {demangle_component* left; demangle_component* right;} s_binary -->
         <var-decl name='s_binary' type-id='type-id-1739' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='550' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_unary_num -->
+        <!-- struct {demangle_component* sub; int num;} s_unary_num -->
         <var-decl name='s_unary_num' type-id='type-id-1740' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='558' column='1'/>
       </data-member>
     </union-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='461' column='1' id='type-id-1729'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::s -->
+        <!-- const char* s -->
         <var-decl name='s' type-id='type-id-32' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='465' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::len -->
+        <!-- int len -->
         <var-decl name='len' type-id='type-id-13' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='466' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='470' column='1' id='type-id-1730'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const demangle_operator_info* __anonymous_struct__::op -->
+        <!-- const demangle_operator_info* op -->
         <var-decl name='op' type-id='type-id-1741' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='473' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='477' column='1' id='type-id-1731'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::args -->
+        <!-- int args -->
         <var-decl name='args' type-id='type-id-13' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='480' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='482' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='486' column='1' id='type-id-1732'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::length -->
+        <!-- demangle_component* length -->
         <var-decl name='length' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='489' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- short int __anonymous_struct__::accum -->
+        <!-- short int accum -->
         <var-decl name='accum' type-id='type-id-282' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='491' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='80'>
-        <!-- short int __anonymous_struct__::sat -->
+        <!-- short int sat -->
         <var-decl name='sat' type-id='type-id-282' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='493' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='497' column='1' id='type-id-1733'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- gnu_v3_ctor_kinds __anonymous_struct__::kind -->
+        <!-- gnu_v3_ctor_kinds kind -->
         <var-decl name='kind' type-id='type-id-1745' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='500' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='502' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='506' column='1' id='type-id-1734'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- gnu_v3_dtor_kinds __anonymous_struct__::kind -->
+        <!-- gnu_v3_dtor_kinds kind -->
         <var-decl name='kind' type-id='type-id-1746' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='509' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='511' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='515' column='1' id='type-id-1735'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const demangle_builtin_type_info* __anonymous_struct__::type -->
+        <!-- const demangle_builtin_type_info* type -->
         <var-decl name='type' type-id='type-id-1747' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='518' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='522' column='1' id='type-id-1736'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::string -->
+        <!-- const char* string -->
         <var-decl name='string' type-id='type-id-32' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='525' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::len -->
+        <!-- int len -->
         <var-decl name='len' type-id='type-id-13' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='527' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='531' column='1' id='type-id-1737'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int __anonymous_struct__::number -->
+        <!-- long int number -->
         <var-decl name='number' type-id='type-id-293' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='534' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='538' column='1' id='type-id-1738'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::character -->
+        <!-- int character -->
         <var-decl name='character' type-id='type-id-13' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='540' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='544' column='1' id='type-id-1739'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::left -->
+        <!-- demangle_component* left -->
         <var-decl name='left' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='547' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::right -->
+        <!-- demangle_component* right -->
         <var-decl name='right' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='549' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='552' column='1' id='type-id-1740'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::sub -->
+        <!-- demangle_component* sub -->
         <var-decl name='sub' type-id='type-id-1744' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='555' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::num -->
+        <!-- int num -->
         <var-decl name='num' type-id='type-id-13' visibility='default' filepath='../../.././libsanitizer/../include/demangle.h' line='557' column='1'/>
       </data-member>
     </class-decl>
index b064e79..9f032ed 100644 (file)
         <!-- struct hb_unicode_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='203' column='1' id='type-id-89'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- hb_unicode_combining_class_func_t hb_unicode_funcs_t::__anonymous_struct__::combining_class -->
+            <!-- hb_unicode_combining_class_func_t combining_class -->
             <var-decl name='combining_class' type-id='type-id-90' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- hb_unicode_eastasian_width_func_t hb_unicode_funcs_t::__anonymous_struct__::eastasian_width -->
+            <!-- hb_unicode_eastasian_width_func_t eastasian_width -->
             <var-decl name='eastasian_width' type-id='type-id-91' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- hb_unicode_general_category_func_t hb_unicode_funcs_t::__anonymous_struct__::general_category -->
+            <!-- hb_unicode_general_category_func_t general_category -->
             <var-decl name='general_category' type-id='type-id-92' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- hb_unicode_mirroring_func_t hb_unicode_funcs_t::__anonymous_struct__::mirroring -->
+            <!-- hb_unicode_mirroring_func_t mirroring -->
             <var-decl name='mirroring' type-id='type-id-93' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- hb_unicode_script_func_t hb_unicode_funcs_t::__anonymous_struct__::script -->
+            <!-- hb_unicode_script_func_t script -->
             <var-decl name='script' type-id='type-id-94' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- hb_unicode_compose_func_t hb_unicode_funcs_t::__anonymous_struct__::compose -->
+            <!-- hb_unicode_compose_func_t compose -->
             <var-decl name='compose' type-id='type-id-95' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- hb_unicode_decompose_func_t hb_unicode_funcs_t::__anonymous_struct__::decompose -->
+            <!-- hb_unicode_decompose_func_t decompose -->
             <var-decl name='decompose' type-id='type-id-96' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- hb_unicode_decompose_compatibility_func_t hb_unicode_funcs_t::__anonymous_struct__::decompose_compatibility -->
+            <!-- hb_unicode_decompose_compatibility_func_t decompose_compatibility -->
             <var-decl name='decompose_compatibility' type-id='type-id-97' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='205' column='1'/>
           </data-member>
         </class-decl>
         <!-- struct hb_unicode_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='209' column='1' id='type-id-98'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::combining_class -->
+            <!-- void* combining_class -->
             <var-decl name='combining_class' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::eastasian_width -->
+            <!-- void* eastasian_width -->
             <var-decl name='eastasian_width' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::general_category -->
+            <!-- void* general_category -->
             <var-decl name='general_category' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::mirroring -->
+            <!-- void* mirroring -->
             <var-decl name='mirroring' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::script -->
+            <!-- void* script -->
             <var-decl name='script' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::compose -->
+            <!-- void* compose -->
             <var-decl name='compose' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::decompose -->
+            <!-- void* decompose -->
             <var-decl name='decompose' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- void* hb_unicode_funcs_t::__anonymous_struct__::decompose_compatibility -->
+            <!-- void* decompose_compatibility -->
             <var-decl name='decompose_compatibility' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='211' column='1'/>
           </data-member>
         </class-decl>
         <!-- struct hb_unicode_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='215' column='1' id='type-id-99'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::combining_class -->
+            <!-- hb_destroy_func_t combining_class -->
             <var-decl name='combining_class' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::eastasian_width -->
+            <!-- hb_destroy_func_t eastasian_width -->
             <var-decl name='eastasian_width' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::general_category -->
+            <!-- hb_destroy_func_t general_category -->
             <var-decl name='general_category' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::mirroring -->
+            <!-- hb_destroy_func_t mirroring -->
             <var-decl name='mirroring' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::script -->
+            <!-- hb_destroy_func_t script -->
             <var-decl name='script' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::compose -->
+            <!-- hb_destroy_func_t compose -->
             <var-decl name='compose' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::decompose -->
+            <!-- hb_destroy_func_t decompose -->
             <var-decl name='decompose' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- hb_destroy_func_t hb_unicode_funcs_t::__anonymous_struct__::decompose_compatibility -->
+            <!-- hb_destroy_func_t decompose_compatibility -->
             <var-decl name='decompose_compatibility' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='217' column='1'/>
           </data-member>
         </class-decl>
         <var-decl name='immutable' type-id='type-id-7' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
-        <!-- hb_unicode_funcs_t::__anonymous_struct__ hb_unicode_funcs_t::func -->
+        <!-- struct {hb_unicode_combining_class_func_t combining_class; hb_unicode_eastasian_width_func_t eastasian_width; hb_unicode_general_category_func_t general_category; hb_unicode_mirroring_func_t mirroring; hb_unicode_script_func_t script; hb_unicode_compose_func_t compose; hb_unicode_decompose_func_t decompose; hb_unicode_decompose_compatibility_func_t decompose_compatibility;} hb_unicode_funcs_t::func -->
         <var-decl name='func' type-id='type-id-89' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='207' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1536'>
-        <!-- hb_unicode_funcs_t::__anonymous_struct__ hb_unicode_funcs_t::user_data -->
+        <!-- struct {void* combining_class; void* eastasian_width; void* general_category; void* mirroring; void* script; void* compose; void* decompose; void* decompose_compatibility;} hb_unicode_funcs_t::user_data -->
         <var-decl name='user_data' type-id='type-id-98' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='213' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='2048'>
-        <!-- hb_unicode_funcs_t::__anonymous_struct__ hb_unicode_funcs_t::destroy -->
+        <!-- struct {hb_destroy_func_t combining_class; hb_destroy_func_t eastasian_width; hb_destroy_func_t general_category; hb_destroy_func_t mirroring; hb_destroy_func_t script; hb_destroy_func_t compose; hb_destroy_func_t decompose; hb_destroy_func_t decompose_compatibility;} hb_unicode_funcs_t::destroy -->
         <var-decl name='destroy' type-id='type-id-99' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-unicode-private.hh' line='219' column='1'/>
       </data-member>
       <member-function access='public'>
         <!-- struct hb_font_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='704' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='66' column='1' id='type-id-181'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- hb_font_get_glyph_func_t hb_font_funcs_t::__anonymous_struct__::glyph -->
+            <!-- hb_font_get_glyph_func_t glyph -->
             <var-decl name='glyph' type-id='type-id-182' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- hb_font_get_glyph_h_advance_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_advance -->
+            <!-- hb_font_get_glyph_h_advance_func_t glyph_h_advance -->
             <var-decl name='glyph_h_advance' type-id='type-id-183' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- hb_font_get_glyph_v_advance_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_advance -->
+            <!-- hb_font_get_glyph_v_advance_func_t glyph_v_advance -->
             <var-decl name='glyph_v_advance' type-id='type-id-184' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- hb_font_get_glyph_h_origin_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_origin -->
+            <!-- hb_font_get_glyph_h_origin_func_t glyph_h_origin -->
             <var-decl name='glyph_h_origin' type-id='type-id-185' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- hb_font_get_glyph_v_origin_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_origin -->
+            <!-- hb_font_get_glyph_v_origin_func_t glyph_v_origin -->
             <var-decl name='glyph_v_origin' type-id='type-id-186' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- hb_font_get_glyph_h_kerning_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_kerning -->
+            <!-- hb_font_get_glyph_h_kerning_func_t glyph_h_kerning -->
             <var-decl name='glyph_h_kerning' type-id='type-id-187' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- hb_font_get_glyph_v_kerning_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_kerning -->
+            <!-- hb_font_get_glyph_v_kerning_func_t glyph_v_kerning -->
             <var-decl name='glyph_v_kerning' type-id='type-id-188' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- hb_font_get_glyph_extents_func_t hb_font_funcs_t::__anonymous_struct__::glyph_extents -->
+            <!-- hb_font_get_glyph_extents_func_t glyph_extents -->
             <var-decl name='glyph_extents' type-id='type-id-189' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='512'>
-            <!-- hb_font_get_glyph_contour_point_func_t hb_font_funcs_t::__anonymous_struct__::glyph_contour_point -->
+            <!-- hb_font_get_glyph_contour_point_func_t glyph_contour_point -->
             <var-decl name='glyph_contour_point' type-id='type-id-190' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='576'>
-            <!-- hb_font_get_glyph_name_func_t hb_font_funcs_t::__anonymous_struct__::glyph_name -->
+            <!-- hb_font_get_glyph_name_func_t glyph_name -->
             <var-decl name='glyph_name' type-id='type-id-191' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='640'>
-            <!-- hb_font_get_glyph_from_name_func_t hb_font_funcs_t::__anonymous_struct__::glyph_from_name -->
+            <!-- hb_font_get_glyph_from_name_func_t glyph_from_name -->
             <var-decl name='glyph_from_name' type-id='type-id-192' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='68' column='1'/>
           </data-member>
         </class-decl>
         <!-- struct hb_font_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='704' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='72' column='1' id='type-id-193'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph -->
+            <!-- void* glyph -->
             <var-decl name='glyph' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_h_advance -->
+            <!-- void* glyph_h_advance -->
             <var-decl name='glyph_h_advance' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_v_advance -->
+            <!-- void* glyph_v_advance -->
             <var-decl name='glyph_v_advance' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_h_origin -->
+            <!-- void* glyph_h_origin -->
             <var-decl name='glyph_h_origin' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_v_origin -->
+            <!-- void* glyph_v_origin -->
             <var-decl name='glyph_v_origin' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_h_kerning -->
+            <!-- void* glyph_h_kerning -->
             <var-decl name='glyph_h_kerning' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_v_kerning -->
+            <!-- void* glyph_v_kerning -->
             <var-decl name='glyph_v_kerning' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_extents -->
+            <!-- void* glyph_extents -->
             <var-decl name='glyph_extents' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='512'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_contour_point -->
+            <!-- void* glyph_contour_point -->
             <var-decl name='glyph_contour_point' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='576'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_name -->
+            <!-- void* glyph_name -->
             <var-decl name='glyph_name' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='640'>
-            <!-- void* hb_font_funcs_t::__anonymous_struct__::glyph_from_name -->
+            <!-- void* glyph_from_name -->
             <var-decl name='glyph_from_name' type-id='type-id-20' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='74' column='1'/>
           </data-member>
         </class-decl>
         <!-- struct hb_font_funcs_t::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='704' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='78' column='1' id='type-id-194'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph -->
+            <!-- hb_destroy_func_t glyph -->
             <var-decl name='glyph' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_advance -->
+            <!-- hb_destroy_func_t glyph_h_advance -->
             <var-decl name='glyph_h_advance' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_advance -->
+            <!-- hb_destroy_func_t glyph_v_advance -->
             <var-decl name='glyph_v_advance' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_origin -->
+            <!-- hb_destroy_func_t glyph_h_origin -->
             <var-decl name='glyph_h_origin' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='256'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_origin -->
+            <!-- hb_destroy_func_t glyph_v_origin -->
             <var-decl name='glyph_v_origin' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='320'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_h_kerning -->
+            <!-- hb_destroy_func_t glyph_h_kerning -->
             <var-decl name='glyph_h_kerning' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='384'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_v_kerning -->
+            <!-- hb_destroy_func_t glyph_v_kerning -->
             <var-decl name='glyph_v_kerning' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='448'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_extents -->
+            <!-- hb_destroy_func_t glyph_extents -->
             <var-decl name='glyph_extents' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='512'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_contour_point -->
+            <!-- hb_destroy_func_t glyph_contour_point -->
             <var-decl name='glyph_contour_point' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='576'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_name -->
+            <!-- hb_destroy_func_t glyph_name -->
             <var-decl name='glyph_name' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='640'>
-            <!-- hb_destroy_func_t hb_font_funcs_t::__anonymous_struct__::glyph_from_name -->
+            <!-- hb_destroy_func_t glyph_from_name -->
             <var-decl name='glyph_from_name' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='80' column='1'/>
           </data-member>
         </class-decl>
         <var-decl name='immutable' type-id='type-id-26' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='62' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
-        <!-- hb_font_funcs_t::__anonymous_struct__ hb_font_funcs_t::get -->
+        <!-- struct {hb_font_get_glyph_func_t glyph; hb_font_get_glyph_h_advance_func_t glyph_h_advance; hb_font_get_glyph_v_advance_func_t glyph_v_advance; hb_font_get_glyph_h_origin_func_t glyph_h_origin; hb_font_get_glyph_v_origin_func_t glyph_v_origin; hb_font_get_glyph_h_kerning_func_t glyph_h_kerning; hb_font_get_glyph_v_kerning_func_t glyph_v_kerning; hb_font_get_glyph_extents_func_t glyph_extents; hb_font_get_glyph_contour_point_func_t glyph_contour_point; hb_font_get_glyph_name_func_t glyph_name; hb_font_get_glyph_from_name_func_t glyph_from_name;} hb_font_funcs_t::get -->
         <var-decl name='get' type-id='type-id-181' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1664'>
-        <!-- hb_font_funcs_t::__anonymous_struct__ hb_font_funcs_t::user_data -->
+        <!-- struct {void* glyph; void* glyph_h_advance; void* glyph_v_advance; void* glyph_h_origin; void* glyph_v_origin; void* glyph_h_kerning; void* glyph_v_kerning; void* glyph_extents; void* glyph_contour_point; void* glyph_name; void* glyph_from_name;} hb_font_funcs_t::user_data -->
         <var-decl name='user_data' type-id='type-id-193' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='76' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='2368'>
-        <!-- hb_font_funcs_t::__anonymous_struct__ hb_font_funcs_t::destroy -->
+        <!-- struct {hb_destroy_func_t glyph; hb_destroy_func_t glyph_h_advance; hb_destroy_func_t glyph_v_advance; hb_destroy_func_t glyph_h_origin; hb_destroy_func_t glyph_v_origin; hb_destroy_func_t glyph_h_kerning; hb_destroy_func_t glyph_v_kerning; hb_destroy_func_t glyph_extents; hb_destroy_func_t glyph_contour_point; hb_destroy_func_t glyph_name; hb_destroy_func_t glyph_from_name;} hb_font_funcs_t::destroy -->
         <var-decl name='destroy' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-font-private.hh' line='82' column='1'/>
       </data-member>
       <member-function access='public'>
               <!-- struct OT::TTCHeader::__anonymous_union__::__anonymous_struct__ -->
               <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='184' column='1' id='type-id-535'>
                 <data-member access='public' layout-offset-in-bits='0'>
-                  <!-- OT::Tag OT::TTCHeader::__anonymous_union__::__anonymous_struct__::ttcTag -->
+                  <!-- OT::Tag ttcTag -->
                   <var-decl name='ttcTag' type-id='type-id-443' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='185' column='1'/>
                 </data-member>
                 <data-member access='public' layout-offset-in-bits='32'>
-                  <!-- OT::FixedVersion OT::TTCHeader::__anonymous_union__::__anonymous_struct__::version -->
+                  <!-- OT::FixedVersion version -->
                   <var-decl name='version' type-id='type-id-496' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='186' column='1'/>
                 </data-member>
               </class-decl>
             </member-type>
             <data-member access='private'>
-              <!-- OT::TTCHeader::__anonymous_union__::__anonymous_struct__ OT::TTCHeader::__anonymous_union__::header -->
+              <!-- struct {OT::Tag ttcTag; OT::FixedVersion version;} header -->
               <var-decl name='header' type-id='type-id-535' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='188' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::TTCHeaderVersion1 OT::TTCHeader::__anonymous_union__::version1 -->
+              <!-- OT::TTCHeaderVersion1 version1 -->
               <var-decl name='version1' type-id='type-id-528' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='189' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::TTCHeader::__anonymous_union__ OT::TTCHeader::u -->
+          <!-- union {struct {OT::Tag ttcTag; OT::FixedVersion version;} header; OT::TTCHeaderVersion1 version1;} OT::TTCHeader::u -->
           <var-decl name='u' type-id='type-id-534' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='190' column='1'/>
         </data-member>
         <member-function access='private'>
           <!-- union OT::OpenTypeFontFile::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='224' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='250' column='1' id='type-id-543'>
             <data-member access='private'>
-              <!-- OT::Tag OT::OpenTypeFontFile::__anonymous_union__::tag -->
+              <!-- OT::Tag tag -->
               <var-decl name='tag' type-id='type-id-443' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='251' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::OpenTypeFontFace OT::OpenTypeFontFile::__anonymous_union__::fontFace -->
+              <!-- OT::OpenTypeFontFace fontFace -->
               <var-decl name='fontFace' type-id='type-id-532' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='252' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::TTCHeader OT::OpenTypeFontFile::__anonymous_union__::ttcHeader -->
+              <!-- OT::TTCHeader ttcHeader -->
               <var-decl name='ttcHeader' type-id='type-id-533' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='253' column='1'/>
             </data-member>
           </union-decl>
           <var-decl name='Typ1Tag' type-id='type-id-495' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='206' column='1'/>
         </data-member>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::OpenTypeFontFile::__anonymous_union__ OT::OpenTypeFontFile::u -->
+          <!-- union {OT::Tag tag; OT::OpenTypeFontFace fontFace; OT::TTCHeader ttcHeader;} OT::OpenTypeFontFile::u -->
           <var-decl name='u' type-id='type-id-543' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-open-file-private.hh' line='254' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
               <!-- union OT::Coverage::Iter::__anonymous_union__ -->
               <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='913' column='1' id='type-id-834'>
                 <data-member access='private'>
-                  <!-- OT::CoverageFormat1::Iter OT::Coverage::Iter::__anonymous_union__::format1 -->
+                  <!-- OT::CoverageFormat1::Iter format1 -->
                   <var-decl name='format1' type-id='type-id-835' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='914' column='1'/>
                 </data-member>
                 <data-member access='private'>
-                  <!-- OT::CoverageFormat2::Iter OT::Coverage::Iter::__anonymous_union__::format2 -->
+                  <!-- OT::CoverageFormat2::Iter format2 -->
                   <var-decl name='format2' type-id='type-id-836' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='915' column='1'/>
                 </data-member>
               </union-decl>
               <var-decl name='format' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='912' column='1'/>
             </data-member>
             <data-member access='private' layout-offset-in-bits='64'>
-              <!-- OT::Coverage::Iter::__anonymous_union__ OT::Coverage::Iter::u -->
+              <!-- union {OT::CoverageFormat1::Iter format1; OT::CoverageFormat2::Iter format2;} OT::Coverage::Iter::u -->
               <var-decl name='u' type-id='type-id-834' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='916' column='1'/>
             </data-member>
             <member-function access='public' constructor='yes'>
           <!-- union OT::Coverage::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='80' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='920' column='1' id='type-id-839'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::Coverage::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='921' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CoverageFormat1 OT::Coverage::__anonymous_union__::format1 -->
+              <!-- OT::CoverageFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-578' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='922' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CoverageFormat2 OT::Coverage::__anonymous_union__::format2 -->
+              <!-- OT::CoverageFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-579' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='923' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::Coverage::__anonymous_union__ OT::Coverage::u -->
+          <!-- union {OT::USHORT format; OT::CoverageFormat1 format1; OT::CoverageFormat2 format2;} OT::Coverage::u -->
           <var-decl name='u' type-id='type-id-839' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='924' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
               <!-- struct OT::SubstLookupSubTable::__anonymous_union__::__anonymous_struct__ -->
               <class-decl name='__anonymous_struct__' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1136' column='1' id='type-id-950'>
                 <data-member access='public' layout-offset-in-bits='0'>
-                  <!-- OT::USHORT OT::SubstLookupSubTable::__anonymous_union__::__anonymous_struct__::sub_format -->
+                  <!-- OT::USHORT sub_format -->
                   <var-decl name='sub_format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1137' column='1'/>
                 </data-member>
               </class-decl>
             </member-type>
             <data-member access='private'>
-              <!-- OT::SubstLookupSubTable::__anonymous_union__::__anonymous_struct__ OT::SubstLookupSubTable::__anonymous_union__::header -->
+              <!-- struct {OT::USHORT sub_format;} header -->
               <var-decl name='header' type-id='type-id-950' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1138' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SingleSubst OT::SubstLookupSubTable::__anonymous_union__::single -->
+              <!-- OT::SingleSubst single -->
               <var-decl name='single' type-id='type-id-951' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1139' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MultipleSubst OT::SubstLookupSubTable::__anonymous_union__::multiple -->
+              <!-- OT::MultipleSubst multiple -->
               <var-decl name='multiple' type-id='type-id-952' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1140' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::AlternateSubst OT::SubstLookupSubTable::__anonymous_union__::alternate -->
+              <!-- OT::AlternateSubst alternate -->
               <var-decl name='alternate' type-id='type-id-953' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1141' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::LigatureSubst OT::SubstLookupSubTable::__anonymous_union__::ligature -->
+              <!-- OT::LigatureSubst ligature -->
               <var-decl name='ligature' type-id='type-id-954' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1142' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ContextSubst OT::SubstLookupSubTable::__anonymous_union__::context -->
+              <!-- OT::ContextSubst context -->
               <var-decl name='context' type-id='type-id-955' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1143' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ChainContextSubst OT::SubstLookupSubTable::__anonymous_union__::chainContext -->
+              <!-- OT::ChainContextSubst chainContext -->
               <var-decl name='chainContext' type-id='type-id-956' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1144' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ExtensionSubst OT::SubstLookupSubTable::__anonymous_union__::extension -->
+              <!-- OT::ExtensionSubst extension -->
               <var-decl name='extension' type-id='type-id-957' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1145' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ReverseChainSingleSubst OT::SubstLookupSubTable::__anonymous_union__::reverseChainContextSingle -->
+              <!-- OT::ReverseChainSingleSubst reverseChainContextSingle -->
               <var-decl name='reverseChainContextSingle' type-id='type-id-958' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1146' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::SubstLookupSubTable::__anonymous_union__ OT::SubstLookupSubTable::u -->
+          <!-- union {struct {OT::USHORT sub_format;} header; OT::SingleSubst single; OT::MultipleSubst multiple; OT::AlternateSubst alternate; OT::LigatureSubst ligature; OT::ContextSubst context; OT::ChainContextSubst chainContext; OT::ExtensionSubst extension; OT::ReverseChainSingleSubst reverseChainContextSingle;} OT::SubstLookupSubTable::u -->
           <var-decl name='u' type-id='type-id-949' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1147' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::AlternateSubst::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='593' column='1' id='type-id-1045'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::AlternateSubst::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='594' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::AlternateSubstFormat1 OT::AlternateSubst::__anonymous_union__::format1 -->
+              <!-- OT::AlternateSubstFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1046' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='595' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::AlternateSubst::__anonymous_union__ OT::AlternateSubst::u -->
+          <!-- union {OT::USHORT format; OT::AlternateSubstFormat1 format1;} OT::AlternateSubst::u -->
           <var-decl name='u' type-id='type-id-1045' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='596' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::LigatureSubst::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='909' column='1' id='type-id-1248'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::LigatureSubst::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='910' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::LigatureSubstFormat1 OT::LigatureSubst::__anonymous_union__::format1 -->
+              <!-- OT::LigatureSubstFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-583' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='911' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::LigatureSubst::__anonymous_union__ OT::LigatureSubst::u -->
+          <!-- union {OT::USHORT format; OT::LigatureSubstFormat1 format1;} OT::LigatureSubst::u -->
           <var-decl name='u' type-id='type-id-1248' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='912' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::MultipleSubst::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='442' column='1' id='type-id-1255'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::MultipleSubst::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='443' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MultipleSubstFormat1 OT::MultipleSubst::__anonymous_union__::format1 -->
+              <!-- OT::MultipleSubstFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1256' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='444' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::MultipleSubst::__anonymous_union__ OT::MultipleSubst::u -->
+          <!-- union {OT::USHORT format; OT::MultipleSubstFormat1 format1;} OT::MultipleSubst::u -->
           <var-decl name='u' type-id='type-id-1255' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='445' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::ReverseChainSingleSubst::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1073' column='1' id='type-id-1274'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::ReverseChainSingleSubst::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1074' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ReverseChainSingleSubstFormat1 OT::ReverseChainSingleSubst::__anonymous_union__::format1 -->
+              <!-- OT::ReverseChainSingleSubstFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1275' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1075' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::ReverseChainSingleSubst::__anonymous_union__ OT::ReverseChainSingleSubst::u -->
+          <!-- union {OT::USHORT format; OT::ReverseChainSingleSubstFormat1 format1;} OT::ReverseChainSingleSubst::u -->
           <var-decl name='u' type-id='type-id-1274' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='1076' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::SingleSubst::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='244' column='1' id='type-id-1280'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::SingleSubst::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='245' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SingleSubstFormat1 OT::SingleSubst::__anonymous_union__::format1 -->
+              <!-- OT::SingleSubstFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-624' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='246' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SingleSubstFormat2 OT::SingleSubst::__anonymous_union__::format2 -->
+              <!-- OT::SingleSubstFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-625' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='247' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::SingleSubst::__anonymous_union__ OT::SingleSubst::u -->
+          <!-- union {OT::USHORT format; OT::SingleSubstFormat1 format1; OT::SingleSubstFormat2 format2;} OT::SingleSubst::u -->
           <var-decl name='u' type-id='type-id-1280' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsub-table.hh' line='248' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::Anchor::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='80' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='332' column='1' id='type-id-1352'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::Anchor::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='333' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::AnchorFormat1 OT::Anchor::__anonymous_union__::format1 -->
+              <!-- OT::AnchorFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-746' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='334' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::AnchorFormat2 OT::Anchor::__anonymous_union__::format2 -->
+              <!-- OT::AnchorFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-747' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='335' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::AnchorFormat3 OT::Anchor::__anonymous_union__::format3 -->
+              <!-- OT::AnchorFormat3 format3 -->
               <var-decl name='format3' type-id='type-id-748' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='336' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::Anchor::__anonymous_union__ OT::Anchor::u -->
+          <!-- union {OT::USHORT format; OT::AnchorFormat1 format1; OT::AnchorFormat2 format2; OT::AnchorFormat3 format3;} OT::Anchor::u -->
           <var-decl name='u' type-id='type-id-1352' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='337' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::CaretValue::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='48' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='193' column='1' id='type-id-1357'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::CaretValue::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='194' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CaretValueFormat1 OT::CaretValue::__anonymous_union__::format1 -->
+              <!-- OT::CaretValueFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-782' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='195' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CaretValueFormat2 OT::CaretValue::__anonymous_union__::format2 -->
+              <!-- OT::CaretValueFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-783' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='196' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CaretValueFormat3 OT::CaretValue::__anonymous_union__::format3 -->
+              <!-- OT::CaretValueFormat3 format3 -->
               <var-decl name='format3' type-id='type-id-784' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='197' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::CaretValue::__anonymous_union__ OT::CaretValue::u -->
+          <!-- union {OT::USHORT format; OT::CaretValueFormat1 format1; OT::CaretValueFormat2 format2; OT::CaretValueFormat3 format3;} OT::CaretValue::u -->
           <var-decl name='u' type-id='type-id-1357' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='198' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::ChainContext::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='160' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2167' column='1' id='type-id-1360'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::ChainContext::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2168' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ChainContextFormat1 OT::ChainContext::__anonymous_union__::format1 -->
+              <!-- OT::ChainContextFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1361' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2169' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ChainContextFormat2 OT::ChainContext::__anonymous_union__::format2 -->
+              <!-- OT::ChainContextFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-1362' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2170' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ChainContextFormat3 OT::ChainContext::__anonymous_union__::format3 -->
+              <!-- OT::ChainContextFormat3 format3 -->
               <var-decl name='format3' type-id='type-id-1363' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2171' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::ChainContext::__anonymous_union__ OT::ChainContext::u -->
+          <!-- union {OT::USHORT format; OT::ChainContextFormat1 format1; OT::ChainContextFormat2 format2; OT::ChainContextFormat3 format3;} OT::ChainContext::u -->
           <var-decl name='u' type-id='type-id-1360' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2172' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::ClassDef::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='80' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='1086' column='1' id='type-id-1374'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::ClassDef::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='1087' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ClassDefFormat1 OT::ClassDef::__anonymous_union__::format1 -->
+              <!-- OT::ClassDefFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-785' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='1088' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ClassDefFormat2 OT::ClassDef::__anonymous_union__::format2 -->
+              <!-- OT::ClassDefFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-1375' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='1089' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::ClassDef::__anonymous_union__ OT::ClassDef::u -->
+          <!-- union {OT::USHORT format; OT::ClassDefFormat1 format1; OT::ClassDefFormat2 format2;} OT::ClassDef::u -->
           <var-decl name='u' type-id='type-id-1374' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='1090' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::CmapSubtable::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='2096' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='437' column='1' id='type-id-1378'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::CmapSubtable::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='438' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat0 OT::CmapSubtable::__anonymous_union__::format0 -->
+              <!-- OT::CmapSubtableFormat0 format0 -->
               <var-decl name='format0' type-id='type-id-786' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='439' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat4 OT::CmapSubtable::__anonymous_union__::format4 -->
+              <!-- OT::CmapSubtableFormat4 format4 -->
               <var-decl name='format4' type-id='type-id-788' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='440' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat6 OT::CmapSubtable::__anonymous_union__::format6 -->
+              <!-- OT::CmapSubtableFormat6 format6 -->
               <var-decl name='format6' type-id='type-id-1379' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='441' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat10 OT::CmapSubtable::__anonymous_union__::format10 -->
+              <!-- OT::CmapSubtableFormat10 format10 -->
               <var-decl name='format10' type-id='type-id-1380' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='442' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat12 OT::CmapSubtable::__anonymous_union__::format12 -->
+              <!-- OT::CmapSubtableFormat12 format12 -->
               <var-decl name='format12' type-id='type-id-1381' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='443' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat13 OT::CmapSubtable::__anonymous_union__::format13 -->
+              <!-- OT::CmapSubtableFormat13 format13 -->
               <var-decl name='format13' type-id='type-id-1382' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='444' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CmapSubtableFormat14 OT::CmapSubtable::__anonymous_union__::format14 -->
+              <!-- OT::CmapSubtableFormat14 format14 -->
               <var-decl name='format14' type-id='type-id-787' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='445' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::CmapSubtable::__anonymous_union__ OT::CmapSubtable::u -->
+          <!-- union {OT::USHORT format; OT::CmapSubtableFormat0 format0; OT::CmapSubtableFormat4 format4; OT::CmapSubtableFormat6 format6; OT::CmapSubtableFormat10 format10; OT::CmapSubtableFormat12 format12; OT::CmapSubtableFormat13 format13; OT::CmapSubtableFormat14 format14;} OT::CmapSubtable::u -->
           <var-decl name='u' type-id='type-id-1378' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-cmap-table.hh' line='446' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::Context::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1549' column='1' id='type-id-1384'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::Context::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1550' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ContextFormat1 OT::Context::__anonymous_union__::format1 -->
+              <!-- OT::ContextFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1385' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1551' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ContextFormat2 OT::Context::__anonymous_union__::format2 -->
+              <!-- OT::ContextFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-1386' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1552' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ContextFormat3 OT::Context::__anonymous_union__::format3 -->
+              <!-- OT::ContextFormat3 format3 -->
               <var-decl name='format3' type-id='type-id-793' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1553' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::Context::__anonymous_union__ OT::Context::u -->
+          <!-- union {OT::USHORT format; OT::ContextFormat1 format1; OT::ContextFormat2 format2; OT::ContextFormat3 format3;} OT::Context::u -->
           <var-decl name='u' type-id='type-id-1384' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='1554' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::Extension<OT::ExtensionSubst>::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2247' column='1' id='type-id-1389'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::Extension<OT::ExtensionSubst>::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2248' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ExtensionFormat1 OT::Extension<OT::ExtensionSubst>::__anonymous_union__::format1 -->
+              <!-- OT::ExtensionFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-796' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2249' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::Extension<OT::ExtensionSubst>::__anonymous_union__ OT::Extension<OT::ExtensionSubst>::u -->
+          <!-- union {OT::USHORT format; OT::ExtensionFormat1 format1;} OT::Extension<OT::ExtensionSubst>::u -->
           <var-decl name='u' type-id='type-id-1389' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2250' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::FeatureParams::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='136' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='466' column='1' id='type-id-1392'>
             <data-member access='private'>
-              <!-- OT::FeatureParamsSize OT::FeatureParams::__anonymous_union__::size -->
+              <!-- OT::FeatureParamsSize size -->
               <var-decl name='size' type-id='type-id-799' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='467' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::FeatureParamsStylisticSet OT::FeatureParams::__anonymous_union__::stylisticSet -->
+              <!-- OT::FeatureParamsStylisticSet stylisticSet -->
               <var-decl name='stylisticSet' type-id='type-id-800' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='468' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::FeatureParamsCharacterVariants OT::FeatureParams::__anonymous_union__::characterVariants -->
+              <!-- OT::FeatureParamsCharacterVariants characterVariants -->
               <var-decl name='characterVariants' type-id='type-id-798' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='469' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='private' layout-offset-in-bits='0'>
-          <!-- OT::FeatureParams::__anonymous_union__ OT::FeatureParams::u -->
+          <!-- union {OT::FeatureParamsSize size; OT::FeatureParamsStylisticSet stylisticSet; OT::FeatureParamsCharacterVariants characterVariants;} OT::FeatureParams::u -->
           <var-decl name='u' type-id='type-id-1392' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-common-private.hh' line='470' column='1'/>
         </data-member>
         <data-member access='private' static='yes'>
           <!-- union OT::MarkGlyphSets::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='312' column='1' id='type-id-1405'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::MarkGlyphSets::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='313' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkGlyphSetsFormat1 OT::MarkGlyphSets::__anonymous_union__::format1 -->
+              <!-- OT::MarkGlyphSetsFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1406' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='314' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::MarkGlyphSets::__anonymous_union__ OT::MarkGlyphSets::u -->
+          <!-- union {OT::USHORT format; OT::MarkGlyphSetsFormat1 format1;} OT::MarkGlyphSets::u -->
           <var-decl name='u' type-id='type-id-1405' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gdef-table.hh' line='315' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
               <!-- struct OT::PosLookupSubTable::__anonymous_union__::__anonymous_struct__ -->
               <class-decl name='__anonymous_struct__' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1425' column='1' id='type-id-1428'>
                 <data-member access='public' layout-offset-in-bits='0'>
-                  <!-- OT::USHORT OT::PosLookupSubTable::__anonymous_union__::__anonymous_struct__::sub_format -->
+                  <!-- OT::USHORT sub_format -->
                   <var-decl name='sub_format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1426' column='1'/>
                 </data-member>
               </class-decl>
             </member-type>
             <data-member access='private'>
-              <!-- OT::PosLookupSubTable::__anonymous_union__::__anonymous_struct__ OT::PosLookupSubTable::__anonymous_union__::header -->
+              <!-- struct {OT::USHORT sub_format;} header -->
               <var-decl name='header' type-id='type-id-1428' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1427' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SinglePos OT::PosLookupSubTable::__anonymous_union__::single -->
+              <!-- OT::SinglePos single -->
               <var-decl name='single' type-id='type-id-1429' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1428' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::PairPos OT::PosLookupSubTable::__anonymous_union__::pair -->
+              <!-- OT::PairPos pair -->
               <var-decl name='pair' type-id='type-id-1430' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1429' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CursivePos OT::PosLookupSubTable::__anonymous_union__::cursive -->
+              <!-- OT::CursivePos cursive -->
               <var-decl name='cursive' type-id='type-id-1431' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1430' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkBasePos OT::PosLookupSubTable::__anonymous_union__::markBase -->
+              <!-- OT::MarkBasePos markBase -->
               <var-decl name='markBase' type-id='type-id-1432' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1431' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkLigPos OT::PosLookupSubTable::__anonymous_union__::markLig -->
+              <!-- OT::MarkLigPos markLig -->
               <var-decl name='markLig' type-id='type-id-1433' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1432' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkMarkPos OT::PosLookupSubTable::__anonymous_union__::markMark -->
+              <!-- OT::MarkMarkPos markMark -->
               <var-decl name='markMark' type-id='type-id-1434' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1433' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ContextPos OT::PosLookupSubTable::__anonymous_union__::context -->
+              <!-- OT::ContextPos context -->
               <var-decl name='context' type-id='type-id-1435' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1434' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ChainContextPos OT::PosLookupSubTable::__anonymous_union__::chainContext -->
+              <!-- OT::ChainContextPos chainContext -->
               <var-decl name='chainContext' type-id='type-id-1436' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1435' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::ExtensionPos OT::PosLookupSubTable::__anonymous_union__::extension -->
+              <!-- OT::ExtensionPos extension -->
               <var-decl name='extension' type-id='type-id-1437' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1436' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::PosLookupSubTable::__anonymous_union__ OT::PosLookupSubTable::u -->
+          <!-- union {struct {OT::USHORT sub_format;} header; OT::SinglePos single; OT::PairPos pair; OT::CursivePos cursive; OT::MarkBasePos markBase; OT::MarkLigPos markLig; OT::MarkMarkPos markMark; OT::ContextPos context; OT::ChainContextPos chainContext; OT::ExtensionPos extension;} OT::PosLookupSubTable::u -->
           <var-decl name='u' type-id='type-id-1427' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1437' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- union OT::CursivePos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='80' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1009' column='1' id='type-id-1587'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::CursivePos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1010' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::CursivePosFormat1 OT::CursivePos::__anonymous_union__::format1 -->
+              <!-- OT::CursivePosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-1588' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1011' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::CursivePos::__anonymous_union__ OT::CursivePos::u -->
+          <!-- union {OT::USHORT format; OT::CursivePosFormat1 format1;} OT::CursivePos::u -->
           <var-decl name='u' type-id='type-id-1587' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1012' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::MarkBasePos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1108' column='1' id='type-id-1596'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::MarkBasePos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1109' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkBasePosFormat1 OT::MarkBasePos::__anonymous_union__::format1 -->
+              <!-- OT::MarkBasePosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-802' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1110' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::MarkBasePos::__anonymous_union__ OT::MarkBasePos::u -->
+          <!-- union {OT::USHORT format; OT::MarkBasePosFormat1 format1;} OT::MarkBasePos::u -->
           <var-decl name='u' type-id='type-id-1596' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1111' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::MarkLigPos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1229' column='1' id='type-id-1601'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::MarkLigPos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1230' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkLigPosFormat1 OT::MarkLigPos::__anonymous_union__::format1 -->
+              <!-- OT::MarkLigPosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-803' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1231' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::MarkLigPos::__anonymous_union__ OT::MarkLigPos::u -->
+          <!-- union {OT::USHORT format; OT::MarkLigPosFormat1 format1;} OT::MarkLigPos::u -->
           <var-decl name='u' type-id='type-id-1601' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1232' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::MarkMarkPos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1348' column='1' id='type-id-1604'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::MarkMarkPos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1349' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::MarkMarkPosFormat1 OT::MarkMarkPos::__anonymous_union__::format1 -->
+              <!-- OT::MarkMarkPosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-804' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1350' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::MarkMarkPos::__anonymous_union__ OT::MarkMarkPos::u -->
+          <!-- union {OT::USHORT format; OT::MarkMarkPosFormat1 format1;} OT::MarkMarkPos::u -->
           <var-decl name='u' type-id='type-id-1604' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='1351' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::PairPos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='144' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='844' column='1' id='type-id-1607'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::PairPos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='845' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::PairPosFormat1 OT::PairPos::__anonymous_union__::format1 -->
+              <!-- OT::PairPosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-806' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='846' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::PairPosFormat2 OT::PairPos::__anonymous_union__::format2 -->
+              <!-- OT::PairPosFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-807' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='847' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::PairPos::__anonymous_union__ OT::PairPos::u -->
+          <!-- union {OT::USHORT format; OT::PairPosFormat1 format1; OT::PairPosFormat2 format2;} OT::PairPos::u -->
           <var-decl name='u' type-id='type-id-1607' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='848' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- union OT::SinglePos::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='80' is-anonymous='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='552' column='1' id='type-id-1617'>
             <data-member access='private'>
-              <!-- OT::USHORT OT::SinglePos::__anonymous_union__::format -->
+              <!-- OT::USHORT format -->
               <var-decl name='format' type-id='type-id-444' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='553' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SinglePosFormat1 OT::SinglePos::__anonymous_union__::format1 -->
+              <!-- OT::SinglePosFormat1 format1 -->
               <var-decl name='format1' type-id='type-id-812' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='554' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- OT::SinglePosFormat2 OT::SinglePos::__anonymous_union__::format2 -->
+              <!-- OT::SinglePosFormat2 format2 -->
               <var-decl name='format2' type-id='type-id-813' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='555' column='1'/>
             </data-member>
           </union-decl>
         </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::SinglePos::__anonymous_union__ OT::SinglePos::u -->
+          <!-- union {OT::USHORT format; OT::SinglePosFormat1 format1; OT::SinglePosFormat2 format2;} OT::SinglePos::u -->
           <var-decl name='u' type-id='type-id-1617' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gpos-table.hh' line='556' column='1'/>
         </data-member>
         <member-function access='public'>
       <!-- struct OT::Extension<OT::ExtensionPos> -->
       <class-decl name='Extension&lt;OT::ExtensionPos&gt;' size-in-bits='64' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2199' column='1' id='type-id-1592'>
         <data-member access='protected' layout-offset-in-bits='0'>
-          <!-- OT::Extension<OT::ExtensionSubst>::__anonymous_union__ OT::Extension<OT::ExtensionPos>::u -->
+          <!-- union {OT::USHORT format; OT::ExtensionFormat1 format1;} OT::Extension<OT::ExtensionPos>::u -->
           <var-decl name='u' type-id='type-id-1389' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-04g73E/harfbuzz-0.9.37/src/hb-ot-layout-gsubgpos-private.hh' line='2250' column='1'/>
         </data-member>
         <member-function access='public'>
index bf57848..817112b 100644 (file)
         <!-- union __mbstate_t::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='87' column='1' id='type-id-164'>
           <data-member access='private'>
-            <!-- unsigned int __mbstate_t::__anonymous_union__::__wch -->
+            <!-- unsigned int __wch -->
             <var-decl name='__wch' type-id='type-id-80' visibility='default' filepath='/usr/include/wchar.h' line='89' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- char __mbstate_t::__anonymous_union__::__wchb[4] -->
+            <!-- char __wchb[4] -->
             <var-decl name='__wchb' type-id='type-id-165' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
           </data-member>
         </union-decl>
         <var-decl name='__count' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __mbstate_t::__anonymous_union__ __mbstate_t::__value -->
+        <!-- union {unsigned int __wch; char __wchb[4];} __mbstate_t::__value -->
         <var-decl name='__value' type-id='type-id-164' visibility='default' filepath='/usr/include/wchar.h' line='94' column='1'/>
       </data-member>
     </class-decl>
index 50d4736..6695b5f 100644 (file)
         <!-- union __mbstate_t::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='87' column='1' id='type-id-153'>
           <data-member access='private'>
-            <!-- unsigned int __mbstate_t::__anonymous_union__::__wch -->
+            <!-- unsigned int __wch -->
             <var-decl name='__wch' type-id='type-id-130' visibility='default' filepath='/usr/include/wchar.h' line='89' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- char __mbstate_t::__anonymous_union__::__wchb[4] -->
+            <!-- char __wchb[4] -->
             <var-decl name='__wchb' type-id='type-id-154' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
           </data-member>
         </union-decl>
         <var-decl name='__count' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __mbstate_t::__anonymous_union__ __mbstate_t::__value -->
+        <!-- union {unsigned int __wch; char __wchb[4];} __mbstate_t::__value -->
         <var-decl name='__value' type-id='type-id-153' visibility='default' filepath='/usr/include/wchar.h' line='94' column='1'/>
       </data-member>
     </class-decl>
           <!-- union tcmalloc::LogItem::__anonymous_union__ -->
           <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='src/internal_logging.h' line='91' column='1' id='type-id-198'>
             <data-member access='private'>
-              <!-- const char* tcmalloc::LogItem::__anonymous_union__::str -->
+              <!-- const char* str -->
               <var-decl name='str' type-id='type-id-33' visibility='default' filepath='src/internal_logging.h' line='92' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- void* tcmalloc::LogItem::__anonymous_union__::ptr -->
+              <!-- void* ptr -->
               <var-decl name='ptr' type-id='type-id-91' visibility='default' filepath='src/internal_logging.h' line='93' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- int64_t tcmalloc::LogItem::__anonymous_union__::snum -->
+              <!-- int64_t snum -->
               <var-decl name='snum' type-id='type-id-184' visibility='default' filepath='src/internal_logging.h' line='94' column='1'/>
             </data-member>
             <data-member access='private'>
-              <!-- uint64_t tcmalloc::LogItem::__anonymous_union__::unum -->
+              <!-- uint64_t unum -->
               <var-decl name='unum' type-id='type-id-199' visibility='default' filepath='src/internal_logging.h' line='95' column='1'/>
             </data-member>
           </union-decl>
           <var-decl name='tag_' type-id='type-id-197' visibility='default' filepath='src/internal_logging.h' line='90' column='1'/>
         </data-member>
         <data-member access='private' layout-offset-in-bits='64'>
-          <!-- tcmalloc::LogItem::__anonymous_union__ tcmalloc::LogItem::u_ -->
+          <!-- union {const char* str; void* ptr; int64_t snum; uint64_t unum;} tcmalloc::LogItem::u_ -->
           <var-decl name='u_' type-id='type-id-198' visibility='default' filepath='src/internal_logging.h' line='96' column='1'/>
         </data-member>
         <member-function access='private' constructor='yes'>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='64' column='1' id='type-id-1182'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- __pid_t siginfo::__anonymous_union__::__anonymous_struct__::si_pid -->
+                <!-- __pid_t si_pid -->
                 <var-decl name='si_pid' type-id='type-id-412' visibility='default' filepath='/usr/include/bits/siginfo.h' line='65' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='32'>
-                <!-- __uid_t siginfo::__anonymous_union__::__anonymous_struct__::si_uid -->
+                <!-- __uid_t si_uid -->
                 <var-decl name='si_uid' type-id='type-id-1183' visibility='default' filepath='/usr/include/bits/siginfo.h' line='66' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='71' column='1' id='type-id-1184'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- int siginfo::__anonymous_union__::__anonymous_struct__::si_tid -->
+                <!-- int si_tid -->
                 <var-decl name='si_tid' type-id='type-id-7' visibility='default' filepath='/usr/include/bits/siginfo.h' line='72' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='32'>
-                <!-- int siginfo::__anonymous_union__::__anonymous_struct__::si_overrun -->
+                <!-- int si_overrun -->
                 <var-decl name='si_overrun' type-id='type-id-7' visibility='default' filepath='/usr/include/bits/siginfo.h' line='73' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- sigval_t siginfo::__anonymous_union__::__anonymous_struct__::si_sigval -->
+                <!-- sigval_t si_sigval -->
                 <var-decl name='si_sigval' type-id='type-id-1185' visibility='default' filepath='/usr/include/bits/siginfo.h' line='74' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='79' column='1' id='type-id-1186'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- __pid_t siginfo::__anonymous_union__::__anonymous_struct__::si_pid -->
+                <!-- __pid_t si_pid -->
                 <var-decl name='si_pid' type-id='type-id-412' visibility='default' filepath='/usr/include/bits/siginfo.h' line='80' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='32'>
-                <!-- __uid_t siginfo::__anonymous_union__::__anonymous_struct__::si_uid -->
+                <!-- __uid_t si_uid -->
                 <var-decl name='si_uid' type-id='type-id-1183' visibility='default' filepath='/usr/include/bits/siginfo.h' line='81' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- sigval_t siginfo::__anonymous_union__::__anonymous_struct__::si_sigval -->
+                <!-- sigval_t si_sigval -->
                 <var-decl name='si_sigval' type-id='type-id-1185' visibility='default' filepath='/usr/include/bits/siginfo.h' line='82' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='87' column='1' id='type-id-1187'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- __pid_t siginfo::__anonymous_union__::__anonymous_struct__::si_pid -->
+                <!-- __pid_t si_pid -->
                 <var-decl name='si_pid' type-id='type-id-412' visibility='default' filepath='/usr/include/bits/siginfo.h' line='88' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='32'>
-                <!-- __uid_t siginfo::__anonymous_union__::__anonymous_struct__::si_uid -->
+                <!-- __uid_t si_uid -->
                 <var-decl name='si_uid' type-id='type-id-1183' visibility='default' filepath='/usr/include/bits/siginfo.h' line='89' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- int siginfo::__anonymous_union__::__anonymous_struct__::si_status -->
+                <!-- int si_status -->
                 <var-decl name='si_status' type-id='type-id-7' visibility='default' filepath='/usr/include/bits/siginfo.h' line='90' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='128'>
-                <!-- __clock_t siginfo::__anonymous_union__::__anonymous_struct__::si_utime -->
+                <!-- __clock_t si_utime -->
                 <var-decl name='si_utime' type-id='type-id-1188' visibility='default' filepath='/usr/include/bits/siginfo.h' line='91' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='192'>
-                <!-- __clock_t siginfo::__anonymous_union__::__anonymous_struct__::si_stime -->
+                <!-- __clock_t si_stime -->
                 <var-decl name='si_stime' type-id='type-id-1188' visibility='default' filepath='/usr/include/bits/siginfo.h' line='92' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='97' column='1' id='type-id-1189'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- void* siginfo::__anonymous_union__::__anonymous_struct__::si_addr -->
+                <!-- void* si_addr -->
                 <var-decl name='si_addr' type-id='type-id-91' visibility='default' filepath='/usr/include/bits/siginfo.h' line='98' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct siginfo::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/siginfo.h' line='103' column='1' id='type-id-1190'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- long int siginfo::__anonymous_union__::__anonymous_struct__::si_band -->
+                <!-- long int si_band -->
                 <var-decl name='si_band' type-id='type-id-113' visibility='default' filepath='/usr/include/bits/siginfo.h' line='104' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- int siginfo::__anonymous_union__::__anonymous_struct__::si_fd -->
+                <!-- int si_fd -->
                 <var-decl name='si_fd' type-id='type-id-7' visibility='default' filepath='/usr/include/bits/siginfo.h' line='105' column='1'/>
               </data-member>
             </class-decl>
           </member-type>
           <data-member access='private'>
-            <!-- int siginfo::__anonymous_union__::_pad[28] -->
+            <!-- int _pad[28] -->
             <var-decl name='_pad' type-id='type-id-1191' visibility='default' filepath='/usr/include/bits/siginfo.h' line='60' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_kill -->
+            <!-- struct {__pid_t si_pid; __uid_t si_uid;} _kill -->
             <var-decl name='_kill' type-id='type-id-1182' visibility='default' filepath='/usr/include/bits/siginfo.h' line='67' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_timer -->
+            <!-- struct {int si_tid; int si_overrun; sigval_t si_sigval;} _timer -->
             <var-decl name='_timer' type-id='type-id-1184' visibility='default' filepath='/usr/include/bits/siginfo.h' line='75' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_rt -->
+            <!-- struct {__pid_t si_pid; __uid_t si_uid; sigval_t si_sigval;} _rt -->
             <var-decl name='_rt' type-id='type-id-1186' visibility='default' filepath='/usr/include/bits/siginfo.h' line='83' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_sigchld -->
+            <!-- struct {__pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime;} _sigchld -->
             <var-decl name='_sigchld' type-id='type-id-1187' visibility='default' filepath='/usr/include/bits/siginfo.h' line='93' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_sigfault -->
+            <!-- struct {void* si_addr;} _sigfault -->
             <var-decl name='_sigfault' type-id='type-id-1189' visibility='default' filepath='/usr/include/bits/siginfo.h' line='99' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- siginfo::__anonymous_union__::__anonymous_struct__ siginfo::__anonymous_union__::_sigpoll -->
+            <!-- struct {long int si_band; int si_fd;} _sigpoll -->
             <var-decl name='_sigpoll' type-id='type-id-1190' visibility='default' filepath='/usr/include/bits/siginfo.h' line='106' column='1'/>
           </data-member>
         </union-decl>
         <var-decl name='si_code' type-id='type-id-7' visibility='default' filepath='/usr/include/bits/siginfo.h' line='56' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- siginfo::__anonymous_union__ siginfo::_sifields -->
+        <!-- union {int _pad[28]; struct {__pid_t si_pid; __uid_t si_uid;} _kill; struct {int si_tid; int si_overrun; sigval_t si_sigval;} _timer; struct {__pid_t si_pid; __uid_t si_uid; sigval_t si_sigval;} _rt; struct {__pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime;} _sigchld; struct {void* si_addr;} _sigfault; struct {long int si_band; int si_fd;} _sigpoll;} siginfo::_sifields -->
         <var-decl name='_sifields' type-id='type-id-1181' visibility='default' filepath='/usr/include/bits/siginfo.h' line='107' column='1'/>
       </data-member>
     </class-decl>
index 2aad69f..3b5432c 100644 (file)
         <!-- union __mbstate_t::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='87' column='1' id='type-id-242'>
           <data-member access='private'>
-            <!-- unsigned int __mbstate_t::__anonymous_union__::__wch -->
+            <!-- unsigned int __wch -->
             <var-decl name='__wch' type-id='type-id-78' visibility='default' filepath='/usr/include/wchar.h' line='89' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- char __mbstate_t::__anonymous_union__::__wchb[4] -->
+            <!-- char __wchb[4] -->
             <var-decl name='__wchb' type-id='type-id-243' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
           </data-member>
         </union-decl>
         <var-decl name='__count' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- __mbstate_t::__anonymous_union__ __mbstate_t::__value -->
+        <!-- union {unsigned int __wch; char __wchb[4];} __mbstate_t::__value -->
         <var-decl name='__value' type-id='type-id-242' visibility='default' filepath='/usr/include/wchar.h' line='94' column='1'/>
       </data-member>
     </class-decl>
index 01edfd3..7026d1c 100644 (file)
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='2688' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-82' visibility='default' filepath='../.././gcc/pretty-print.h' line='76' column='1' id='type-id-83'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- obstack __anonymous_struct__::formatted_obstack -->
+        <!-- obstack formatted_obstack -->
         <var-decl name='formatted_obstack' type-id='type-id-29' visibility='default' filepath='../.././gcc/pretty-print.h' line='78' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
-        <!-- obstack __anonymous_struct__::chunk_obstack -->
+        <!-- obstack chunk_obstack -->
         <var-decl name='chunk_obstack' type-id='type-id-29' visibility='default' filepath='../.././gcc/pretty-print.h' line='82' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1408'>
-        <!-- obstack* __anonymous_struct__::obstack -->
+        <!-- obstack* obstack -->
         <var-decl name='obstack' type-id='type-id-40' visibility='default' filepath='../.././gcc/pretty-print.h' line='86' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1472'>
-        <!-- chunk_info* __anonymous_struct__::cur_chunk_array -->
+        <!-- chunk_info* cur_chunk_array -->
         <var-decl name='cur_chunk_array' type-id='type-id-84' visibility='default' filepath='../.././gcc/pretty-print.h' line='89' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1536'>
-        <!-- FILE* __anonymous_struct__::stream -->
+        <!-- FILE* stream -->
         <var-decl name='stream' type-id='type-id-25' visibility='default' filepath='../.././gcc/pretty-print.h' line='92' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1600'>
-        <!-- int __anonymous_struct__::line_length -->
+        <!-- int line_length -->
         <var-decl name='line_length' type-id='type-id-3' visibility='default' filepath='../.././gcc/pretty-print.h' line='95' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1632'>
-        <!-- char __anonymous_struct__::digit_buffer[128] -->
+        <!-- char digit_buffer[128] -->
         <var-decl name='digit_buffer' type-id='type-id-85' visibility='default' filepath='../.././gcc/pretty-print.h' line='99' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-80' visibility='default' filepath='../.././gcc/pretty-print.h' line='113' column='1' id='type-id-92'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- diagnostic_prefixing_rule_t __anonymous_struct__::rule -->
+        <!-- diagnostic_prefixing_rule_t rule -->
         <var-decl name='rule' type-id='type-id-93' visibility='default' filepath='../.././gcc/pretty-print.h' line='115' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int __anonymous_struct__::line_cutoff -->
+        <!-- int line_cutoff -->
         <var-decl name='line_cutoff' type-id='type-id-3' visibility='default' filepath='../.././gcc/pretty-print.h' line='119' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-96' visibility='default' filepath='../.././gcc/pretty-print.h' line='34' column='1' id='type-id-97'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::format_spec -->
+        <!-- const char* format_spec -->
         <var-decl name='format_spec' type-id='type-id-8' visibility='default' filepath='../.././gcc/pretty-print.h' line='35' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- va_list* __anonymous_struct__::args_ptr -->
+        <!-- va_list* args_ptr -->
         <var-decl name='args_ptr' type-id='type-id-98' visibility='default' filepath='../.././gcc/pretty-print.h' line='36' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int __anonymous_struct__::err_no -->
+        <!-- int err_no -->
         <var-decl name='err_no' type-id='type-id-3' visibility='default' filepath='../.././gcc/pretty-print.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- location_t* __anonymous_struct__::locus -->
+        <!-- location_t* locus -->
         <var-decl name='locus' type-id='type-id-99' visibility='default' filepath='../.././gcc/pretty-print.h' line='38' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
-        <!-- void** __anonymous_struct__::x_data -->
+        <!-- void** x_data -->
         <var-decl name='x_data' type-id='type-id-100' visibility='default' filepath='../.././gcc/pretty-print.h' line='39' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='192' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-207' visibility='default' filepath='../.././gcc/../libcpp/include/line-map.h' line='588' column='1' id='type-id-208'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::file -->
+        <!-- const char* file -->
         <var-decl name='file' type-id='type-id-8' visibility='default' filepath='../.././gcc/../libcpp/include/line-map.h' line='590' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::line -->
+        <!-- int line -->
         <var-decl name='line' type-id='type-id-3' visibility='default' filepath='../.././gcc/../libcpp/include/line-map.h' line='593' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int __anonymous_struct__::column -->
+        <!-- int column -->
         <var-decl name='column' type-id='type-id-3' visibility='default' filepath='../.././gcc/../libcpp/include/line-map.h' line='595' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- bool __anonymous_struct__::sysp -->
+        <!-- bool sysp -->
         <var-decl name='sysp' type-id='type-id-39' visibility='default' filepath='../.././gcc/../libcpp/include/line-map.h' line='598' column='1'/>
       </data-member>
     </class-decl>
         <!-- struct cpp_reader::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libcpp/internal.h' line='528' column='1' id='type-id-234'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- unsigned char* cpp_reader::__anonymous_struct__::base -->
+            <!-- unsigned char* base -->
             <var-decl name='base' type-id='type-id-235' visibility='default' filepath='../.././libcpp/internal.h' line='529' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
-            <!-- unsigned char* cpp_reader::__anonymous_struct__::limit -->
+            <!-- unsigned char* limit -->
             <var-decl name='limit' type-id='type-id-235' visibility='default' filepath='../.././libcpp/internal.h' line='530' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
-            <!-- unsigned char* cpp_reader::__anonymous_struct__::cur -->
+            <!-- unsigned char* cur -->
             <var-decl name='cur' type-id='type-id-235' visibility='default' filepath='../.././libcpp/internal.h' line='531' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
-            <!-- source_location cpp_reader::__anonymous_struct__::first_line -->
+            <!-- source_location first_line -->
             <var-decl name='first_line' type-id='type-id-104' visibility='default' filepath='../.././libcpp/internal.h' line='532' column='1'/>
           </data-member>
         </class-decl>
         <var-decl name='our_hashtable' type-id='type-id-39' visibility='default' filepath='../.././libcpp/internal.h' line='524' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='9728'>
-        <!-- cpp_reader::__anonymous_struct__ cpp_reader::out -->
+        <!-- struct {unsigned char* base; unsigned char* limit; unsigned char* cur; source_location first_line;} cpp_reader::out -->
         <var-decl name='out' type-id='type-id-234' visibility='default' filepath='../.././libcpp/internal.h' line='533' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='9984'>
             <!-- struct cpp_context::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libcpp/internal.h' line='188' column='1' id='type-id-282'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- utoken cpp_context::__anonymous_union__::__anonymous_struct__::first -->
+                <!-- utoken first -->
                 <var-decl name='first' type-id='type-id-283' visibility='default' filepath='../.././libcpp/internal.h' line='189' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- utoken cpp_context::__anonymous_union__::__anonymous_struct__::last -->
+                <!-- utoken last -->
                 <var-decl name='last' type-id='type-id-283' visibility='default' filepath='../.././libcpp/internal.h' line='190' column='1'/>
               </data-member>
             </class-decl>
             <!-- struct cpp_context::__anonymous_union__::__anonymous_struct__ -->
             <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libcpp/internal.h' line='195' column='1' id='type-id-284'>
               <data-member access='public' layout-offset-in-bits='0'>
-                <!-- const unsigned char* cpp_context::__anonymous_union__::__anonymous_struct__::cur -->
+                <!-- const unsigned char* cur -->
                 <var-decl name='cur' type-id='type-id-142' visibility='default' filepath='../.././libcpp/internal.h' line='196' column='1'/>
               </data-member>
               <data-member access='public' layout-offset-in-bits='64'>
-                <!-- const unsigned char* cpp_context::__anonymous_union__::__anonymous_struct__::rlimit -->
+                <!-- const unsigned char* rlimit -->
                 <var-decl name='rlimit' type-id='type-id-142' visibility='default' filepath='../.././libcpp/internal.h' line='197' column='1'/>
               </data-member>
             </class-decl>
           </member-type>
           <data-member access='private'>
-            <!-- cpp_context::__anonymous_union__::__anonymous_struct__ cpp_context::__anonymous_union__::iso -->
+            <!-- struct {utoken first; utoken last;} iso -->
             <var-decl name='iso' type-id='type-id-282' visibility='default' filepath='../.././libcpp/internal.h' line='191' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- cpp_context::__anonymous_union__::__anonymous_struct__ cpp_context::__anonymous_union__::trad -->
+            <!-- struct {const unsigned char* cur; const unsigned char* rlimit;} trad -->
             <var-decl name='trad' type-id='type-id-284' visibility='default' filepath='../.././libcpp/internal.h' line='198' column='1'/>
           </data-member>
         </union-decl>
         <!-- union cpp_context::__anonymous_union__ -->
         <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../.././libcpp/internal.h' line='216' column='1' id='type-id-285'>
           <data-member access='private'>
-            <!-- macro_context* cpp_context::__anonymous_union__::mc -->
+            <!-- macro_context* mc -->
             <var-decl name='mc' type-id='type-id-286' visibility='default' filepath='../.././libcpp/internal.h' line='217' column='1'/>
           </data-member>
           <data-member access='private'>
-            <!-- cpp_hashnode* cpp_context::__anonymous_union__::macro -->
+            <!-- cpp_hashnode* macro -->
             <var-decl name='macro' type-id='type-id-131' visibility='default' filepath='../.././libcpp/internal.h' line='218' column='1'/>
           </data-member>
         </union-decl>
         <var-decl name='prev' type-id='type-id-240' visibility='default' filepath='../.././libcpp/internal.h' line='180' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- cpp_context::__anonymous_union__ cpp_context::u -->
+        <!-- union {struct {utoken first; utoken last;} iso; struct {const unsigned char* cur; const unsigned char* rlimit;} trad;} cpp_context::u -->
         <var-decl name='u' type-id='type-id-281' visibility='default' filepath='../.././libcpp/internal.h' line='199' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <var-decl name='buff' type-id='type-id-238' visibility='default' filepath='../.././libcpp/internal.h' line='203' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
-        <!-- cpp_context::__anonymous_union__ cpp_context::c -->
+        <!-- union {macro_context* mc; cpp_hashnode* macro;} cpp_context::c -->
         <var-decl name='c' type-id='type-id-285' visibility='default' filepath='../.././libcpp/internal.h' line='219' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='192' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-291' visibility='default' filepath='../.././libcpp/internal.h' line='146' column='1' id='type-id-292'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- cpp_hashnode* __anonymous_struct__::macro_node -->
+        <!-- cpp_hashnode* macro_node -->
         <var-decl name='macro_node' type-id='type-id-131' visibility='default' filepath='../.././libcpp/internal.h' line='148' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- source_location* __anonymous_struct__::virt_locs -->
+        <!-- source_location* virt_locs -->
         <var-decl name='virt_locs' type-id='type-id-132' visibility='default' filepath='../.././libcpp/internal.h' line='153' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- source_location* __anonymous_struct__::cur_virt_loc -->
+        <!-- source_location* cur_virt_loc -->
         <var-decl name='cur_virt_loc' type-id='type-id-132' visibility='default' filepath='../.././libcpp/internal.h' line='157' column='1'/>
       </data-member>
     </class-decl>
         <!-- struct cpp_options::__anonymous_struct__ -->
         <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='451' column='1' id='type-id-346'>
           <data-member access='public' layout-offset-in-bits='0'>
-            <!-- cpp_deps_style cpp_options::__anonymous_struct__::style -->
+            <!-- cpp_deps_style style -->
             <var-decl name='style' type-id='type-id-347' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='453' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='32'>
-            <!-- bool cpp_options::__anonymous_struct__::missing_files -->
+            <!-- bool missing_files -->
             <var-decl name='missing_files' type-id='type-id-39' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='456' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='40'>
-            <!-- bool cpp_options::__anonymous_struct__::phony_targets -->
+            <!-- bool phony_targets -->
             <var-decl name='phony_targets' type-id='type-id-39' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='460' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='48'>
-            <!-- bool cpp_options::__anonymous_struct__::ignore_main_file -->
+            <!-- bool ignore_main_file -->
             <var-decl name='ignore_main_file' type-id='type-id-39' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='463' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='56'>
-            <!-- bool cpp_options::__anonymous_struct__::need_preprocessor_output -->
+            <!-- bool need_preprocessor_output -->
             <var-decl name='need_preprocessor_output' type-id='type-id-39' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='467' column='1'/>
           </data-member>
         </class-decl>
         <var-decl name='restore_pch_deps' type-id='type-id-39' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='447' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
-        <!-- cpp_options::__anonymous_struct__ cpp_options::deps -->
+        <!-- struct {cpp_deps_style style; bool missing_files; bool phony_targets; bool ignore_main_file; bool need_preprocessor_output;} cpp_options::deps -->
         <var-decl name='deps' type-id='type-id-346' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='468' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-258' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='972' column='1' id='type-id-351'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- cpp_comment* __anonymous_struct__::entries -->
+        <!-- cpp_comment* entries -->
         <var-decl name='entries' type-id='type-id-352' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='974' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::count -->
+        <!-- int count -->
         <var-decl name='count' type-id='type-id-3' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='977' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int __anonymous_struct__::allocated -->
+        <!-- int allocated -->
         <var-decl name='allocated' type-id='type-id-3' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='980' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-353' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='961' column='1' id='type-id-354'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- char* __anonymous_struct__::comment -->
+        <!-- char* comment -->
         <var-decl name='comment' type-id='type-id-9' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='963' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- source_location __anonymous_struct__::sloc -->
+        <!-- source_location sloc -->
         <var-decl name='sloc' type-id='type-id-104' visibility='default' filepath='../.././libcpp/include/cpplib.h' line='966' column='1'/>
       </data-member>
     </class-decl>
         <var-decl name='type' type-id='type-id-422' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='437' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- __anonymous_union__ demangle_component::u -->
+        <!-- union {struct {const char* s; int len;} s_name; struct {const demangle_operator_info* op;} s_operator; struct {int args; demangle_component* name;} s_extended_operator; struct {demangle_component* length; short int accum; short int sat;} s_fixed; struct {gnu_v3_ctor_kinds kind; demangle_component* name;} s_ctor; struct {gnu_v3_dtor_kinds kind; demangle_component* name;} s_dtor; struct {const demangle_builtin_type_info* type;} s_builtin; struct {const char* string; int len;} s_string; struct {long int number;} s_number; struct {int character;} s_character; struct {demangle_component* left; demangle_component* right;} s_binary; struct {demangle_component* sub; int num;} s_unary_num;} demangle_component::u -->
         <var-decl name='u' type-id='type-id-423' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='541' column='1'/>
       </data-member>
     </class-decl>
     <!-- union __anonymous_union__ -->
     <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='439' column='1' id='type-id-423'>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_name -->
+        <!-- struct {const char* s; int len;} s_name -->
         <var-decl name='s_name' type-id='type-id-424' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='448' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_operator -->
+        <!-- struct {const demangle_operator_info* op;} s_operator -->
         <var-decl name='s_operator' type-id='type-id-425' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='455' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_extended_operator -->
+        <!-- struct {int args; demangle_component* name;} s_extended_operator -->
         <var-decl name='s_extended_operator' type-id='type-id-426' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='464' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_fixed -->
+        <!-- struct {demangle_component* length; short int accum; short int sat;} s_fixed -->
         <var-decl name='s_fixed' type-id='type-id-427' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='475' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_ctor -->
+        <!-- struct {gnu_v3_ctor_kinds kind; demangle_component* name;} s_ctor -->
         <var-decl name='s_ctor' type-id='type-id-428' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='484' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_dtor -->
+        <!-- struct {gnu_v3_dtor_kinds kind; demangle_component* name;} s_dtor -->
         <var-decl name='s_dtor' type-id='type-id-429' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='493' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_builtin -->
+        <!-- struct {const demangle_builtin_type_info* type;} s_builtin -->
         <var-decl name='s_builtin' type-id='type-id-430' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='500' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_string -->
+        <!-- struct {const char* string; int len;} s_string -->
         <var-decl name='s_string' type-id='type-id-431' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='509' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_number -->
+        <!-- struct {long int number;} s_number -->
         <var-decl name='s_number' type-id='type-id-432' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='516' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_character -->
+        <!-- struct {int character;} s_character -->
         <var-decl name='s_character' type-id='type-id-433' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='522' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_binary -->
+        <!-- struct {demangle_component* left; demangle_component* right;} s_binary -->
         <var-decl name='s_binary' type-id='type-id-434' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='531' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ __anonymous_union__::s_unary_num -->
+        <!-- struct {demangle_component* sub; int num;} s_unary_num -->
         <var-decl name='s_unary_num' type-id='type-id-435' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='539' column='1'/>
       </data-member>
     </union-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='442' column='1' id='type-id-424'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::s -->
+        <!-- const char* s -->
         <var-decl name='s' type-id='type-id-8' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='446' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::len -->
+        <!-- int len -->
         <var-decl name='len' type-id='type-id-3' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='447' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='451' column='1' id='type-id-425'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const demangle_operator_info* __anonymous_struct__::op -->
+        <!-- const demangle_operator_info* op -->
         <var-decl name='op' type-id='type-id-436' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='454' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='458' column='1' id='type-id-426'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::args -->
+        <!-- int args -->
         <var-decl name='args' type-id='type-id-3' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='461' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='463' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='467' column='1' id='type-id-427'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::length -->
+        <!-- demangle_component* length -->
         <var-decl name='length' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='470' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- short int __anonymous_struct__::accum -->
+        <!-- short int accum -->
         <var-decl name='accum' type-id='type-id-440' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='472' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='80'>
-        <!-- short int __anonymous_struct__::sat -->
+        <!-- short int sat -->
         <var-decl name='sat' type-id='type-id-440' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='474' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='478' column='1' id='type-id-428'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- gnu_v3_ctor_kinds __anonymous_struct__::kind -->
+        <!-- gnu_v3_ctor_kinds kind -->
         <var-decl name='kind' type-id='type-id-441' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='481' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='483' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='487' column='1' id='type-id-429'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- gnu_v3_dtor_kinds __anonymous_struct__::kind -->
+        <!-- gnu_v3_dtor_kinds kind -->
         <var-decl name='kind' type-id='type-id-442' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='490' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::name -->
+        <!-- demangle_component* name -->
         <var-decl name='name' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='492' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='496' column='1' id='type-id-430'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const demangle_builtin_type_info* __anonymous_struct__::type -->
+        <!-- const demangle_builtin_type_info* type -->
         <var-decl name='type' type-id='type-id-443' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='499' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='503' column='1' id='type-id-431'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* __anonymous_struct__::string -->
+        <!-- const char* string -->
         <var-decl name='string' type-id='type-id-8' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='506' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::len -->
+        <!-- int len -->
         <var-decl name='len' type-id='type-id-3' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='508' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='512' column='1' id='type-id-432'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int __anonymous_struct__::number -->
+        <!-- long int number -->
         <var-decl name='number' type-id='type-id-20' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='515' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='519' column='1' id='type-id-433'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __anonymous_struct__::character -->
+        <!-- int character -->
         <var-decl name='character' type-id='type-id-3' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='521' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='525' column='1' id='type-id-434'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::left -->
+        <!-- demangle_component* left -->
         <var-decl name='left' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='528' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- demangle_component* __anonymous_struct__::right -->
+        <!-- demangle_component* right -->
         <var-decl name='right' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='530' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='533' column='1' id='type-id-435'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- demangle_component* __anonymous_struct__::sub -->
+        <!-- demangle_component* sub -->
         <var-decl name='sub' type-id='type-id-439' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='536' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int __anonymous_struct__::num -->
+        <!-- int num -->
         <var-decl name='num' type-id='type-id-3' visibility='default' filepath='../.././libiberty/../include/demangle.h' line='538' column='1'/>
       </data-member>
     </class-decl>
     <!-- union __anonymous_union__ -->
     <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/usr/include/stdlib.h' line='68' column='1' id='type-id-493'>
       <data-member access='private'>
-        <!-- wait* __anonymous_union__::__uptr -->
+        <!-- wait* __uptr -->
         <var-decl name='__uptr' type-id='type-id-494' visibility='default' filepath='/usr/include/stdlib.h' line='70' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- int* __anonymous_union__::__iptr -->
+        <!-- int* __iptr -->
         <var-decl name='__iptr' type-id='type-id-60' visibility='default' filepath='/usr/include/stdlib.h' line='71' column='1'/>
       </data-member>
     </union-decl>
         <var-decl name='w_status' type-id='type-id-3' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='69' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ wait::__wait_terminated -->
+        <!-- struct {unsigned int __w_termsig; unsigned int __w_coredump; unsigned int __w_retcode;} wait::__wait_terminated -->
         <var-decl name='__wait_terminated' type-id='type-id-496' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='84' column='1'/>
       </data-member>
       <data-member access='private'>
-        <!-- __anonymous_struct__ wait::__wait_stopped -->
+        <!-- struct {unsigned int __w_stopval; unsigned int __w_stopsig;} wait::__wait_stopped -->
         <var-decl name='__wait_stopped' type-id='type-id-497' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='97' column='1'/>
       </data-member>
     </union-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='70' column='1' id='type-id-496'>
       <data-member access='public' layout-offset-in-bits='25'>
-        <!-- unsigned int __anonymous_struct__::__w_termsig -->
+        <!-- unsigned int __w_termsig -->
         <var-decl name='__w_termsig' type-id='type-id-33' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='24'>
-        <!-- unsigned int __anonymous_struct__::__w_coredump -->
+        <!-- unsigned int __w_coredump -->
         <var-decl name='__w_coredump' type-id='type-id-33' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='16'>
-        <!-- unsigned int __anonymous_struct__::__w_retcode -->
+        <!-- unsigned int __w_retcode -->
         <var-decl name='__w_retcode' type-id='type-id-33' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='75' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct __anonymous_struct__ -->
     <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='85' column='1' id='type-id-497'>
       <data-member access='public' layout-offset-in-bits='24'>
-        <!-- unsigned int __anonymous_struct__::__w_stopval -->
+        <!-- unsigned int __w_stopval -->
         <var-decl name='__w_stopval' type-id='type-id-33' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='88' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='16'>
-        <!-- unsigned int __anonymous_struct__::__w_stopsig -->
+        <!-- unsigned int __w_stopsig -->
         <var-decl name='__w_stopsig' type-id='type-id-33' visibility='default' filepath='/usr/include/bits/waitstatus.h' line='89' column='1'/>
       </data-member>
     </class-decl>
index d48ef3d..d9665b6 100644 (file)
@@ -9,7 +9,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
         in pointed to type 'struct __anonymous_struct__':
           type size changed from 16 to 8 (in bits)
           1 data member deletion:
-            'char __anonymous_struct__::m2', at offset 8 (in bits)
+            'char m2', at offset 8 (in bits)
 
 
 
diff --git a/tests/data/test-diff-filter/libtest44-anonymous-data-member-v0.so b/tests/data/test-diff-filter/libtest44-anonymous-data-member-v0.so
new file mode 100755 (executable)
index 0000000..a77687d
Binary files /dev/null and b/tests/data/test-diff-filter/libtest44-anonymous-data-member-v0.so differ
diff --git a/tests/data/test-diff-filter/libtest44-anonymous-data-member-v1.so b/tests/data/test-diff-filter/libtest44-anonymous-data-member-v1.so
new file mode 100755 (executable)
index 0000000..585c5de
Binary files /dev/null and b/tests/data/test-diff-filter/libtest44-anonymous-data-member-v1.so differ
index f31c1ae..83e779b 100644 (file)
@@ -1301,25 +1301,20 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
       in pointed to type 'struct VarDesc':
         type size hasn't changed
         1 data member change:
-         type of 'VarDesc::__anonymous_union__ VarDesc::flags' changed:
+         type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__' to 'varDescFlags'
            type size hasn't changed
 
+           1 data member deletion:
+             'uint32_t bits'
+
+           1 data member insertion:
+             'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}'
            1 data member change:
-            type of 'VarDesc::__anonymous_union__::__anonymous_struct__ ' changed:
-              type name changed from 'VarDesc::__anonymous_union__::__anonymous_struct__' to 'varDescFlags::__anonymous_struct__'
+            type of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed:
+              entity changed from 'struct VarDesc::__anonymous_union__::__anonymous_struct__' to 'typedef uint32_t'
               type size hasn't changed
-
-              6 data member insertions:
-                'uint32_t varDescFlags::__anonymous_struct__::pin', at offset 18 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::always_delete', at offset 19 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::always_copy', at offset 20 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_dst', at offset 21 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_src', at offset 22 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::alloc_disp', at offset 23 (in bits)
-              no data member changes (8 filtered);
-
-           no data member change (1 filtered);
+            and name of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed to 'varDescFlags::bits'
 
 
   [C]'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' has some indirect sub-type changes:
index 562066f..ea2e3a7 100644 (file)
@@ -1301,25 +1301,20 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
       in pointed to type 'struct VarDesc' at offload_common.h:254:1:
         type size hasn't changed
         1 data member change:
-         type of 'VarDesc::__anonymous_union__ VarDesc::flags' changed:
+         type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__' to 'varDescFlags'
            type size hasn't changed
 
+           1 data member deletion:
+             'uint32_t bits' at offload_common.h:252:1
+
+           1 data member insertion:
+             'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}'
            1 data member change:
-            type of 'VarDesc::__anonymous_union__::__anonymous_struct__ ' changed:
-              type name changed from 'VarDesc::__anonymous_union__::__anonymous_struct__' to 'varDescFlags::__anonymous_struct__'
+            type of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed:
+              entity changed from 'struct VarDesc::__anonymous_union__::__anonymous_struct__' to 'typedef uint32_t' at stdint.h:51:1
               type size hasn't changed
-
-              6 data member insertions:
-                'uint32_t varDescFlags::__anonymous_struct__::pin', at offset 18 (in bits) at offload_common.h:248:1
-                'uint32_t varDescFlags::__anonymous_struct__::always_delete', at offset 19 (in bits) at offload_common.h:246:1
-                'uint32_t varDescFlags::__anonymous_struct__::always_copy', at offset 20 (in bits) at offload_common.h:244:1
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_dst', at offset 21 (in bits) at offload_common.h:241:1
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_src', at offset 22 (in bits) at offload_common.h:239:1
-                'uint32_t varDescFlags::__anonymous_struct__::alloc_disp', at offset 23 (in bits) at offload_common.h:237:1
-              no data member changes (8 filtered);
-
-           no data member change (1 filtered);
+            and name of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed to 'varDescFlags::bits' at offload_common.h:250:1
 
 
   [C]'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' at offload_myo_host.cpp:691:1 has some indirect sub-type changes:
index 4c50484..3bf69dd 100644 (file)
@@ -1301,25 +1301,20 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
       in pointed to type 'struct VarDesc' at offload_common.h:254:1:
         type size hasn't changed
         1 data member change:
-         type of 'VarDesc::__anonymous_union__ VarDesc::flags' changed:
+         type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__' to 'varDescFlags'
            type size hasn't changed
 
+           1 data member deletion:
+             'uint32_t bits' at offload_common.h:252:1
+
+           1 data member insertion:
+             'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}'
            1 data member change:
-            type of 'VarDesc::__anonymous_union__::__anonymous_struct__ ' changed:
-              type name changed from 'VarDesc::__anonymous_union__::__anonymous_struct__' to 'varDescFlags::__anonymous_struct__'
+            type of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed:
+              entity changed from 'struct VarDesc::__anonymous_union__::__anonymous_struct__' to 'typedef uint32_t' at stdint.h:51:1
               type size hasn't changed
-
-              6 data member insertions:
-                'uint32_t varDescFlags::__anonymous_struct__::pin', at offset 0x12 (in bits) at offload_common.h:248:1
-                'uint32_t varDescFlags::__anonymous_struct__::always_delete', at offset 0x13 (in bits) at offload_common.h:246:1
-                'uint32_t varDescFlags::__anonymous_struct__::always_copy', at offset 0x14 (in bits) at offload_common.h:244:1
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_dst', at offset 0x15 (in bits) at offload_common.h:241:1
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_src', at offset 0x16 (in bits) at offload_common.h:239:1
-                'uint32_t varDescFlags::__anonymous_struct__::alloc_disp', at offset 0x17 (in bits) at offload_common.h:237:1
-              no data member changes (8 filtered);
-
-           no data member change (1 filtered);
+            and name of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed to 'varDescFlags::bits' at offload_common.h:250:1
 
 
   [C]'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' at offload_myo_host.cpp:691:1 has some indirect sub-type changes:
index b1d8504..2d1dfbf 100644 (file)
@@ -53,14 +53,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
       in pointed to type 'class std::random_device':
         type size hasn't changed
         1 data member change:
-         type of 'std::random_device::__anonymous_union__ ' changed:
-           type size hasn't changed
-           1 data member change:
-            type of 'FILE* std::random_device::__anonymous_union__::_M_file' changed:
-              in pointed to type 'typedef FILE':
-                entity changed from 'typedef FILE' to 'void'
-                type size changed from 1216 to 0 (in bits)
-
+         anonymous data member at offset 0 changed from:
+           union {FILE* _M_file; std::mt19937 _M_mt;}
+         to:
+           union {void* _M_file; std::mt19937 _M_mt;}
 
 
 
index 38217a6..58a6fe7 100644 (file)
@@ -53,14 +53,10 @@ Variable symbols changes summary: 0 Removed, 6 Added variable symbols not refere
       in pointed to type 'class std::random_device' at random.h:1577:1:
         type size hasn't changed
         1 data member change:
-         type of 'std::random_device::__anonymous_union__ ' changed:
-           type size hasn't changed
-           1 data member change:
-            type of 'FILE* std::random_device::__anonymous_union__::_M_file' changed:
-              in pointed to type 'typedef FILE':
-                entity changed from 'typedef FILE' to 'void'
-                type size changed from 1216 to 0 (in bits)
-
+         anonymous data member at offset 0 changed from:
+           union {FILE* _M_file; std::mt19937 _M_mt;}
+         to:
+           union {void* _M_file; std::mt19937 _M_mt;}
 
 
 
index 95bb4ec..6f40e7f 100644 (file)
@@ -217,25 +217,20 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
       in pointed to type 'struct VarDesc':
         type size hasn't changed
         1 data member change:
-         type of 'VarDesc::__anonymous_union__ VarDesc::flags' changed:
+         type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__' to 'varDescFlags'
            type size hasn't changed
 
+           1 data member deletion:
+             'uint32_t bits'
+
+           1 data member insertion:
+             'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t targetptr; uint32_t preallocated; uint32_t is_pointer; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst; uint32_t always_copy; uint32_t always_delete; uint32_t pin;}'
            1 data member change:
-            type of 'VarDesc::__anonymous_union__::__anonymous_struct__ ' changed:
-              type name changed from 'VarDesc::__anonymous_union__::__anonymous_struct__' to 'varDescFlags::__anonymous_struct__'
+            type of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed:
+              entity changed from 'struct VarDesc::__anonymous_union__::__anonymous_struct__' to 'typedef uint32_t'
               type size hasn't changed
-
-              6 data member insertions:
-                'uint32_t varDescFlags::__anonymous_struct__::pin', at offset 18 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::always_delete', at offset 19 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::always_copy', at offset 20 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_dst', at offset 21 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::is_noncont_src', at offset 22 (in bits)
-                'uint32_t varDescFlags::__anonymous_struct__::alloc_disp', at offset 23 (in bits)
-              no data member changes (8 filtered);
-
-           no data member change (1 filtered);
+            and name of 'struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}' changed to 'varDescFlags::bits'
 
 
   [C]'function void __offload_myoRegisterTables(InitTableEntry*, SharedTableEntry*, FptrTableEntry*)' has some indirect sub-type changes:
diff --git a/tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt b/tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt
new file mode 100644 (file)
index 0000000..d43604b
--- /dev/null
@@ -0,0 +1,30 @@
+Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+2 functions with some indirect sub-type change:
+
+  [C]'function int bar(S2*)' at test44-anonymous-data-member-v1.c:26:1 has some indirect sub-type changes:
+    parameter 1 of type 'S2*' has sub-type changes:
+      in pointed to type 'struct S2' at test44-anonymous-data-member-v1.c:11:1:
+        type size changed from 128 to 160 (in bits)
+        1 data member change:
+         'int S2::d' offset changed from 96 to 128 (in bits) (by +32 bits)
+        1 data member change:
+         anonymous data member at offset 32 changed from:
+           struct {int b; float c;}
+         to:
+           struct {int b; float c; char e;}
+
+
+  [C]'function int foo(S1*)' at test44-anonymous-data-member-v1.c:22:1 has some indirect sub-type changes:
+    parameter 1 of type 'S1*' has sub-type changes:
+      in pointed to type 'struct S1' at test44-anonymous-data-member-v1.c:1:1:
+        type size hasn't changed
+        1 data member change:
+         anonymous data member at offset 32 changed from:
+           union {int b; float c;}
+         to:
+           union {int b; float c; char e;}
+
+
+
diff --git a/tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt b/tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt
new file mode 100644 (file)
index 0000000..3198e0a
--- /dev/null
@@ -0,0 +1,26 @@
+Leaf changes summary: 2 artifacts changed
+Changed leaf types summary: 2 leaf types changed
+Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
+Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
+
+'struct S1 at test-44-anonymous-data-member-v0.c:1:1' changed:
+  type size hasn't changed
+  there are data member changes:
+   anonymous data member at offset 32 changed from:
+     union {int b; float c;}
+   to:
+     union {int b; float c; char e;}
+
+
+
+
+'struct S2 at test-44-anonymous-data-member-v0.c:10:1' changed:
+  type size changed from 128 to 160 (in bits)
+  there are data member changes:
+   anonymous data member at offset 32 changed from:
+     struct {int b; float c;}
+   to:
+     struct {int b; float c; char e;}
+   size changed from 64 to 96 (in bits) (by +32 bits)
+   'int S2::d' offset changed from 96 to 128 (in bits) (by +32 bits)
+
diff --git a/tests/data/test-diff-filter/test44-anonymous-data-member-v0.c b/tests/data/test-diff-filter/test44-anonymous-data-member-v0.c
new file mode 100644 (file)
index 0000000..d283482
--- /dev/null
@@ -0,0 +1,25 @@
+struct S1 {
+  int a;
+  union {
+    int b;
+    float c;
+  };
+  int d;
+};
+
+struct S2 {
+  int a;
+  struct {
+    int b;
+    float c;
+  };
+  int d;
+};
+
+int
+foo(struct S1* p)
+{return p->b;}
+
+int
+bar(struct S2* p)
+{return p->b;}
diff --git a/tests/data/test-diff-filter/test44-anonymous-data-member-v1.c b/tests/data/test-diff-filter/test44-anonymous-data-member-v1.c
new file mode 100644 (file)
index 0000000..6f4bb77
--- /dev/null
@@ -0,0 +1,27 @@
+struct S1 {
+  int a;
+  union {
+    int b;
+    float c;
+    char e;
+  };
+  int d;
+};
+
+struct S2 {
+  int a;
+  struct {
+    int b;
+    float c;
+    char e;
+  };
+  int d;
+};
+
+int
+foo(struct S1* p)
+{return p->b;}
+
+int
+bar(struct S2* p)
+{return p->b;}
index 104f48b..f479a23 100644 (file)
           underlying type 'union __anonymous_union__' at dvd.h:122:1 changed:
             type size hasn't changed
             2 data member changes:
-             type of 'cdio_dvd_disckey_t __anonymous_union__::disckey' changed:
+             type of 'cdio_dvd_disckey_t disckey' changed:
                underlying type 'struct cdio_dvd_disckey' at dvd.h:100:1 changed:
                  type size hasn't changed
                  1 data member change:
                   'unsigned int cdio_dvd_disckey::agid' offset changed from 30 to 22 (in bits) (by -8 bits)
 
-             type of 'cdio_dvd_physical_t __anonymous_union__::physical' changed:
+             type of 'cdio_dvd_physical_t physical' changed:
                underlying type 'struct cdio_dvd_physical' at dvd.h:86:1 changed:
                  type size hasn't changed
                  1 data member change:
index fc81b39..40c8d05 100644 (file)
                            underlying type 'struct __anonymous_struct__' at red_channel.h:195:1 changed:
                              type size hasn't changed
                              1 data member changes (9 filtered):
-                              type of 'channel_alloc_msg_recv_buf_proc __anonymous_struct__::alloc_recv_buf' changed:
+                              type of 'channel_alloc_msg_recv_buf_proc alloc_recv_buf' changed:
                                 underlying type 'uint8_t* (RedChannelClient*, typedef uint16_t, typedef uint32_t)*' changed:
                                   in pointed to type 'function type uint8_t* (RedChannelClient*, typedef uint16_t, typedef uint32_t)':
                                     parameter 1 of type 'RedChannelClient*' has sub-type changes:
index 94884f9..bf92542 100644 (file)
@@ -1,6 +1,6 @@
 ================ changes of 'libspice-server.so.1.8.0'===============
-Leaf changes summary: 14 artifacts changed (7 filtered out)
-  Changed leaf types summary: 3 (7 filtered out) leaf types changed
+Leaf changes summary: 14 artifacts changed (8 filtered out)
+  Changed leaf types summary: 3 (8 filtered out) leaf types changed
   Removed/Changed/Added functions summary: 1 Removed, 2 Changed, 8 Added functions
   Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
 
index ddbe538..6e99bb1 100644 (file)
@@ -500,6 +500,20 @@ InOutSpec in_out_specs[] =
     "data/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt",
     "output/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt",
   },
+  {
+    "data/test-diff-filter/libtest44-anonymous-data-member-v0.so",
+    "data/test-diff-filter/libtest44-anonymous-data-member-v1.so",
+    "--no-default-suppression",
+    "data/test-diff-filter/test44-anonymous-data-member-report-0.txt",
+    "output/test-diff-filter/test44-anonymous-data-member-report-0.txt",
+  },
+  {
+    "data/test-diff-filter/libtest44-anonymous-data-member-v0.so",
+    "data/test-diff-filter/libtest44-anonymous-data-member-v1.so",
+    "--no-default-suppression --leaf-changes-only",
+    "data/test-diff-filter/test44-anonymous-data-member-report-1.txt",
+    "output/test-diff-filter/test44-anonymous-data-member-report-1.txt",
+  },
   // This should be the last entry
   {NULL, NULL, NULL, NULL, NULL}
 };