------- 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