[Bug rtl-optimization/18560] better optimalization of EOR/MOV block.
pluto at pld-linux dot org
gcc-bugzilla@gcc.gnu.org
Thu Feb 10 23:07:00 GMT 2005
------- Additional Comments From pluto at pld-linux dot org 2005-02-10 20:17 -------
(In reply to comment #2)
> As Andrew pointed out, the merge of the eor and the rotate is now done on
> mainline in 4.0.
Hmm, it doesn't work on my gcc.
# arm-pld-linux-gcc reversing_the_bytes_in_word.c -s -S -O2
.file "reversing_the_bytes_in_word.c"
.text
.align 2
.global reverse
.type reverse, %function
reverse:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
mov r3, r0
eor r0, r0, r0, ror #16
bic r0, r0, #16711680
mov r0, r0, lsr #8
eor r0, r0, r3, ror #8
@ lr needed for prologue
mov pc, lr
.size reverse, .-reverse
.ident "GCC: (GNU) 4.0.0 20050130 (experimental)"
> The initial redundant MOV is a register allocation artifact.
> This particular testcase compiles optimally with the new register allocator:
Is there a special option I need to set?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18560
More information about the Gcc-bugs
mailing list