------- Additional Comments From rearnsha at gcc dot gnu dot org 2004-12-14 15:16 ------- As Andrew pointed out, the merge of the eor and the rotate is now done on mainline in 4.0. The initial redundant MOV is a register allocation artifact. This particular testcase compiles optimally with the new register allocator:
reverse: eor r3, r0, r0, ror #16 bic r3, r3, #16711680 mov r3, r3, lsr #8 eor r0, r3, r0, ror #8 bx lr but for other reasons, I wouldn't recommend you use that option (too many other bugs). -- What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Target Milestone|--- |4.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18560