[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:39:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70566

--- Comment #6 from ktkachov at gcc dot gnu.org ---
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


More information about the Gcc-bugs mailing list