aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/tree.c11
-rw-r--r--gcc/gimple.c15
4 files changed, 20 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 668a756..2ebe6ca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 063db18..67a5dea 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 156a09e..7676373 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -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;
+ }
}
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 8835319..29eec51 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -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);
}