[PATCH] Fix PR55848
Richard Biener
rguenther@suse.de
Wed Jan 2 15:39:00 GMT 2013
This fixes PR55848, when doing LTO symtab merging as last resort
we should prefer a built-in decl if one is available as we are
not replacing its cgraph node.
Note, we still prefer a prevailing definition over a built-in
(which IMHO is good).
LTO bootstrap and regtest pending on x86_64-unknown-linux-gnu.
Richard.
2013-01-02 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.
Index: gcc/lto-symtab.c
===================================================================
*** gcc/lto-symtab.c (revision 194787)
--- gcc/lto-symtab.c (working copy)
*************** lto_symtab_merge_decls_1 (symtab_node fi
*** 439,444 ****
--- 439,454 ----
&& 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);
More information about the Gcc-patches
mailing list