http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53831
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rafael.espindola at gmail | |dot com Known to fail| |4.8.0 --- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-07-03 12:39:46 UTC --- Heh, not sure ;) Btw, the issue reproduces on trunk as well. And if I use -fno-fat-lto-objects I get a maybe more easily to debug linker failure: repro> make USE_LTO=1 /space/rguenther/install/gcc-4.7.1/bin/g++ -B /abuild/rguenther/trunk-g/gcc -c main.cpp -o main.o -ffunction-sections -funwind-tables -O2 -DNDEBUG -fno-exceptions -fno-rtti -fno-fat-lto-objects -flto In file included from main.cpp:1:0: common.h:8:22: warning: inline function 'virtual void C::f()' used but never defined [enabled by default] inline virtual void f(); ^ /space/rguenther/install/gcc-4.7.1/bin/g++ -B /abuild/rguenther/trunk-g/gcc -c impl.cpp -o impl.o -ffunction-sections -funwind-tables -O2 -DNDEBUG -fno-exceptions -fno-rtti -fno-fat-lto-objects -flto ar rcs libdummy.a impl.o /space/rguenther/install/gcc-4.7.1/bin/g++ -B /abuild/rguenther/trunk-g/gcc main.o libdummy.a -o test.exe -flto /tmp/ccXwNVS0.ltrans0.ltrans.o: In function `main': ccXwNVS0.ltrans0.o:(.text+0xc): undefined reference to `vtable for C' ccXwNVS0.ltrans0.o:(.text+0x18): undefined reference to `C::f()' ccXwNVS0.ltrans0.o:(.text+0x24): undefined reference to `C::g()' collect2: error: ld returned 1 exit status make: *** [test.exe] Error 1 note the warning about C::f() being never defined. That leaves the vtable for C in main.o with a reference to an external function - not sure if that's valid from the ABI point of view (or if this is valid C++). Might also be related to PR53808.