This form of block move is generated by arm_gen_movmemqi(), called from the "movmemqi" expand pattern.
See the beginning of that function in arm.c, at the length value in operands[2], and you should know what to do.
Adjusting the threshold value from 64 to 16, I got:
push {lr}
sub sp, sp, #68
mov r1, r0
movs r2, #64
mov r0, sp
bl memcpy
mov r0, sp
bl foo
add sp, sp, #68
pop {pc}
This form of block move is generated by arm_gen_movmemqi(), called from the "movmemqi" expand pattern.
See the beginning of that function in arm.c, at the length value in operands[2], and you should know what to do.
Adjusting the threshold value from 64 to 16, I got:
push {lr}
sub sp, sp, #68
mov r1, r0
movs r2, #64
mov r0, sp
bl memcpy
mov r0, sp
bl foo
add sp, sp, #68
pop {pc}