http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50569
Mikael Pettersson <mikpe at it dot uu.se> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jamborm at gcc dot gnu.org --- Comment #8 from Mikael Pettersson <mikpe at it dot uu.se> 2011-11-04 20:57:51 UTC --- The regression started with r164136: http://gcc.gnu.org/ml/gcc-cvs/2010-09/msg00428.html Comparing the ARM assembly code from r164135 and r164136 on the reduced test case clearly shows the error: --- pr50569.s-r164135 2011-11-04 21:06:58.000000000 +0100 +++ pr50569.s-r164136 2011-11-04 21:10:48.000000000 +0100 @@ -17,19 +17,10 @@ @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. - ldrb r2, [r0, #1] @ zero_extendqisi2 - ldrb r3, [r0, #0] @ zero_extendqisi2 - ldrb r1, [r0, #2] @ zero_extendqisi2 - orr r3, r3, r2, asl #8 - ldrb r2, [r0, #3] @ zero_extendqisi2 - orr r3, r3, r1, asl #16 - orr r3, r3, r2, asl #24 + ldr r3, [r0, #0] cmp r3, #63 mvnls r3, #0 - strlsb r3, [r0, #0] - strlsb r3, [r0, #1] - strlsb r3, [r0, #2] - strlsb r3, [r0, #3] + strls r3, [r0, #0] bx lr .size frob_entry, .-frob_entry .align 2