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]