------- Comment #5 from alexandre dot nunes at gmail dot com 2009-04-14 20:07 ------- See the attached pqp.c file.
With gcc 4.3.3, on such simplistic examples, peephole ldm and stm works: sum: ldr r2, .L3 ldmia r2, {r1, r3} @ phole ldm add r3, r0, r3 add r0, r0, r1 stmia r2, {r0, r3} @ phole stm bx lr With gcc 4.4.0 branch, built on 20090413, it fails: sum: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. ldr r3, .L3 ldr r2, [r3, #0] ldr r1, [r3, #4] add r2, r0, r2 add r1, r0, r1 str r1, [r3, #4] str r2, [r3, #0] bx lr -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9831