http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58041

Mikael Pettersson <mikpe at it dot uu.se> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wschmidt at gcc dot gnu.org

--- Comment #4 from Mikael Pettersson <mikpe at it dot uu.se> ---
Started with Bill Schmidt's PR46556 patch in r190037.  (Author CC:d.)

Comparing the generated code between 190036 and 190037 clearly shows how the
misaligned accesses were wrongly replaced by aligned accesses:

--- pr58041.s-r190036   2013-08-01 13:30:59.264514025 +0200
+++ pr58041.s-r190037   2013-08-01 13:27:38.874840851 +0200
@@ -18,37 +18,11 @@
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
-       stmfd   sp!, {r4, r5, r6, r7, r8, r9, r10, fp}
        add     ip, r0, r1, asl #3
-       ldrb    r7, [ip, #2]    @ zero_extendqisi2
-       ldrb    r6, [ip, #6]    @ zero_extendqisi2
-       ldrb    r0, [ip, #1]    @ zero_extendqisi2
-       ldrb    r1, [ip, #5]    @ zero_extendqisi2
-       ldrb    r5, [ip, #3]    @ zero_extendqisi2
-       ldrb    r4, [ip, #7]    @ zero_extendqisi2
-       orr     r0, r0, r7, asl #8
-       orr     r1, r1, r6, asl #8
-       ldrb    r10, [ip, #4]   @ zero_extendqisi2
-       ldrb    r6, [ip, #8]    @ zero_extendqisi2
-       mov     fp, r2, lsr #8
-       orr     r0, r0, r5, asl #16
-       mov     r9, r2, lsr #16
-       mov     r8, r2, lsr #24
-       mov     r7, r3, lsr #8
-       orr     r1, r1, r4, asl #16
-       mov     r5, r3, lsr #16
-       mov     r4, r3, lsr #24
-       strb    fp, [ip, #2]
-       strb    r2, [ip, #1]
-       strb    r9, [ip, #3]
-       strb    r8, [ip, #4]
-       strb    r7, [ip, #6]
-       strb    r3, [ip, #5]
-       strb    r5, [ip, #7]
-       strb    r4, [ip, #8]
-       orr     r0, r0, r10, asl #24
-       orr     r1, r1, r6, asl #24
-       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, r10, fp}
+       ldr     r0, [ip, #1]
+       ldr     r1, [ip, #5]
+       str     r2, [ip, #1]
+       str     r3, [ip, #5]
        bx      lr
        .size   foo, .-foo
        .section        .text.startup,"ax",%progbits

Reply via email to