http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58653
Mikael Pettersson <mikpelinux at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mikpelinux at gmail dot com --- Comment #3 from Mikael Pettersson <mikpelinux at gmail dot com> --- 4.4.7 works, 4.5.4 fails, started with r148352 which moved the predcom pass down a bit (it was just before tree unswitching before this revision). The code generation difference for this test case at this revision looks completely bonkers (huge addressing offsets are added, causing the SEGV): --- pr58653.s-r148351 2013-10-11 16:44:28.999007628 +0200 +++ pr58653.s-r148352 2013-10-11 16:41:15.659132274 +0200 @@ -7,18 +7,18 @@ .LFB0: .cfi_startproc movl c(%rip), %eax - movl a(%rip), %ecx - leal 3(%rax), %edx + movl a(%rip), %edx addl $4, %eax - testl %ecx, %ecx + testl %edx, %edx jne .L2 - movslq %edx, %rdx cltq - movl e(,%rdx,8), %ecx - testl %ecx, e(,%rax,8) + movabsq $e+17179869180, %rdx + movl (%rdx,%rax,8), %ecx + leaq 2147483647(%rax), %rdx + movl e(,%rdx,8), %edx + testl %edx, e(,%rax,8) jne .L5 - movl e+4(,%rax,8), %eax - testl %eax, e+4(,%rdx,8) + testl %ecx, e+4(,%rax,8) jne .L6 .L2: movl $2, d(%rip)