OSDN Git Service

(type_attribute): Use the TYPE_MAIN_VARIANT of the
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Apr 1993 20:28:11 +0000 (20:28 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 4 Apr 1993 20:28:11 +0000 (20:28 +0000)
given type when calling `user_def_type_attribute'.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4005 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/dwarfout.c

index b70a467..b2552a6 100644 (file)
@@ -2827,7 +2827,16 @@ type_attribute (type, decl_const, decl_volatile)
     if (root_type_modified)
        mod_u_d_type_attribute (type, decl_const, decl_volatile);
     else
-       user_def_type_attribute (type);
+       /* We have to get the TYPE_MAIN_VARIANT here (and pass that to the
+          `user_def_type_attribute' routine) because the ..._TYPE node we
+          have might simply be a *copy* of some original type node (where
+          the copy was created to help us keep track of typedef names)
+          and that copy might have a different TYPE_UID from the original
+          ..._TYPE node.  (Note that when `equate_type_number_to_die_number'
+          is labeling a given type DIE for future reference, it always and
+          only creates labels for DIEs representing *main variants*, and it
+          never even knows about non-main-variants.)  */
+       user_def_type_attribute (TYPE_MAIN_VARIANT (type));
 }
 
 /* Given a tree pointer to a struct, class, union, or enum type node, return