https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65236

--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
There's generated assembly:

000000000045faa0
<_ZNK6google8protobuf11MessageLite24SerializePartialAsStringEv>:
  45faa0:    53                       push   %rbx
  45faa1:    48 89 fb                 mov    %rdi,%rbx
  45faa4:    48 89 f7                 mov    %rsi,%rdi
  45faa7:    48 8d 43 10              lea    0x10(%rbx),%rax
  45faab:    48 c7 43 08 00 00 00     movq   $0x0,0x8(%rbx)
  45fab2:    00 
  45fab3:    c6 43 10 00              movb   $0x0,0x10(%rbx)
  45fab7:    48 89 de                 mov    %rbx,%rsi
  45faba:    48 89 03                 mov    %rax,(%rbx)
  45fabd:    e8 0e ff ff ff           callq  45f9d0
<_ZNK6google8protobuf11MessageLite21AppendPartialToStringEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE>
  45fac2:    84 c0                    test   %al,%al
  45fac4:    75 0e                    jne    45fad4
<_ZNK6google8protobuf11MessageLite24SerializePartialAsStringEv+0x34>
  45fac6:    48 8b 03                 mov    (%rbx),%rax
  45fac9:    48 c7 43 08 00 00 00     movq   $0x0,0x8(%rbx)
  45fad0:    00 
  45fad1:    c6 00 00                 movb   $0x0,(%rax)
  45fad4:    48 89 d8                 mov    %rbx,%rax
  45fad7:    5b                       pop    %rbx
  45fad8:    c3                       retq   
  45fad9:    00 00                    add    %al,(%rax)
  45fadb:    00 00                    add    %al,(%rax)
  45fadd:    00 00                    add    %al,(%rax)
    ...

000000000045fae0 <_ZNK6google8protobuf11MessageLite17SerializeAsStringEv>:
  45fae0:    53                       push   %rbx
  45fae1:    48 89 fb                 mov    %rdi,%rbx
  45fae4:    48 83 ec 20              sub    $0x20,%rsp
  45fae8:    48 89 e7                 mov    %rsp,%rdi
  45faeb:    e8 b0 ff ff ff           callq  45faa0
<_ZNK6google8protobuf11MessageLite24SerializePartialAsStringEv>
  45faf0:    48 8b 04 24              mov    (%rsp),%rax

(marker)
----------------------------------------------------------------------vvvv

  45faf4:    48 89 03                 mov    %rax,(%rbx)
  45faf7:    48 8b 44 24 08           mov    0x8(%rsp),%rax
  45fafc:    48 89 43 08              mov    %rax,0x8(%rbx)
  45fb00:    48 8b 44 24 10           mov    0x10(%rsp),%rax
  45fb05:    48 89 43 10              mov    %rax,0x10(%rbx)
  45fb09:    48 8b 44 24 18           mov    0x18(%rsp),%rax
  45fb0e:    48 89 43 18              mov    %rax,0x18(%rbx)
  45fb12:    48 83 c4 20              add    $0x20,%rsp
  45fb16:    48 89 d8                 mov    %rbx,%rax
  45fb19:    5b                       pop    %rbx
  45fb1a:    c3                       retq   
  45fb1b:    00 00                    add    %al,(%rax)
  45fb1d:    00 00                    add    %al,(%rax)

Where I suspect a stack load/store instruction after returning from the call
------^^^^

Reply via email to