This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/18560] better optimalization of EOR/MOV block.
- From: "pluto at pld-linux dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Feb 2005 20:17:56 -0000
- Subject: [Bug rtl-optimization/18560] better optimalization of EOR/MOV block.
- References: <20041119081318.18560.pluto@pld-linux.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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