diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index cdcebfc..f687675 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -292,7 +292,7 @@
     if (interval.empty()) {
         for (unsigned i = 0, e = vi.AliveBlocks.size(); i != e; ++i) {
             if (vi.AliveBlocks[i]) {
-                MachineBasicBlock* mbb = lv_->getIndexMachineBasicBlock(i);
+                MachineBasicBlock* mbb = mf_->getBlockNumbered(i);
                 if (!mbb->empty()) {
                     interval.addRange(
                         getInstructionIndex(&mbb->front()),
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp
index 0edb307..cc924c3 100644
--- a/lib/CodeGen/LiveVariables.cpp
+++ b/lib/CodeGen/LiveVariables.cpp
@@ -37,22 +37,6 @@
 
 static RegisterAnalysis<LiveVariables> X("livevars", "Live Variable Analysis");
 
-/// getIndexMachineBasicBlock() - Given a block index, return the
-/// MachineBasicBlock corresponding to it.
-MachineBasicBlock *LiveVariables::getIndexMachineBasicBlock(unsigned Idx) {
-  if (BBIdxMap.empty()) {
-    BBIdxMap.resize(BBMap.size());
-    for (std::map<MachineBasicBlock*, unsigned>::iterator I = BBMap.begin(),
-           E = BBMap.end(); I != E; ++I) {
-      assert(BBIdxMap.size() > I->second && "Indices are not sequential");
-      assert(BBIdxMap[I->second] == 0 && "Multiple idx collision!");
-      BBIdxMap[I->second] = I->first;
-    }
-  }
-  assert(Idx < BBIdxMap.size() && "BB Index out of range!");
-  return BBIdxMap[Idx];
-}
-
 LiveVariables::VarInfo &LiveVariables::getVarInfo(unsigned RegIdx) {
   assert(MRegisterInfo::isVirtualRegister(RegIdx) &&
          "getVarInfo: not a virtual register!");
@@ -177,10 +161,6 @@
         AllocatablePhysicalRegisters[*I] = true;  // The reg is allocatable!
   }
 
-  // Build BBMap... 
-  for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I)
-    BBMap[I] = I->getNumber();
-
   // PhysRegInfo - Keep track of which instruction was the last use of a
   // physical register.  This is a purely local property, because all physical
   // register references as presumed dead across basic blocks.
