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)