https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118739
--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Sam James from comment #10)
> r15-268-g9dbff9c05520a7
This commit just prevents the transformation in Comment #11 from happening,
because it skips an early combination of:
Trying 15 -> 16:
15: flags:CCNO=cmp(r115:SI,0)
REG_DEAD r115:SI
16: r106:QI=flags:CCNO>0
Failed to match this instruction:
(parallel [
(set (reg:QI 106 [ _37 ])
(subreg:QI (reg:SI 115 [ _1 ]) 0))
(set (reg:CCNO 17 flags)
(compare:CCNO (reg:SI 115 [ _1 ])
(const_int 0 [0])))
])
Failed to match this instruction:
(parallel [
(set (reg:QI 106 [ _37 ])
(subreg:QI (reg:SI 115 [ _1 ]) 0))
(set (reg:CCNO 17 flags)
(compare:CCNO (reg:SI 115 [ _1 ])
(const_int 0 [0])))
])
Successfully matched this instruction:
(set (reg:CCNO 17 flags)
(compare:CCNO (reg:SI 115 [ _1 ])
(const_int 0 [0])))
Successfully matched this instruction:
(set (reg:QI 106 [ _37 ])
(subreg:QI (reg:SI 115 [ _1 ]) 0))
allowing combination of insns 15 and 16
original costs 4 + 4 = 8
replacement costs 4 + 4 = 8
i2 didn't change, not doing this