http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51663
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-03-24 20:59:38 UTC --- Works for me: jh@evans:/abuild/jh/trunk-3/build-inst7> /abuild/jh/trunk-install/bin/g++ -O2 t.C -flto -c jh@evans:/abuild/jh/trunk-3/build-inst7> /abuild/jh/trunk-install/bin/g++ -O2 t.o -flto --save-temps [Leaving LTRANS /tmp/ccy4OrZL.args] [Leaving LTRANS /tmp/ccFrEQBZ.ltrans.out] [Leaving LTRANS /tmp/ccMy8uNk.args] [Leaving LTRANS /tmp/ccFrEQBZ.ltrans0.o] jh@evans:/abuild/jh/trunk-3/build-inst7> more *ltrans*s .file "ccFrEQBZ.ltrans0.o" .section .text.startup,"ax",@progbits .p2align 4,,15 .globl main .type main, @function main: .LFB0: .cfi_startproc xorl %eax, %eax ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (GNU) 4.8.0 20120324 (experimental)" .section .note.GNU-stack,"",@progbits So this is all about -O0? At -O0 I get: .local _ZZN1C1mEvE1d.local.1.2356 .comm _ZZN1C1mEvE1d.local.1.2356,8,8