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