http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53186

--- Comment #3 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 
2012-05-03 06:42:46 UTC ---
not bad…

hope it could be back ported to 4.7.1


c++ -std=gnu++11 -c opFinal.cpp; nm opFinal.o; otool -t -v -V -X opFinal.o |
c++filt
00000000000000b0 s EH_frame1
0000000000000021 T __Z4fooAR1A
0000000000000060 T __Z5fooF1R2F1
0000000000000094 T __Z5fooF2R2F2
0000000000000000 T __Z6fooAopR1A
0000000000000046 T __Z7fooF1opR2F1
000000000000007a T __Z7fooF2opR2F2
                 U __ZN2F11mEv
                 U __ZN2F1clEv
                 U __ZN2F21mEv
                 U __ZN2F2clEv
fooAop(A&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    (%rax),%rax
movq    (%rax),%rax
movq    0xf8(%rbp),%rdx
movq    %rdx,%rdi
call    *%rax
leave
ret
fooA(A&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    (%rax),%rax
addq    $0x08,%rax
movq    (%rax),%rax
movq    0xf8(%rbp),%rdx
movq    %rdx,%rdi
call    *%rax
leave
ret
fooF1op(F1&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    %rax,%rdi
callq    F1::operator()()
leave
ret
fooF1(F1&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    %rax,%rdi
callq    F1::m()
leave
ret
fooF2op(F2&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    %rax,%rdi
callq    F2::operator()()
leave
ret
fooF2(F2&):
pushq    %rbp
movq    %rsp,%rbp
subq    $0x10,%rsp
movq    %rdi,0xf8(%rbp)
movq    0xf8(%rbp),%rax
movq    %rax,%rdi
callq    F2::m()
leave
ret

Reply via email to