http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56578
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Status|WAITING |NEW CC| |hubicka at gcc dot gnu.org, | |rguenth at gcc dot gnu.org Known to fail| |4.6.4, 4.7.3, 4.8.0 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-12 09:51:51 UTC --- Thanks. With fixing the size_t issues of the testcase I can reproduce it on x86_64 as well (original testcase reproduces with -m32). We could say the bug is in the testcase. Failing is: gcc-4.8 -B /abuild/rguenther/trunk-g/gcc -flto -c func.c -o a.o ar --plugin=/abuild/rguenther/trunk-g/gcc/liblto_plugin.so -cr libxxx.a a.o gcc-4.8 -B /abuild/rguenther/trunk-g/gcc -flto main.c libxxx.a -o prog3 ./prog3 FAIL that's because you are providing an implementation of malloc in libxxx.a a.o from func.c that does not have the C standards semantics. You have to compile this module with -fno-builtin-malloc (or -fno-builtins). Honza: I believe we _should_ tell the linker that we have a definition of malloc available, even if it is a "builtin". That is, the testcase should work as it is clearly well-defined on the linker side (setting aside that GCC might still optimize the result in an unexpected way because it can rely on malloc/free semantics). Thus, confirmed as a bug in LTO symtab handling.