[Bug tree-optimization/94026] combine missed opportunity to simplify comparisons with zero
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 24 18:07:35 GMT 2022
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?
More information about the Gcc-bugs
mailing list