diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-04-30 06:43:32 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-04-30 04:43:32 +0000 |
commit | 32496fdde11abfeda4bd911c489fdda5f3e141e6 (patch) | |
tree | b983c60b589ae306425cb0067163d88f62953c25 /gcc/tree.c | |
parent | 00c1cf38e148cdbd57d350e240684181dac01091 (diff) | |
download | gcc-32496fdde11abfeda4bd911c489fdda5f3e141e6.zip gcc-32496fdde11abfeda4bd911c489fdda5f3e141e6.tar.gz gcc-32496fdde11abfeda4bd911c489fdda5f3e141e6.tar.bz2 |
ipa-devirt.c (odr_subtypes_equivalent_p): Compare TYPE_NAME only for aggregate types.
* ipa-devirt.c (odr_subtypes_equivalent_p): Compare TYPE_NAME only
for aggregate types.
(register_odr_type): Be ready for MAIN_VARIANT of ODR type
type to be non_ODR.
* tree.c (need_assembler_name_p): Compute mangled name for
non-fundamental types and integer types.
From-SVN: r222609
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -5145,7 +5145,17 @@ need_assembler_name_p (tree decl) && DECL_NAME (decl) && decl == TYPE_NAME (TREE_TYPE (decl)) && !is_lang_specific (TREE_TYPE (decl)) - && AGGREGATE_TYPE_P (TREE_TYPE (decl)) + /* Save some work. Names of builtin types are always derived from + properties of its main variant. A special case are integer types + where mangling do make differences between char/signed char/unsigned + char etc. Storing name for these makes e.g. + -fno-signed-char/-fsigned-char mismatches to be handled well. + + See cp/mangle.c:write_builtin_type for details. */ + && (TREE_CODE (TREE_TYPE (decl)) != VOID_TYPE + && TREE_CODE (TREE_TYPE (decl)) != BOOLEAN_TYPE + && TREE_CODE (TREE_TYPE (decl)) != REAL_TYPE + && TREE_CODE (TREE_TYPE (decl)) != FIXED_POINT_TYPE) && !TYPE_ARTIFICIAL (TREE_TYPE (decl)) && !variably_modified_type_p (TREE_TYPE (decl), NULL_TREE) && !type_in_anonymous_namespace_p (TREE_TYPE (decl))) |