tree.c (need_assembler_name_p): Artificial types have no ODR names.
authorJan Hubicka <hubicka@ucw.cz>
Tue, 31 Mar 2015 17:03:16 +0000 (19:03 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 31 Mar 2015 17:03:16 +0000 (17:03 +0000)
* tree.c (need_assembler_name_p): Artificial types have no ODR
names.
* ipa-devirt.c (warn_odr): Do not try to apply ODR cache when
no caching is done.
* lto.c (lto_read_decls): Move code registering odr types out
of TYPE_CANONICAL conditional and also register polymorphic types.

From-SVN: r221797

gcc/ChangeLog
gcc/ipa-devirt.c
gcc/lto/ChangeLog
gcc/tree.c

index 150525b7ba9429e13db126e0b4656737ac9325bb..ea149b40f149a01705fd1db46c35efea6fcc09d7 100644 (file)
@@ -1,3 +1,10 @@
+2015-03-27  Jan Hubicka  <hubicka@ucw.cz>
+
+       * tree.c (need_assembler_name_p): Artificial types have no ODR
+       names.
+       * ipa-devirt.c (warn_odr): Do not try to apply ODR cache when
+       no caching is done.
+
 2015-03-31  Martin Liska  <mliska@suse.cz>
 
        PR ipa/65557
index 534f6c0220d40135d6bedb334895250fa1ea63f7..6969f5a04be618fd74661be3a6a9a8474d1ac3db 100644 (file)
@@ -939,7 +939,8 @@ warn_odr (tree t1, tree t2, tree st1, tree st2,
 
   /* ODR warnings are output druing LTO streaming; we must apply location
      cache for potential warnings to be output correctly.  */
-  lto_location_cache::current_cache->apply_location_cache ();
+  if (lto_location_cache::current_cache)
+    lto_location_cache::current_cache->apply_location_cache ();
 
   if (!warning_at (DECL_SOURCE_LOCATION (TYPE_NAME (t1)), OPT_Wodr,
                   "type %qT violates one definition rule",
index bf2b51bba625d84fca7e68385766ac223e932422..085ce9f4a0424991c0f0dbe26288b365fee7bdcc 100644 (file)
@@ -1,3 +1,8 @@
+2015-03-27  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto.c (lto_read_decls): Move code registering odr types out
+       of TYPE_CANONICAL conditional and also register polymorphic types.
+
 2015-03-26  Jan Hubicka  <hubicka@ucw.cz>
 
        * lto-symtab.c (lto_symtab_merge_decls_2): Silence warning on
index 0b8e8961b0800a9543443954b52d003bca7f58d1..151e3e27bada492943a899621e8ff7fdcfee8249 100644 (file)
@@ -5139,6 +5139,7 @@ need_assembler_name_p (tree decl)
       && decl == TYPE_NAME (TREE_TYPE (decl))
       && !is_lang_specific (TREE_TYPE (decl))
       && AGGREGATE_TYPE_P (TREE_TYPE (decl))
+      && !TYPE_ARTIFICIAL (TREE_TYPE (decl))
       && !variably_modified_type_p (TREE_TYPE (decl), NULL_TREE)
       && !type_in_anonymous_namespace_p (TREE_TYPE (decl)))
     return !DECL_ASSEMBLER_NAME_SET_P (decl);