Simplify the LiveRangeEdit::canRematerializeAt() interface a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118661 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LiveRangeEdit.cpp b/lib/CodeGen/LiveRangeEdit.cpp
index bbcc07c..3c7d9f6 100644
--- a/lib/CodeGen/LiveRangeEdit.cpp
+++ b/lib/CodeGen/LiveRangeEdit.cpp
@@ -88,36 +88,29 @@
return true;
}
-LiveRangeEdit::Remat LiveRangeEdit::canRematerializeAt(VNInfo *ParentVNI,
- SlotIndex UseIdx,
- bool cheapAsAMove,
- LiveIntervals &lis) {
+bool LiveRangeEdit::canRematerializeAt(Remat &RM,
+ SlotIndex UseIdx,
+ bool cheapAsAMove,
+ LiveIntervals &lis) {
assert(scannedRemattable_ && "Call anyRematerializable first");
- Remat RM = { 0, 0 };
-
- // We could remat an undefined value as IMPLICIT_DEF, but all that should have
- // been taken care of earlier.
- if (!(RM.ParentVNI = parent_.getVNInfoAt(UseIdx)))
- return RM;
// Use scanRemattable info.
if (!remattable_.count(RM.ParentVNI))
- return RM;
+ return false;
// No defining instruction.
- MachineInstr *OrigMI = lis.getInstructionFromIndex(RM.ParentVNI->def);
- assert(OrigMI && "Defining instruction for remattable value disappeared");
+ RM.OrigMI = lis.getInstructionFromIndex(RM.ParentVNI->def);
+ assert(RM.OrigMI && "Defining instruction for remattable value disappeared");
// If only cheap remats were requested, bail out early.
- if (cheapAsAMove && !OrigMI->getDesc().isAsCheapAsAMove())
- return RM;
+ if (cheapAsAMove && !RM.OrigMI->getDesc().isAsCheapAsAMove())
+ return false;
// Verify that all used registers are available with the same values.
- if (!allUsesAvailableAt(OrigMI, RM.ParentVNI->def, UseIdx, lis))
- return RM;
+ if (!allUsesAvailableAt(RM.OrigMI, RM.ParentVNI->def, UseIdx, lis))
+ return false;
- RM.OrigMI = OrigMI;
- return RM;
+ return true;
}
SlotIndex LiveRangeEdit::rematerializeAt(MachineBasicBlock &MBB,