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.

Reply via email to