lto-symtab.c (lto_symtab_prevailing_decl): Remove redundant test, do not replace...
authorRichard Biener <rguenther@suse.de>
Mon, 31 Aug 2015 11:48:11 +0000 (11:48 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 31 Aug 2015 11:48:11 +0000 (11:48 +0000)
2015-08-31  Richard Biener  <rguenther@suse.de>

lto/
* lto-symtab.c (lto_symtab_prevailing_decl): Remove redundant
test, do not replace a non-builtin with a builtin.
* lto.c (compare_tree_sccs_1): Do not merge things we stream
as builtins vs. non-builtins.

From-SVN: r227339

gcc/lto/ChangeLog
gcc/lto/lto-symtab.c
gcc/lto/lto.c

index 6f5ab78ca45d50c65a3d9b1b83d75ead89a29e0b..56dcfa8f3c096a9bfcacb93ab55b7ee9f591c4d0 100644 (file)
@@ -1,3 +1,10 @@
+2015-08-31  Richard Biener  <rguenther@suse.de>
+
+       * lto-symtab.c (lto_symtab_prevailing_decl): Remove redundant
+       test, do not replace a non-builtin with a builtin.
+       * lto.c (compare_tree_sccs_1): Do not merge things we stream
+       as builtins vs. non-builtins.
+
 2015-08-18  Trevor Saunders  <tbsaunde@tbsaunde.org>
 
        * lto.h: Remove useless typedefs.
index 979579f4f161840508d168efb252bb146d2b58ff..d50a1abd3a0529859208f4df4299006b1e11e839 100644 (file)
@@ -798,11 +798,6 @@ lto_symtab_prevailing_decl (tree decl)
   if (TREE_CODE (decl) == FUNCTION_DECL && DECL_ABSTRACT_P (decl))
     return decl;
 
-  /* Likewise builtins are their own prevailing decl.  This preserves
-     non-builtin vs. builtin uses from compile-time.  */
-  if (TREE_CODE (decl) == FUNCTION_DECL && DECL_BUILT_IN (decl))
-    return decl;
-
   /* Ensure DECL_ASSEMBLER_NAME will not set assembler name.  */
   gcc_assert (DECL_ASSEMBLER_NAME_SET_P (decl));
 
@@ -811,5 +806,9 @@ lto_symtab_prevailing_decl (tree decl)
   if (!ret)
     return decl;
 
+  /* Do not replace a non-builtin with a builtin.  */
+  if (is_builtin_fn (ret->decl))
+    return decl;
+
   return ret->decl;
 }
index 7ec4c08a39ee0d5cb6f482fac9ebe09eb47f39a2..b4287a358f82754b674d910af1b05ccadefb480d 100644 (file)
@@ -1054,8 +1054,10 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map)
       return false;
 
 
-  /* We don't want to compare locations, so there is nothing do compare
-     for TS_DECL_MINIMAL.  */
+  /* We want to compare locations up to the point where it makes
+     a difference for streaming - thus whether the decl is builtin or not.  */
+  if (CODE_CONTAINS_STRUCT (code, TS_DECL_MINIMAL))
+    compare_values (streamer_handle_as_builtin_p);
 
   if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON))
     {