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

Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ebotcazou at gcc dot gnu.org

--- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
Trying 6 -> 7:
    6: r109:QI=[%i0:SI]
      REG_DEAD %i0:SI
    7: r112:SI=zero_extend(r109:QI)
Failed to match this instruction:
(parallel [
        (set (reg:SI 112 [ _1+-3 ])
            (zero_extend:SI (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1
A8])))
        (set (reg:QI 109 [ _1 ])
            (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1 A8]))
    ])
Failed to match this instruction:
(parallel [
        (set (reg:SI 112 [ _1+-3 ])
            (zero_extend:SI (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1
A8])))
        (set (reg:QI 109 [ _1 ])
            (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1 A8]))
    ])
Successfully matched this instruction:
(set (reg:QI 109 [ _1 ])
    (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1 A8]))
Successfully matched this instruction:
(set (reg:SI 112 [ _1+-3 ])
    (zero_extend:SI (mem/v:QI (reg:SI 24 %i0 [ a ]) [0 *a_5(D)+0 S1 A8])))
allowing combination of insns 6 and 7
original costs 4 + 4 = 8
replacement costs 4 + 4 = 8
modifying insn i2     6: r109:QI=[%i0:SI]
deferring rescan insn with uid = 6.
modifying insn i3     7: r112:SI=zero_extend([%i0:SI])
      REG_DEAD %i0:SI
deferring rescan insn with uid = 7.

This should probably have been prevented in two different ways: 1) the volatile
load and 2) the equal cost for a 2->2 combination.

Reply via email to