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

--- Comment #10 from Segher Boessenkool <segher at gcc dot gnu.org> ---
So on Arm we get

Trying 6 -> 8:
    6: r119:SI=r123:SI>>0x8
      REG_DEAD r123:SI
    8: {cc:CC_NZ=cmp(r119:SI&0x6,0);clobber scratch;}
      REG_DEAD r119:SI
Failed to match this instruction:
(parallel [
        (set (reg:CC_NZ 100 cc)
            (compare:CC_NZ (and:SI (lshiftrt:SI (reg:SI 123)
                        (const_int 8 [0x8]))
                    (const_int 6 [0x6]))
                (const_int 0 [0])))
        (clobber (scratch:SI))
    ])
Failed to match this instruction:
(set (reg:CC_NZ 100 cc)
    (compare:CC_NZ (and:SI (lshiftrt:SI (reg:SI 123)
                (const_int 8 [0x8]))
            (const_int 6 [0x6]))
        (const_int 0 [0])))

instead of something like

(set (reg:CC_NZ 100 cc)
     (compare:CC_NZ (and:SI (reg:SI 123)
                            (const_int 1536))
                    (const_int 0)))

which is correct for every CC mode even, not just NZ?

Reply via email to