[Bug target/39715] [4.5 Regression][cond-optab] extra sign extensions on Thumb
rearnsha at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu May 21 10:49:00 GMT 2009
------- 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
More information about the Gcc-bugs
mailing list