Fix g++.dg/lto/20090311 and g++.dg/lto/20091210-1 on some setups

Message ID
State New
Headers show

Commit Message

Jan Hubicka Sept. 5, 2013, 11:25 p.m.
ipa-devirt uses mangled names to establish equivalence in between symbols.
I added assert for cloned names, since I convinced myself that otherwise
we can miss matches in between local static symbols.  I also convinced
myself we should never rename.

I was wrong on both: declaration merging makes renaming safe and we rename
on non-plugin-enabled systems.  I am thus dropping this check.

Comitted as obvious.

	* tree.c (types_same_for_odr): Drop overactive check.
	* ipa-devirt.c (hash_type_name): Likewise.


Index: tree.c
--- tree.c	(revision 202271)
+++ tree.c	(working copy)
@@ -11883,13 +11883,6 @@  types_same_for_odr (tree type1, tree typ
       v1 = DECL_ASSEMBLER_NAME (v1);
       v2 = DECL_ASSEMBLER_NAME (v2);
-      /* If we ever start adding random .blah suffixes after
-	 assembler names, we need to compare for match ignoring
-	 these (and update odr_type_hash, too).  */
-      gcc_assert (!strchr (IDENTIFIER_POINTER (v1), '.')
-		  && !strchr (IDENTIFIER_POINTER (v2), '.'));
       return (v1 == v2);
Index: ipa-devirt.c
--- ipa-devirt.c	(revision 202271)
+++ ipa-devirt.c	(working copy)
@@ -204,9 +204,6 @@  hash_type_name (tree t)
       v = DECL_ASSEMBLER_NAME (v);
-      gcc_assert (!strchr (IDENTIFIER_POINTER (v), '.'));
       hash = iterative_hash_hashval_t (hash, htab_hash_pointer (v));
       return hash;