[Bug target/46483] Built-in memcpy() does not handle unaligned int for ARM

mikpe at it dot uu.se gcc-bugzilla@gcc.gnu.org
Tue Nov 16 13:44:00 GMT 2010


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

--- Comment #11 from Mikael Pettersson <mikpe at it dot uu.se> 2010-11-16 13:40:32 UTC ---
The test cases work with gcc-4.3.5.  For arm it generates the following for the
__builtin_memcpy case:

set_by_memcpy:
        @ args = 0, pretend = 0, frame = 8
        @ frame_needed = 0, uses_anonymous_args = 0
        str     lr, [sp, #-4]!
        sub     sp, sp, #12
        add     r3, sp, #8
        str     r1, [r3, #-4]!
        mov     r1, r3
        mov     r2, #4
        add     r0, r0, #1
        bl      memcpy
        add     sp, sp, #12
        ldmfd   sp!, {pc}

and for sparc it generates:

set_by_memcpy:
        st      %o1, [%sp+72]
        ldub    [%sp+72], %g1
        add     %sp, 72, %g3
        stb     %g1, [%o0+1]
        ldub    [%g3+3], %g1
        add     %o0, 1, %o0
        stb     %g1, [%o0+3]
        ldub    [%g3+1], %g2
        stb     %g2, [%o0+1]
        ldub    [%g3+2], %g1
        jmp     %o7+8
         stb    %g1, [%o0+2]



More information about the Gcc-bugs mailing list