This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/56578] Testcase behaves differently when compiled with LTO
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 12 Mar 2013 09:51:51 +0000
- Subject: [Bug lto/56578] Testcase behaves differently when compiled with LTO
- Auto-submitted: auto-generated
- References: <bug-56578-4@http.gcc.gnu.org/bugzilla/>
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.