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