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.

Reply via email to