This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/39715] [4.5 Regression][cond-optab] extra sign extensions on Thumb



------- Comment #1 from rearnsha at gcc dot gnu dot org  2009-05-21 10:49 -------
Another case, compile with -mcpu=arm1136jf-s -mthumb -O2 

void f(unsigned a, unsigned b, unsigned c, unsigned d)
{
  if (a <= b || c > d)
    foo();
  else
    bar();
}


f:
        push    {r4, lr}
        cmp     r3, r2
        sbc     r2, r2, r2  @ r2 = 0 or -1
        neg     r2, r2      @ r2 = 0 or 1
        cmp     r2, #0
        beq     .L7
.L5:
        bl      foo
.L1:
        @ sp needed for prologue
        pop     {r4, pc}
.L7:
        cmp     r1, r0      @ r2 = 0 (by flow control)
        adc     r2, r2, r2  @ r2 = 0 / 1
        uxtb    r2, r2      @ so this is redundant
        cmp     r2, #0
        bne     .L5
        bl      bar
        b       .L1


-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-05-21 10:49:12
               date|                            |


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]