* gimple.c (iterative_hash_type_name): Do not handle special
anonymous names.
cp/
* tree.c (cp_free_lang_data): Drop anonymous aggregate names.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152643
138bc75d-0d04-0410-961f-
82ee72b054a4
+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.
+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
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
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);
}