From: Richard Guenther Date: Sun, 11 Oct 2009 16:29:57 +0000 (+0000) Subject: gimple.c (iterative_hash_type_name): Do not handle special anonymous names. X-Git-Tag: releases/gcc-4.5.0~2977 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=652a8c1cde9cea866af3199c3e4a7fb1e7e909a3;p=thirdparty%2Fgcc.git gimple.c (iterative_hash_type_name): Do not handle special anonymous names. 2009-10-11 Richard Guenther * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 668a75636ea4..2ebe6cae03c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-10-11 Richard Guenther + + * gimple.c (iterative_hash_type_name): Do not handle special + anonymous names. + 2009-10-11 Uros Bizjak * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 063db183eb37..67a5deaa69ec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2009-10-11 Richard Guenther + + * tree.c (cp_free_lang_data): Drop anonymous aggregate names. + 2009-10-08 Jason Merrill PR c++/36816 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 156a09e25a60..76763735b978 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 88353196f9c5..29eec519b7d8 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); }