]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gimple.c (iterative_hash_type_name): Do not handle special anonymous names.
authorRichard Guenther <rguenther@suse.de>
Sun, 11 Oct 2009 16:29:57 +0000 (16:29 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Sun, 11 Oct 2009 16:29:57 +0000 (16:29 +0000)
2009-10-11  Richard Guenther  <rguenther@suse.de>

* gimple.c (iterative_hash_type_name): Do not handle special
anonymous names.

cp/
* tree.c (cp_free_lang_data): Drop anonymous aggregate names.

From-SVN: r152643

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/gimple.c

index 668a75636ea4f765f103e443e40d09e41240f087..2ebe6cae03c54883ee188f8ba05ab4ca99416bdf 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-11  Richard Guenther  <rguenther@suse.de>
+
+       * gimple.c (iterative_hash_type_name): Do not handle special
+       anonymous names.
+
 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
index 063db183eb37b1aec8a471b103b4518851bf1aab..67a5deaa69ec29408bcef862cd8a5a1097e366b3 100644 (file)
@@ -1,3 +1,7 @@
+2009-10-11  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (cp_free_lang_data): Drop anonymous aggregate names.
+
 2009-10-08  Jason Merrill  <jason@redhat.com>
 
        PR c++/36816
index 156a09e25a607a4206d2309b30f54ae8952d2fa9..76763735b97870799f9c7d21048c7edc0a2babbf 100644 (file)
@@ -3129,6 +3129,17 @@ cp_free_lang_data (tree t)
       DECL_EXTERNAL (t) = 1;
       TREE_STATIC (t) = 0;
     }
+  if (CP_AGGREGATE_TYPE_P (t)
+      && TYPE_NAME (t))
+    {
+      tree name = TYPE_NAME (t);
+      if (TREE_CODE (name) == TYPE_DECL)
+       name = DECL_NAME (name);
+      /* Drop anonymous names.  */
+      if (name != NULL_TREE
+         && ANON_AGGRNAME_P (name))
+       TYPE_NAME (t) = NULL_TREE;
+    }
 }
 
 \f
index 88353196f9c57a445b7a636319037123b8ce54db..29eec519b7d806bd133154e00d27c9106c0c1ea0 100644 (file)
@@ -3591,21 +3591,6 @@ iterative_hash_type_name (tree type, hashval_t v)
   if (!name)
     return v;
   gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
-  /* Do not hash names of anonymous unions.  At least the C++ FE insists
-     to have a non-NULL TYPE_NAME for them.  See cp/cp-tree.h for all
-     the glory.  */
-#ifndef NO_DOT_IN_LABEL
-  if (IDENTIFIER_POINTER (name)[0] == '.')
-    return v;
-#else
-#ifndef NO_DOLLAR_IN_LABEL
-  if (IDENTIFIER_POINTER (name)[0] == '$')
-    return v;
-#else
-  if (!strncmp (IDENTIFIER_POINTER (name), "__anon_", sizeof ("__anon_") - 1))
-    return v;
-#endif
-#endif
   return iterative_hash_object (IDENTIFIER_HASH_VALUE (name), v);
 }