Created attachment 5158 [details] testcase GCC 4.6.0, LD hjl/lto-mixed. $ gcc -flto -c bar.c $ ar cr libbar.a bar.o $ gcc -flto -fuse-linker-plugin main.c -Wl,--whole-archive libbar.a -Wl,--no-whole-archive foo.c /tmp/ccacBTCT.ltrans0.ltrans.o: In function `foo.1988': ccacBTCT.ltrans0.o:(.text+0x14): undefined reference to `bar' collect2: ld returned 1 exit status $ gcc -flto -fuse-linker-plugin main.c -Wl,--whole-archive libbar.a -Wl,--no-whole-archive foo.c -DICE lto1: internal compiler error: in lto_varpool_replace_node, at lto-symtab.c:306 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. lto-wrapper: i686-pc-linux-gnu-gcc-4.6.0 returned 1 exit status /usr/local/bin/ld: lto-wrapper failed collect2: ld returned 1 exit status
(In reply to comment #0) > Created attachment 5158 [details] > testcase > > GCC 4.6.0, LD hjl/lto-mixed. > > $ gcc -flto -c bar.c > $ ar cr libbar.a bar.o > $ gcc -flto -fuse-linker-plugin main.c -Wl,--whole-archive libbar.a > -Wl,--no-whole-archive foo.c > /tmp/ccacBTCT.ltrans0.ltrans.o: In function `foo.1988': > ccacBTCT.ltrans0.o:(.text+0x14): undefined reference to `bar' > collect2: ld returned 1 exit status On hjl/lto-mixed branch commit 20ad3f1fe442c6378d2ad168b60dd4fbaf95d169 with gcc 4.6 revision 167368, I got [hjl@gnu-6 pr12319]$ make /usr/gcc-4.6/bin/gcc -B./ -flto -c -o bar.o bar.c ar cr libbar.a bar.o /usr/gcc-4.6/bin/gcc -B./ -flto -fuse-linker-plugin -o prog main.c \ -Wl,--whole-archive libbar.a -Wl,--no-whole-archive foo.c ./prog [hjl@gnu-6 pr12319]$ > $ gcc -flto -fuse-linker-plugin main.c -Wl,--whole-archive libbar.a > -Wl,--no-whole-archive foo.c -DICE > lto1: internal compiler error: in lto_varpool_replace_node, at lto-symtab.c:306 > Please submit a full bug report, > with preprocessed source if appropriate. > See <http://gcc.gnu.org/bugs.html> for instructions. > lto-wrapper: i686-pc-linux-gnu-gcc-4.6.0 returned 1 exit status This is a GCC bug. > /usr/local/bin/ld: lto-wrapper failed > collect2: ld returned 1 exit status
Works in 2.23 and tracked by "LTO 14" test.