https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68811
--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The bug is that we can not prevail builtin decl refered by the global tables by non-builtin. The following restores the previous behaviour of not merging. Next stage1 I can clean this up finally. Index: lto-symtab.c =================================================================== --- lto-symtab.c (revision 231439) +++ lto-symtab.c (working copy) @@ -514,11 +514,9 @@ lto_symtab_merge_p (tree prevailing, tre return false; if (TREE_CODE (prevailing) == FUNCTION_DECL) { - if (DECL_BUILT_IN (prevailing) != DECL_BUILT_IN (decl)) - return false; - if (DECL_BUILT_IN (prevailing) - && (DECL_BUILT_IN_CLASS (prevailing) != DECL_BUILT_IN_CLASS (decl) - || DECL_FUNCTION_CODE (prevailing) != DECL_FUNCTION_CODE (decl))) + /* Never merge bulitin declarations. Those are streamed specially + and already merged from the corresponding tables. */ + if (DECL_BUILT_IN (prevailing) || DECL_BUILT_IN (decl)) return false; } /* There are several other cases where merging can not be done, but until @@ -709,7 +707,7 @@ lto_symtab_merge_decls_1 (symtab_node *f && lto_symtab_symbol_p (e)) prevailing = e; } - /* For variables prefer the non-builtin if one is available. */ + /* For functions prefer the non-builtin if one is available. */ else if (TREE_CODE (prevailing->decl) == FUNCTION_DECL) { for (e = first; e; e = e->next_sharing_asm_name)