extern __attribute__((visibility("hidden"))) void _moz_foo (void); extern __typeof (_moz_foo) _moz_foo __asm__ ("" "INT__foo") __attribute__((__visibility__("hidden"))) ; void _moz_foo(void) { printf ("blah\n"); } extern __typeof (_moz_foo) EXT__foo __asm__("" "_moz_foo") __attribute__((__alias__("" "INT__foo"))); evans:/abuild/jh/trunk-3/build-inst2/gcc/:[0]# more t2.c extern void _moz_foo (void); main() { _moz_foo (); } evans:/abuild/jh/trunk-3/build-inst2/gcc/:[0]# ./xgcc -B ./ -O2 -flto t.c t2.c -fuse-linker-plugin t.c: In function ?_moz_foo?: t.c:5:3: warning: incompatible implicit declaration of built-in function ?printf? [enabled by default] lto1: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. lto-wrapper: ./xgcc returned 1 exit status lto-wrapper failedcollect2: ld returned 1 exit status The problem here is that we get prevailing definition of _moz_foo to be alias that has no cgraph node (nor alias node) attached. Bah.
testing patch...
Author: hubicka Date: Tue Dec 14 23:22:23 2010 New Revision: 167822 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167822 Log: PR lto/46940 PR lto/44463 * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Construct nodes for aliases when they are used. * gcc.dg/lto/pr46940_0.c: New testcase. * gcc.dg/lto/pr46940_1.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/lto/pr46940_0.c trunk/gcc/testsuite/gcc.dg/lto/pr46940_1.c Modified: trunk/gcc/ChangeLog trunk/gcc/lto-symtab.c trunk/gcc/testsuite/ChangeLog
Fixed.