mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-08 19:25:47 +00:00
Move the check whether it's worth remating to caller.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55434 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -714,8 +714,6 @@ bool MachineInstr::isSafeToMove(const TargetInstrInfo *TII, bool &SawStore) {
|
|||||||
/// isSafeToReMat - Return true if it's safe to rematerialize the specified
|
/// isSafeToReMat - Return true if it's safe to rematerialize the specified
|
||||||
/// instruction which defined the specified register instead of copying it.
|
/// instruction which defined the specified register instead of copying it.
|
||||||
bool MachineInstr::isSafeToReMat(const TargetInstrInfo *TII, unsigned DstReg) {
|
bool MachineInstr::isSafeToReMat(const TargetInstrInfo *TII, unsigned DstReg) {
|
||||||
if (!TID->isAsCheapAsAMove())
|
|
||||||
return false;
|
|
||||||
bool SawStore = false;
|
bool SawStore = false;
|
||||||
if (!isSafeToMove(TII, SawStore))
|
if (!isSafeToMove(TII, SawStore))
|
||||||
return false;
|
return false;
|
||||||
@@ -726,7 +724,7 @@ bool MachineInstr::isSafeToReMat(const TargetInstrInfo *TII, unsigned DstReg) {
|
|||||||
// FIXME: For now, do not remat any instruction with register operands.
|
// FIXME: For now, do not remat any instruction with register operands.
|
||||||
// Later on, we can loosen the restriction is the register operands have
|
// Later on, we can loosen the restriction is the register operands have
|
||||||
// not been modified between the def and use. Note, this is different from
|
// not been modified between the def and use. Note, this is different from
|
||||||
// MachineSink because the code in no longer in two-address form (at least
|
// MachineSink because the code is no longer in two-address form (at least
|
||||||
// partially).
|
// partially).
|
||||||
if (MO.isUse())
|
if (MO.isUse())
|
||||||
return false;
|
return false;
|
||||||
|
@@ -403,6 +403,7 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) {
|
|||||||
// If it's safe and profitable, remat the definition instead of
|
// If it's safe and profitable, remat the definition instead of
|
||||||
// copying it.
|
// copying it.
|
||||||
if (DefMI &&
|
if (DefMI &&
|
||||||
|
DefMI->getDesc().isAsCheapAsAMove() &&
|
||||||
DefMI->isSafeToReMat(TII, regB) &&
|
DefMI->isSafeToReMat(TII, regB) &&
|
||||||
isProfitableToReMat(regB, rc, mi, DefMI, mbbi, Dist,DistanceMap)){
|
isProfitableToReMat(regB, rc, mi, DefMI, mbbi, Dist,DistanceMap)){
|
||||||
DEBUG(cerr << "2addr: REMATTING : " << *DefMI << "\n");
|
DEBUG(cerr << "2addr: REMATTING : " << *DefMI << "\n");
|
||||||
|
Reference in New Issue
Block a user