------- 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

Reply via email to