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

login
register
mail settings
Submitter Jan Hubicka
Date Sept. 5, 2013, 11:25 p.m.
Message ID <20130905232503.GA24297@kam.mff.cuni.cz>
Download mbox | patch
Permalink /patch/272997/
State New
Headers show

Comments

Jan Hubicka - Sept. 5, 2013, 11:25 p.m.
Hi,
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.

Patch

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).  */
-#ifdef ENABLE_CHECKING
-      gcc_assert (!strchr (IDENTIFIER_POINTER (v1), '.')
-		  && !strchr (IDENTIFIER_POINTER (v2), '.'));
-#endif
       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);
-#ifdef ENABLE_CHECKING
-      gcc_assert (!strchr (IDENTIFIER_POINTER (v), '.'));
-#endif
       hash = iterative_hash_hashval_t (hash, htab_hash_pointer (v));
       return hash;
     }