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

--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> ---
This function:

SV *
sv_mortalcopy(SV *oldstr)
{
    dTHR;
    register SV *sv; 

    new_SV(sv);
    SvANY(sv) = 0; 
    SvREFCNT(sv) = 1; 
    SvFLAGS(sv) = 0; 
    sv_setsv(sv,oldstr);
    if (++PL_tmps_ix >= PL_tmps_max)
        sv_mortalgrow();
    PL_tmps_stack[PL_tmps_ix] = sv;
    SvTEMP_on(sv);
    return sv;
}

is compiled into

00494220 <Perl_sv_mortalcopy>:
  494220:    41 54                    push   %r12
  494222:    55                       push   %rbp
  494223:    48 89 fe                 mov    %rdi,%rsi
  494226:    53                       push   %rbx
  494227:    83 ec 10                 sub    $0x10,%esp
  49422a:    8b 1d c0 c3 27 00        mov    0x27c3c0(%rip),%ebx        #
7105f0 <PL_sv_root>
  494230:    85 db                    test   %ebx,%ebx
  494232:    0f 84 e0 00 00 00        je     494318 <Perl_sv_mortalcopy+0xf8>
  494238:    67 8b 03                 mov    (%ebx),%eax
  49423b:    83 05 aa c3 27 00 01     addl   $0x1,0x27c3aa(%rip)        #
7105ec <PL_sv_count>
  494242:    89 05 a8 c3 27 00        mov    %eax,0x27c3a8(%rip)        #
7105f0 <PL_sv_root>
  494248:    89 dd                    mov    %ebx,%ebp
  49424a:    67 c7 03 00 00 00 00     movl   $0x0,(%ebx)
  494251:    67 c7 43 04 01 00 00 00     movl   $0x1,0x4(%ebx)
  494259:    48 89 ef                 mov    %rbp,%rdi
  49425c:    67 c7 43 08 00 00 00 00     movl   $0x0,0x8(%ebx)
  494264:    e8 f7 bf ff ff           callq  490260 <Perl_sv_setsv>
  494269:    8b 15 41 b5 27 00        mov    0x27b541(%rip),%edx        #
70f7b0 <PL_tmps_ix>
  49426f:    8b 3d 03 bd 27 00        mov    0x27bd03(%rip),%edi        #
70ff78 <PL_tmps_max>
  494275:    44 8b 15 3c c0 27 00     mov    0x27c03c(%rip),%r10d        #
7102b8 <PL_tmps_stack>
  49427c:    44 8d 4a 01              lea    0x1(%rdx),%r9d
  494280:    41 39 f9                 cmp    %edi,%r9d
  494283:    44 89 0d 26 b5 27 00     mov    %r9d,0x27b526(%rip)        #
70f7b0 <PL_tmps_ix>
  49428a:    7d 1c                    jge    4942a8 <Perl_sv_mortalcopy+0x88>
  49428c:    67 43 89 1c 8a           mov    %ebx,(%r10d,%r9d,4)
  494291:    67 81 4b 08 00 08 00 00     orl    $0x800,0x8(%ebx)
  494299:    83 c4 10                 add    $0x10,%esp
  49429c:    48 89 e8                 mov    %rbp,%rax
  49429f:    5b                       pop    %rbx
  4942a0:    5d                       pop    %rbp
  4942a1:    41 5c                    pop    %r12
  4942a3:    c3                       retq   
  4942a4:    0f 1f 40 00              nopl   0x0(%rax)
  4942a8:    be 00 02 00 00           mov    $0x200,%esi
  4942ad:    81 ff 00 02 00 00        cmp    $0x200,%edi
  4942b3:    41 b8 80 00 00 00        mov    $0x80,%r8d
  4942b9:    89 f1                    mov    %esi,%ecx
  4942bb:    41 0f 4c c8              cmovl  %r8d,%ecx
  4942bf:    8d 34 0f                 lea    (%rdi,%rcx,1),%esi
  4942c2:    8b 3d f0 bf 27 00        mov    0x27bff0(%rip),%edi        #
7102b8 <PL_tmps_stack>
  4942c8:    89 35 aa bc 27 00        mov    %esi,0x27bcaa(%rip)        #
70ff78 <PL_tmps_max>
  4942ce:    c1 e6 02                 shl    $0x2,%esi
  4942d1:    85 f6                    test   %esi,%esi
  4942d3:    74 2b                    je     494300 <Perl_sv_mortalcopy+0xe0>
  4942d5:    85 ff                    test   %edi,%edi
  4942d7:    74 6f                    je     494348 <Perl_sv_mortalcopy+0x128>
  4942d9:    e8 52 d6 f6 ff           callq  401930 <realloc@plt>
  4942de:    85 c0                    test   %eax,%eax
  4942e0:    74 4e                    je     494330 <Perl_sv_mortalcopy+0x110>
  4942e2:    44 8b 0d c7 b4 27 00     mov    0x27b4c7(%rip),%r9d        #
70f7b0 <PL_tmps_ix>
  4942e9:    41 89 c4                 mov    %eax,%r12d
  4942ec:    44 89 25 c5 bf 27 00     mov    %r12d,0x27bfc5(%rip)        #
7102b8 <PL_tmps_stack>
  4942f3:    45 89 e2                 mov    %r12d,%r10d
  4942f6:    eb 94                    jmp    49428c <Perl_sv_mortalcopy+0x6c>
  4942f8:    0f 1f 84 00 00 00 00 00     nopl   0x0(%rax,%rax,1)
  494300:    45 31 e4                 xor    %r12d,%r12d
  494303:    85 ff                    test   %edi,%edi
  494305:    74 e5                    je     4942ec <Perl_sv_mortalcopy+0xcc>
  494307:    e8 b4 d1 f6 ff           callq  4014c0 <free@plt>
  49430c:    44 8b 0d 9d b4 27 00     mov    0x27b49d(%rip),%r9d        #
70f7b0 <PL_tmps_ix>
  494313:    eb d7                    jmp    4942ec <Perl_sv_mortalcopy+0xcc>
  494315:    0f 1f 00                 nopl   (%rax)
  494318:    67 48 89 7c 24 08        mov    %rdi,0x8(%esp)
  49431e:    e8 2d de fe ff           callq  482150 <more_sv.lto_priv.92>
  494323:    67 48 8b 74 24 08        mov    0x8(%esp),%rsi
  494329:    89 c3                    mov    %eax,%ebx
  49432b:    e9 18 ff ff ff           jmpq   494248 <Perl_sv_mortalcopy+0x28>
  494330:    80 3d cd c2 27 00 00     cmpb   $0x0,0x27c2cd(%rip)        #
710604 <PL_nomemok>
  494337:    74 27                    je     494360 <Perl_sv_mortalcopy+0x140>
  494339:    44 8b 0d 70 b4 27 00     mov    0x27b470(%rip),%r9d        #
70f7b0 <PL_tmps_ix>
  494340:    45 31 e4                 xor    %r12d,%r12d
  494343:    eb a7                    jmp    4942ec <Perl_sv_mortalcopy+0xcc>
  494345:    0f 1f 00                 nopl   (%rax)
  494348:    89 f7                    mov    %esi,%edi
  49434a:    e8 11 9d 01 00           callq  4ae060 <Perl_safemalloc>
  49434f:    44 8b 0d 5a b4 27 00     mov    0x27b45a(%rip),%r9d        #
70f7b0 <PL_tmps_ix>
  494356:    41 89 c4                 mov    %eax,%r12d
  494359:    eb 91                    jmp    4942ec <Perl_sv_mortalcopy+0xcc>
  49435b:    0f 1f 44 00 00           nopl   0x0(%rax,%rax,1)
  494360:    8b 0d fe b8 27 00        mov    0x27b8fe(%rip),%ecx        #
70fc64 <stderr@@GLIBC_2.16>
  494366:    ba 0f 00 00 00           mov    $0xf,%edx
  49436b:    be 01 00 00 00           mov    $0x1,%esi
  494370:    bf f0 fe 4f 00           mov    $0x4ffef0,%edi
  494375:    e8 d6 d1 f6 ff           callq  401550 <fwrite@plt>
  49437a:    e8 c1 08 04 00           callq  4d4c40 <Perl_my_exit.constprop.28>
  49437f:    eb b8                    jmp    494339 <Perl_sv_mortalcopy+0x119>
  494381:    66 2e 0f 1f 84 00 00 00 00 00     nopw   %cs:0x0(%rax,%rax,1)
  49438b:    0f 1f 44 00 00           nopl   0x0(%rax,%rax,1)

This may be miscompiled.

Reply via email to