------- Comment #1 from ramana at gcc dot gnu dot org  2010-04-28 10:10 -------
On trunk I don't see the movne / moveq problem but the extra mov r3, #1 could
be removed. (I think one of Bernd's recent fixes to ifcvt.c fixed these
issues). 



        tst     r1, #1
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #2
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #4
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #8
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #16
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #32
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #64
        mov     r3, #1
        streq   r3, [r0, #4]
        strne   r3, [r0, #0]
        tst     r1, #128
        mov     r3, #1
        strne   r3, [r0, #0]
        streq   r3, [r0, #4]
        bx      lr


-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |missed-optimization
      Known to fail|                            |4.5.0
   Last reconfirmed|0000-00-00 00:00:00         |2010-04-28 10:10:19
               date|                            |
            Summary|Very poor code generation   |[4.5 only] Unnecessary
                   |(unnecessary conditionals   |conditionals
                   |and reloads) for ARM        |


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

Reply via email to