[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