Get rid of the isKillInst predicate. LiveVariables already provides this information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp
index da5170a..c7809c7 100644
--- a/lib/CodeGen/StrongPHIElimination.cpp
+++ b/lib/CodeGen/StrongPHIElimination.cpp
@@ -298,22 +298,18 @@
return false;
}
-/// isKillInst - helper method that determines, from a VarInfo, if an
-/// instruction kills a given register
-static bool isKillInst(LiveVariables::VarInfo& V, MachineInstr* MI) {
- return std::find(V.Kills.begin(), V.Kills.end(), MI) != V.Kills.end();
-}
-
/// interferes - checks for local interferences by scanning a block. The only
/// trick parameter is 'mode' which tells it the relationship of the two
/// registers. 0 - defined in the same block, 1 - first properly dominates
/// second, 2 - second properly dominates first
-static bool interferes(LiveVariables::VarInfo& First,
- LiveVariables::VarInfo& Second,
- MachineBasicBlock* scan, unsigned mode) {
+static bool interferes(unsigned a, unsigned b, MachineBasicBlock* scan,
+ LiveVariables& LV, unsigned mode) {
MachineInstr* def = 0;
MachineInstr* kill = 0;
+ LiveVariables::VarInfo& First = LV.getVarInfo(a);
+ LiveVariables::VarInfo& Second = LV.getVarInfo(b);
+
bool interference = false;
// Wallk the block, checking for interferences
@@ -350,10 +346,10 @@
break;
}
// Store KillInsts if they match up with the DefInst
- } else if (isKillInst(First, curr)) {
+ } else if (LV.KillsRegister(curr, a)) {
if (def == First.DefInst) {
kill = curr;
- } else if (isKillInst(Second, curr)) {
+ } else if (LV.KillsRegister(curr, b)) {
if (def == Second.DefInst) {
kill = curr;
}
@@ -372,7 +368,7 @@
break;
}
// Save KillInsts of First
- } else if (isKillInst(First, curr)) {
+ } else if (LV.KillsRegister(curr, a)) {
kill = curr;
}
// Symmetric with the above
@@ -385,7 +381,7 @@
interference = false;
break;
}
- } else if (isKillInst(Second, curr)) {
+ } else if (LV.KillsRegister(curr, b)) {
kill = curr;
}
}
@@ -468,7 +464,7 @@
}
// If there's an interference, we need to insert copies
- if (interferes(FirstInfo, SecondInfo, scan, mode)) {
+ if (interferes(p.first, p.second, scan, LV, mode)) {
// Insert copies for First
for (int i = P->getNumOperands() - 1; i >= 2; i-=2) {
if (P->getOperand(i-1).getReg() == p.first) {