------- Comment #1 from steven at gcc dot gnu dot org 2007-02-21 15:53 -------
On i686, this happens too, due to fwprop1:
In insn 47, replacing
(mem/s:SI (plus:SI (plus:SI (mult:SI (reg:SI 75 [ ivtmp.37 ])
(const_int 4 [0x4]))
(reg/f:SI 91))
(const_int -4 [0xfffffffffffffffc])) [3 a S4 A8])
with (mem/s:SI (plus:SI (plus:SI (mult:SI (reg:SI 75 [ ivtmp.37 ])
(const_int 4 [0x4]))
(reg/f:SI 20 frame))
(const_int -404 [0xfffffffffffffe6c])) [3 a S4 A8])
defering rescan insn with uid = 47.
This results in different code between trunk and the df-branch:
-- trunk
++ df-branch
@@ -12,7 +12,6 @@
movl %eax, %ebx
call bar
movl 12(%ebp), %eax
- leal -404(%ebp), %ecx
movl s(,%eax,4), %edx
movl 8(%ebp), %eax
addl s(,%eax,4), %edx
@@ -28,11 +27,12 @@
addl s(,%ebx,4), %edx
.p2align 4,,7
.L2:
- movl %edx, -4(%ecx,%eax,4)
+ movl %edx, -408(%ebp,%eax,4)
addl $1, %eax
cmpl $101, %eax
jne .L2
- movl %ecx, (%esp)
+ leal -404(%ebp), %eax
+ movl %eax, (%esp)
call foo
addl $404, %esp
popl %ebx
--
steven at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bonzini at gnu dot org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2007-02-21 15:53:40
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30907