http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58685
Mikael Pettersson <mikpelinux at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bernds at gcc dot gnu.org,
| |mikpelinux at gmail dot com
--- Comment #1 from Mikael Pettersson <mikpelinux at gmail dot com> ---
Started with r179553, -fshrink-wrap introduction and enabling on x86. Adding
-fno-shrink-wrap avoids the bug. Author CC:d.
The code generation differences on this test case at this revision show no
control flow changes but some register save/restore changes:
--- pr58685.s-r179552 2013-10-11 12:46:05.717857352 +0200
+++ pr58685.s-r179553 2013-10-11 12:49:52.847494641 +0200
@@ -45,13 +45,11 @@
fn3:
.LFB2:
.cfi_startproc
- pushq %r8
- .cfi_def_cfa_offset 16
movl $0, b(%rip)
jmp .L7
.L9:
- movl $0, e(%rip)
cmpl $0, (%rdi)
+ movl $0, e(%rip)
jne .L8
movl $1, e(%rip)
.L8:
@@ -61,6 +59,8 @@
movl b(%rip), %eax
testl %eax, %eax
jns .L9
+ pushq %rdi
+ .cfi_def_cfa_offset 16
xorl %eax, %eax
call fn1
cmpl $0, c(%rip)
@@ -81,7 +81,7 @@
main:
.LFB3:
.cfi_startproc
- pushq %r10
+ pushq %r9
.cfi_def_cfa_offset 16
movq g(%rip), %rdi
call fn3
@@ -94,7 +94,7 @@
call __assert_fail
.L12:
xorl %eax, %eax
- popq %r9
+ popq %r8
.cfi_def_cfa_offset 8
ret
.cfi_endproc