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