http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47287
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2011.01.17 13:42:08 Ever Confirmed|0 |1 --- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-01-17 13:42:08 UTC --- (In reply to comment #2) > dave@gsyprf11:~/gcc-4.6/objdir/gcc/testsuite/gcc$ less 20010124-1.res > 3 > 20010124-1.o 3 > 70 e5ddcfb3 PREEMPTED_IR main_test > 76 e5ddcfb3 PREEMPTED_IR g > 101 e5ddcfb3 PREEMPTED_IR f > 20010124-1-lib.o 3 > 104 af7ae83d PREVAILING_DEF_IRONLY f > 118 af7ae83d PREVAILING_DEF_IRONLY g > 144 af7ae83d PREEMPTED_IR inside_main > main.o 3 > 70 bb83b83f PREVAILING_DEF main > 76 bb83b83f PREVAILING_DEF_IRONLY main_test > 79 bb83b83f PREVAILING_DEF_IRONLY inside_main Hum - it has found a definition of main_test in main.o(!?). Can't see such in its source. It also misses 20010124-1.c memcpy PREVAILING_DEF[_IRONLY]. Maybe that one "shifts" into the other unit as a new function? Weird. I suppose you are using GNU ld, right? On trunk x86_64 with stock binutils 2.21 I get > cat 20010124-1.res 3 20010124-1.o 3 79 2651d4ed PREVAILING_DEF_IRONLY main_test 85 2651d4ed RESOLVED_IR g 110 2651d4ed RESOLVED_IR f 20010124-1-lib.o 3 113 f6a75653 PREVAILING_DEF_IRONLY f 127 f6a75653 PREVAILING_DEF_IRONLY g 153 f6a75653 RESOLVED_IR inside_main main.o 3 79 2cccb08f PREVAILING_DEF main 85 2cccb08f RESOLVED_IR main_test 88 2cccb08f PREVAILING_DEF_IRONLY inside_main thus, memcpy is also missing but at least main_test is correctly used from 20010124-1.o. Thus - can you tell us your exact GNU ld version and maybe debug what is the lto_symtab contents we generate (there is a lto-plugin/lto-symtab.c program, not sure if it still works ...)