possible gcse failure: not able to eliminate redundant loads
Daniel Berlin
dberlin@dberlin.org
Thu Dec 12 15:28:00 GMT 2002
On Thursday, December 12, 2002, at 05:42 PM, Richard Henderson wrote:
> On Thu, Dec 12, 2002 at 05:31:39PM -0500, David Edelsohn wrote:
>> I do not believe that the code exists, or if the code exists it is
>> disabled because it is broken in other ways, not alias.c.
>
> Yawn.
>
> int x;
> void foo()
> {
> int i;
> for (i = 0; i < 100; i++)
> x += i;
> }
>
> foo:
> movl x, %eax
> xorl %edx, %edx
> .p2align 4,,15
> .L6:
> addl %edx, %eax
> incl %edx
> cmpl $99, %edx
> jle .L6
> movl %eax, x
> ret
>
> And from the .loop dump file,
>
> Loop from 10 to 31: 6 real insns.
> Continue at insn 23.
> Hoisted regno 62 r/w from (mem/f:SI (symbol_ref:SI ("x")) [2 x+0 S4
> A32])
>
> Believe me now?
I remember someone saying that store motion should replace this, since
it subsumes it.
>
> r~
More information about the Gcc
mailing list