[Bug c++/57208] Latest chromium compilation fails with enabled LTO
hubicka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jun 22 21:43:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57208
--- Comment #23 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
It seems late optimizers translate
cloning Bind to
_ZN4base4BindIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviENS_8internal17UnretainedWrapperIS3_EEEENS_8CallbackINS6_9BindStateINS6_13FunctorTraitsIT_E12RunnableTypeENSD_7RunTypeEFvNS6_19CallbackParamTraitsIT0_E11StorageTypeEEE14UnboundRunTypeEEESC_RKSH_.constprop.12480
Bind (struct
{
void DnsTCPAttempt::<T2bc0a> (struct DnsTCPAttempt *, int) * __pfn;
long int __delta;
} functor, const struct UnretainedWrapper & p1)
{
void DnsTCPAttempt::<T2bc0a> (struct DnsTCPAttempt *, int) * method$__pfn;
long int method$__delta;
<bb 2>:
method$__pfn_10 = MEM[(const struct &)&functor];
method$__delta_11 = MEM[(const struct &)&functor + 8];
_5 = operator new (40);
_12 = &MEM[(struct RefCountedThreadSafe *)_5 + 8B].D.4332;
__base_ctor (_12);
MEM[(struct BindStateBase *)_5]._vptr.BindStateBase = &MEM[(void
*)&_ZTVN4base8internal13BindStateBaseE + 16B];
MEM[(struct BindState *)_5].D.961227._vptr.BindStateBase = &MEM[(void
*)&_ZTVN4base8internal9BindStateINS0_15RunnableAdapterIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviEEEFvPS5_iEFvNS0_17UnretainedWrapperIS5_EEEEE
+ 16B];
MEM[(struct BindState *)_5 + 16B] = method$__pfn_10;
MEM[(struct BindState *)_5 + 24B] = method$__delta_11;
MEM[(struct BindState *)_5].p1_ = *p1_6(D);
_13 = &_8(D)->D.42504;
__base_ctor (_13, _5);
_8(D)->D.42504.polymorphic_invoke_ = Run;
return _8(D);
}
into
.globl
_ZN4base4BindIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviENS_8internal17UnretainedWrapperIS3_EEEENS_8CallbackINS6_9BindStateINS6_13FunctorTraitsIT_E12RunnableTypeENSD_7RunType
.hidden
_ZN4base4BindIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviENS_8internal17UnretainedWrapperIS3_EEEENS_8CallbackINS6_9BindStateINS6_13FunctorTraitsIT_E12RunnableTypeENSD_7RunType
.type
_ZN4base4BindIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviENS_8internal17UnretainedWrapperIS3_EEEENS_8CallbackINS6_9BindStateINS6_13FunctorTraitsIT_E12RunnableTypeENSD_7RunType
_ZN4base4BindIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviENS_8internal17UnretainedWrapperIS3_EEEENS_8CallbackINS6_9BindStateINS6_13FunctorTraitsIT_E12RunnableTypeENSD_7RunTypeEFvNS6_19Callbac
.LFB10639:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rcx, %rbp
pushq %rbx
.cfi_def_cfa_offset 24
.cfi_offset 3, -24
movq %rdi, %rbx
movl $40, %edi
subq $8, %rsp
.cfi_def_cfa_offset 32
call _Znwm@PLT
movl $0, 8(%rax)
movq %rax, %rsi
leaq
16+_ZTVN4base8internal9BindStateINS0_15RunnableAdapterIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviEEEFvPS5_iEFvNS0_17UnretainedWrapperIS5_EEEEE.lto_priv.73096(%rip),
%rax
movq $0, 24(%rsi)
movq %rbx, %rdi
movq %rax, (%rsi)
leaq _ZN3net12_GLOBAL__N_113DnsTCPAttempt12OnIOCompleteEi(%rip),
%rax
movq %rax, 16(%rsi)
movq 0(%rbp), %rax
movq %rax, 32(%rsi)
call _ZN4base8internal12CallbackBaseC2EPNS0_13BindStateBaseE
leaq
_ZN4base8internal7InvokerILi1ENS0_9BindStateINS0_15RunnableAdapterIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviEEEFvPS6_iEFvNS0_17UnretainedWrapperIS6_EEEEESB_E3RunEPNS0_13Bind
movq %rax, 8(%rbx)
addq $8, %rsp
.cfi_def_cfa_offset 24
movq %rbx, %rax
popq %rbx
.cfi_def_cfa_offset 16
popq %rbp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE10639:
So someone folds
MEM[(struct BindStateBase *)_5]._vptr.BindStateBase = &MEM[(void
*)&_ZTVN4base8internal13BindStateBaseE + 16B];
MEM[(struct BindState *)_5].D.961227._vptr.BindStateBase = &MEM[(void
*)&_ZTVN4base8internal9BindStateINS0_15RunnableAdapterIMN3net12_GLOBAL__N_113DnsTCPAttemptEFviEEEFvPS5_iEFvNS0_17UnretainedWrapperIS5_EEEEE
+ 16B];
MEM[(struct BindState *)_5 + 16B] = method$__pfn_10;
MEM[(struct BindState *)_5 + 24B] = method$__delta_11;
MEM[(struct BindState *)_5].p1_ = *p1_6(D);
into reference to the symbol that is in other ltrans and not seen by
partitioning...
More information about the Gcc-bugs
mailing list