diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lto-symtab.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0c5b14d..a2a5cb3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c index 295fd37..b6ff028 100644 --- a/gcc/lto-symtab.c +++ b/gcc/lto-symtab.c @@ -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); |