[Bug c/56143] New: Incorrect code generation with -O0 in x86_64
pcpa at mandriva dot com.br
gcc-bugzilla@gcc.gnu.org
Wed Jan 30 01:59:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143
Bug #: 56143
Summary: Incorrect code generation with -O0 in x86_64
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: pcpa@mandriva.com.br
Created attachment 29303
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29303
lightning.i
$ rpm -q gcc
gcc-4.8.0-0.6.fc19.x86_64
I could not create a reduced example that would trigger the bug.
Attached is the .i file.
Search for "*_jit->pc.ui++ = i0 - (_jit->pc.w + 4);" for the two
occurrences of bad code generation.
If I modify the code to somewhat like:
"long w = i0 - (_jit->pc.w + 4); *_jit->pc.ui++ = w;" it works.
Some extra information just in case...
$ git clone git://git.savannah.gnu.org/lightning.git
$ cd lightning
$ autoreconf -ifs
$ ./configure --prefix=/usr
$ make CFLAGS="-O0 -g3 -Wall"
$ cd check
$ make debug
(gdb) r -v fib.tst
0x7ffff7bff000 jmpq 0x7ffff7bff068 main:fib.tst:28
0x7ffff7bff005 nopl (%rax)
# nfibs:fib.tst:9
0x7ffff7bff008 sub $0x30,%rsp
0x7ffff7bff00c mov %rbx,0x28(%rsp)
0x7ffff7bff011 mov %rbp,(%rsp)
0x7ffff7bff015 mov %rsp,%rbp
0x7ffff7bff018 sub $0x18,%rsp
0x7ffff7bff01c mov %rdi,%r11
0x7ffff7bff01f mov $0x1,%r10d
0x7ffff7bff025 cmp $0x2,%r11
0x7ffff7bff029 jb 0x7ffff7bff050 nfibs:fib.tst:23
0x7ffff7bff02f sub $0x1,%r11
0x7ffff7bff033 mov $0x1,%eax
# nfibs:fib.tst:17
0x7ffff7bff038 sub $0x1,%r11
0x7ffff7bff03c lea (%rax,%r10,1),%rbx
0x7ffff7bff040 mov %r10,%rax
0x7ffff7bff043 lea 0x1(%rbx),%r10
0x7ffff7bff047 test %r11,%r11
0x7ffff7bff04a jne 0x7ffff7bff034 nfibs:fib.tst:9 <<<< error here
# nfibs:fib.tst:23
[...]
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bff034 in ?? ()
It did miscalculate the displacement, should have been
jne 0x7ffff7bff038
what happens if creating a temporary.
More information about the Gcc-bugs
mailing list