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.
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;
}