[Bug target/70566] [4.9/5/6 Regression] Bad ARM code generated for evaluating unsigned int bitfield value
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 7 09:50:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70566
--- Comment #8 from ktkachov at gcc dot gnu.org ---
(In reply to Richard Earnshaw from comment #7)
> (In reply to ktkachov from comment #6)
> > Ah, on second glance the peephole looks correct in itself, but the second
> > branch following the bmi uses an incorrect condition code.
> > So we have:
> > tst r3, #2
> > bne .L3
> > beq .L6
> >
> > being transformed into:
> > ldrb r3, [r0] @ zero_extendqisi2
> > lsls r3, r3, #30
> > bmi .L3
> > beq .L6
> >
> >
> > The beq needs to be updated to be the opposite of bmi. That is, bpl
>
> Sounds like the peephole is missing a reg-dead check on the condition code
> value.
Yep, that seems to do the trick. I'll test a patch.
Thanks Richard.
More information about the Gcc-bugs
mailing list