[Bug target/40730] redundant memory load
carrot at google dot com
gcc-bugzilla@gcc.gnu.org
Mon Jan 11 08:56:00 GMT 2010
------- Comment #12 from carrot at google dot com 2010-01-11 08:55 -------
(In reply to comment #11)
> Yes, I would have expected the block starting with .L4 to be *after*
> the block starting with .L5, something like so:
>
> iterate:
> push {lr}
> ldr r3, [r1]
> .L6:
> str r3, [r0]
> sub r2, r3, #0
> beq .L3
> .L5:
> ldr r1, [r3, #4]
> cmp r1, #0
> bne .L3
> ldr r3, [r3, #8]
> b .L6
> .L3:
> str r2, [r0, #12]
> @ sp needed for prologue
> pop {pc}
>
> Does that look correct? And if so, could you see if there is an open
> bug report about this; or otherwise file a new PR and add me to the
> CC-list?
>
It is correct. The basic block ordering issue (-Os) has been observed several
times. Following are related PRs:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41004
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41396
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40730
More information about the Gcc-bugs
mailing list