https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119428
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Before we would reject this combine: ``` Trying 12, 13 -> 14: 12: r117:QI=0xfffffffffffffffe 13: {r114:QI=r117:QI<-<r107:SI#0;clobber flags:CC;} REG_UNUSED flags:CC REG_DEAD r107:SI 14: {[r116:DI+r110:DI]=[r116:DI+r110:DI]&r114:QI;clobber flags:CC;} REG_DEAD r110:DI REG_DEAD r116:DI REG_UNUSED flags:CC REG_DEAD r114:QI Failed to match this instruction: (parallel [ (set (zero_extract:HI (mem:QI (plus:DI (reg:DI 116) (reg:DI 110 [ _2 ])) [0 *ADDR_11+0 S1 A8]) (const_int 1 [0x1]) (subreg:QI (reg/v:SI 107 [ nrD.2792 ]) 0)) (const_int 0 [0])) (clobber (reg:CC 17 flags)) (set (reg:QI 117) (const_int -2 [0xfffffffffffffffe])) ]) ``` Ass we would say r117 was not dead after 14 but now we accept it: ``` Trying 12, 13 -> 14: 12: r117:QI=0xfffffffffffffffe 13: {r114:QI=r117:QI<-<r107:SI#0;clobber flags:CC;} REG_UNUSED flags:CC REG_DEAD r117:QI REG_DEAD r107:SI 14: {[r116:DI+r110:DI]=[r116:DI+r110:DI]&r114:QI;clobber flags:CC;} REG_DEAD r110:DI REG_DEAD r116:DI REG_UNUSED flags:CC REG_DEAD r114:QI Successfully matched this instruction: (parallel [ (set (zero_extract:HI (mem:QI (plus:DI (reg/f:DI 116 [ addrD.2861 ]) (reg:DI 110 [ _2 ])) [0 *ADDR_11+0 S1 A8]) (const_int 1 [0x1]) (subreg:QI (reg/v:SI 107 [ nrD.2860 ]) 0)) (const_int 0 [0])) (clobber (reg:CC 17 flags)) ]) allowing combination of insns 12, 13 and 14 original costs 4 + 4 + 13 = 21 replacement cost 4 deferring deletion of insn with uid = 13. deferring deletion of insn with uid = 12. modifying insn i3 14: {zero_extract([r116:DI+r110:DI],0x1,r107:SI#0)=0;clobber flags:CC;} REG_DEAD r107:SI REG_UNUSED flags:CC REG_DEAD r116:DI REG_DEAD r110:DI deferring rescan insn with uid = 14. ``` So the commit looks like exposed something.