Get rid of the isKillInst predicate. LiveVariables already provides this information.
authorOwen Anderson <resistor@mac.com>
Thu, 10 Jan 2008 00:33:11 +0000 (00:33 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 10 Jan 2008 00:33:11 +0000 (00:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/StrongPHIElimination.cpp

index da5170af637d4eb3f8a82161c100d434e239201e..c7809c75b702a980842f099bd277551e7c494e2e 100644 (file)
@@ -298,22 +298,18 @@ static bool isLiveOut(LiveVariables::VarInfo& V, MachineBasicBlock* MBB) {
   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 @@ static bool interferes(LiveVariables::VarInfo& First,
           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 @@ static bool interferes(LiveVariables::VarInfo& First,
           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 @@ static bool interferes(LiveVariables::VarInfo& First,
           interference = false;
           break;
         }
-      } else if (isKillInst(Second, curr)) {
+      } else if (LV.KillsRegister(curr, b)) {
         kill = curr;
       }
     }
@@ -468,7 +464,7 @@ void StrongPHIElimination::processBlock(MachineBasicBlock* MBB) {
       }
       
       // 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) {