https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65316
--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> --- $ valgrind ./xgcc -B ./ -r -nostdlib -O2 -fno-lto-odr-type-merging -flto one.o two.o ==98359== Memcheck, a memory error detector ==98359== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. ==98359== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info ==98359== Command: ./xgcc -B ./ -r -nostdlib -O2 -fno-lto-odr-type-merging -flto one.o two.o ==98359== ==98359== ==98359== HEAP SUMMARY: ==98359== in use at exit: 153,577 bytes in 232 blocks ==98359== total heap usage: 365 allocs, 133 frees, 180,779 bytes allocated ==98359== ==98359== LEAK SUMMARY: ==98359== definitely lost: 36,072 bytes in 133 blocks ==98359== indirectly lost: 18 bytes in 1 blocks ==98359== possibly lost: 0 bytes in 0 blocks ==98359== still reachable: 117,487 bytes in 98 blocks ==98359== suppressed: 0 bytes in 0 blocks ==98359== Rerun with --leak-check=full to see details of leaked memory ==98359== ==98359== For counts of detected and suppressed errors, rerun with: -v ==98359== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4) and running $ while true ; do ./xgcc -B ./ -r -nostdlib -O2 -fno-lto-odr-type-merging -flto one.o two.o ; done can you possibly valgrind it to figure out the source of uninitialized access?