[Bug middle-end/59409] [4.9 Regression] 253.perlbmk in SPEC CPU 2K is miscompiled
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Dec 7 16:20:00 GMT 2013
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.
More information about the Gcc-bugs
mailing list