------- Comment #2 from ramana at gcc dot gnu dot org  2010-01-04 10:54 -------
Confirmed with trunk I get 

longfunc:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        mul     r1, r2, r1
        mla     r1, r0, r3, r1
        stmfd   sp!, {r4, r5}
        umull   r4, r5, r2, r0
        add     r1, r1, r5
        mov     r0, r4
        mov     r5, r1
        ldmfd   sp!, {r4, r5}
        bx      lr

r4 and r5 need not be used here  - you could do with just r2 and r3 instead of
r4 and r5 here 

i.e.
        mul     r1, r2, r1
        mla     r1, r0, r3, r1
        umull   r2, r3, r2, r0
        add     r1, r1, r3
        mov     r0, r2
        bx      lr


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|target                      |rtl-optimization
     Ever Confirmed|0                           |1
           Keywords|                            |missed-optimization, ra
   Last reconfirmed|0000-00-00 00:00:00         |2010-01-04 10:54:28
               date|                            |
            Summary|arm-eabi-gcc 4.2.1 64-bit   |arm-eabi-gcc 64-bit multiply
                   |multiply weirdness          |weirdness


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42575

Reply via email to