https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99927

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Trying 105, 107 -> 108:
  105: r135:QI=0x1
  107: flags:CCZ=cmp(r107:SI,0)
  108: r96:QI={(flags:CCZ==0)?r107:SI#0:r135:QI}
      REG_DEAD r107:SI
      REG_DEAD flags:CC
Failed to match this instruction:
(parallel [
        (set (reg:QI 96 [ var_lsm_flag.12 ])
            (subreg:QI (reg:SI 107) 0))
        (set (reg:QI 135)
            (const_int 1 [0x1]))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:QI 96 [ var_lsm_flag.12 ])
            (subreg:QI (reg:SI 107) 0))
        (set (reg:QI 135)
            (const_int 1 [0x1]))
    ])
Successfully matched this instruction:
(set (reg:QI 135)
    (const_int 1 [0x1]))
Successfully matched this instruction:
(set (reg:QI 96 [ var_lsm_flag.12 ])
    (subreg:QI (reg:SI 107) 0))
allowing combination of insns 105, 107 and 108
original costs 4 + 4 + 8 = 16
replacement costs 4 + 4 = 8
deferring deletion of insn with uid = 105.
modifying insn i2   107: r135:QI=0x1
deferring rescan insn with uid = 107.
modifying insn i3   108: r96:QI=r107:SI#0
      REG_DEAD r107:SI
deferring rescan insn with uid = 108.

note that insn 107 was the CC setter for the if-then-else but we now have
a plain move there.

Reply via email to