https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118638
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The wrong combination is the
Trying 9, 10 -> 17:
9: r107:SI=flags:CCZ!=0
REG_DEAD flags:CCZ
10: r107:SI=r107:SI*0x2+r107:SI
17: {r111:SI=sign_extract(r107:SI,0x1,0);clobber flags:CC;}
REG_DEAD r107:SI
REG_UNUSED flags:CC
Failed to match this instruction:
(parallel [
(set (reg:SI 111 [ _10 ])
(mult:SI (ne:SI (reg:CCZ 17 flags)
(const_int 0 [0]))
(const_int 3 [0x3])))
(clobber (reg:CC 17 flags))
])
one (while it failed, as can be seen, the attempted expression is not
equivalent to the
original ones and we then split it and match the two split parts).