Hi, this patch fixes an ICE on undefined symbol. The testcase does not really go easily to testsuite because it needs the undefined symbols to trigger. THe bug is however clear - one of the loops is not properly skipping the static symbols.
Bootstrapped/regtested x86_64-linux, comitted to mainline and branch. Honza PR lto/61012 * lto-symtab.c (lto_symtab_merge_decls_1): Do not ICE on undefined externals mixed with variables. Index: lto-symtab.c =================================================================== --- lto-symtab.c (revision 210672) +++ lto-symtab.c (working copy) @@ -453,7 +453,12 @@ lto_symtab_merge_decls_1 (symtab_node *f cgraph or a varpool node. */ if (!prevailing) { - prevailing = first; + for (prevailing = first; + prevailing; prevailing = prevailing->next_sharing_asm_name) + if (lto_symtab_symbol_p (prevailing)) + break; + if (!prevailing) + return; /* For variables chose with a priority variant with vnode attached (i.e. from unit where external declaration of variable is actually used).