re PR lto/55848 (internal compiler error: verify_cgraph_node failed (with `-flto...
authorRichard Biener <rguenther@suse.de>
Thu, 3 Jan 2013 09:45:18 +0000 (09:45 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 3 Jan 2013 09:45:18 +0000 (09:45 +0000)
2013-01-03  Richard Biener  <rguenther@suse.de>

PR lto/55848
* lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always
prefer a built-in decl.

From-SVN: r194839

gcc/ChangeLog
gcc/lto-symtab.c

index 0c5b14d3682757b3b08a190fb688fcc9a1e3c43f..a2a5cb327e184808bec2b59e5a5df434e8eb0e9a 100644 (file)
@@ -1,3 +1,9 @@
+2013-01-03  Richard Biener  <rguenther@suse.de>
+
+       PR lto/55848
+       * lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always
+       prefer a built-in decl.
+
 2013-01-03  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.c (process_command): Update copyright notice dates.
index 295fd37aa3847bc62b6e20ea853a6a30cd01c58f..b6ff02807dec7d7f5cf1988322280957b6e0cf89 100644 (file)
@@ -439,6 +439,16 @@ lto_symtab_merge_decls_1 (symtab_node first)
                && COMPLETE_TYPE_P (TREE_TYPE (e->symbol.decl)))
              prevailing = e;
        }
+      /* For variables prefer the builtin if one is available.  */
+      else if (TREE_CODE (prevailing->symbol.decl) == FUNCTION_DECL)
+       {
+         for (e = first; e; e = e->symbol.next_sharing_asm_name)
+           if (DECL_BUILT_IN (e->symbol.decl))
+             {
+               prevailing = e;
+               break;
+             }
+       }
     }
 
   symtab_prevail_in_asm_name_hash (prevailing);