factor some logic out into a helper function, allow remat of loads from constant
[oota-llvm.git] / lib / CodeGen / PHIElimination.cpp
index 67c555fd17f8fd314877cd5fb7cf8642e80a8c63..c5c76fc79467d99fd1fb63b89cc9bf08df70e402 100644 (file)
@@ -249,8 +249,6 @@ void PNE::LowerAtomicPHINode(MachineBasicBlock &MBB,
       // each for each incoming block), the "def" block and instruction fields
       // for the VarInfo is not filled in.
       LV->addVirtualRegisterKilled(IncomingReg, PHICopy);
-
-      LV->getVarInfo(IncomingReg).UsedBlocks[MBB.getNumber()] = true;
     }
 
     // Since we are going to be deleting the PHI node, if it is the last use of
@@ -317,7 +315,6 @@ void PNE::LowerAtomicPHINode(MachineBasicBlock &MBB,
     // variables information so that it knows the copy source instruction kills
     // the incoming value.
     LiveVariables::VarInfo &InRegVI = LV->getVarInfo(SrcReg);
-    InRegVI.UsedBlocks[opBlock.getNumber()] = true;
 
     // Loop over all of the successors of the basic block, checking to see if
     // the value is either live in the block, or if it is killed in the block.
@@ -337,8 +334,7 @@ void PNE::LowerAtomicPHINode(MachineBasicBlock &MBB,
 
       // Is it alive in this successor?
       unsigned SuccIdx = SuccMBB->getNumber();
-      if (SuccIdx < InRegVI.AliveBlocks.size() &&
-          InRegVI.AliveBlocks[SuccIdx]) {
+      if (InRegVI.AliveBlocks.test(SuccIdx)) {
         ValueIsLive = true;
         break;
       }
@@ -410,8 +406,7 @@ void PNE::LowerAtomicPHINode(MachineBasicBlock &MBB,
 
       // This vreg no longer lives all of the way through opBlock.
       unsigned opBlockNum = opBlock.getNumber();
-      if (opBlockNum < InRegVI.AliveBlocks.size())
-        InRegVI.AliveBlocks[opBlockNum] = false;
+      InRegVI.AliveBlocks.reset(opBlockNum);
     }
   }