Hi all,

With r200197 the test pr46975.c now fails because the code:
 /* { dg-options "-mthumb -Os" } */
 int foo (int s)
 {
       return s == 1;
 }

now generates:
   0:   f1a0 0001       sub.w   r0, r0, #1
   4:   fab0 f080       clz     r0, r0
   8:   0940            lsrs    r0, r0, #5
   a:   4770            bx      lr

instead of:
   0:   1e43            subs    r3, r0, #1
   2:   4258            negs    r0, r3
   4:   4158            adcs    r0, r3
   6:   4770            bx      lr

This hurts code size.
Therefore I've disabled the new peephole2 for optimize_insn_for_size_p so that
the original peephole before r200197 is used when optimising for size.

I've also added a test to confirm that the new peephole2 for the non-CC
setting variants is being used when optimising for speed, since the large code
should be more efficient because the scheduler won't have to deal with
condition-code setting.

Ok for trunk?

Thanks,
Kyrill

gcc/
2013-06-21  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * config/arm/arm.md (peepholes for eq (reg1) (reg2/imm)):
        Use the flag setting variants when optimising for size.

        
gcc/testsuite/
2013-06-21  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * gcc.target/arm/pr46975-2.c: New test.

Attachment: pr46975.patch
Description: Binary data

Reply via email to