diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp
index ee988b1..a20d23b 100644
--- a/lib/CodeGen/LiveIntervalAnalysis.cpp
+++ b/lib/CodeGen/LiveIntervalAnalysis.cpp
@@ -263,7 +263,7 @@
                         nI.addRange(start, end);
                         added.push_back(&nI);
                         // update live variables
-                        lv_->addVirtualRegisterKilled(nReg, mi->getParent(),mi);
+                        lv_->addVirtualRegisterKilled(nReg, mi);
                         DEBUG(std::cerr << "\t\t\t\tadded new interval: "
                               << nI << '\n');
                     }
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp
index 883b781..c82208a 100644
--- a/lib/CodeGen/LiveVariables.cpp
+++ b/lib/CodeGen/LiveVariables.cpp
@@ -99,7 +99,7 @@
          "Should have kill for defblock!");
 
   // Add a new kill entry for this basic block.
-  VRInfo.Kills.push_back(std::make_pair(MBB, MI));
+  VRInfo.Kills.push_back(std::make_pair(MI->getParent(), MI));
 
   // Update all dominating blocks to mark them known live.
   const BasicBlock *BB = MBB->getBasicBlock();
@@ -233,7 +233,8 @@
 
             assert(VRInfo.DefInst == 0 && "Variable multiply defined!");
             VRInfo.DefInst = MI;
-            VRInfo.Kills.push_back(std::make_pair(MBB, MI)); // Defaults to dead
+            // Defaults to dead
+            VRInfo.Kills.push_back(std::make_pair(MI->getParent(), MI));
           } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) &&
                      AllocatablePhysicalRegisters[MO.getReg()]) {
             HandlePhysRegDef(MO.getReg(), MI);
diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp
index 40bf588..4b67237 100644
--- a/lib/CodeGen/PHIElimination.cpp
+++ b/lib/CodeGen/PHIElimination.cpp
@@ -122,7 +122,7 @@
       // each for each incoming block), the "def" block and instruction fields
       // for the VarInfo is not filled in.
       //
-      LV->addVirtualRegisterKilled(IncomingReg, &MBB, PHICopy);
+      LV->addVirtualRegisterKilled(IncomingReg, PHICopy);
 
       // Since we are going to be deleting the PHI node, if it is the last use
       // of any registers, or if the value itself is dead, we need to move this
@@ -140,7 +140,7 @@
 
         // Add all of the kills back, which will update the appropriate info...
         for (unsigned i = 0, e = Range.size(); i != e; ++i)
-          LV->addVirtualRegisterKilled(Range[i].second, &MBB, PHICopy);
+          LV->addVirtualRegisterKilled(Range[i].second, PHICopy);
       }
 
       RKs = LV->dead_range(MI);
@@ -149,7 +149,7 @@
         Range.assign(RKs.first, RKs.second);
         LV->removeVirtualRegistersDead(RKs.first, RKs.second);
         for (unsigned i = 0, e = Range.size(); i != e; ++i)
-          LV->addVirtualRegisterDead(Range[i].second, &MBB, PHICopy);
+          LV->addVirtualRegisterDead(Range[i].second, PHICopy);
       }
     }
 
@@ -251,7 +251,7 @@
           //
           if (!ValueIsLive) {
             MachineBasicBlock::iterator Prev = prior(I);
-            LV->addVirtualRegisterKilled(SrcReg, &opBlock, Prev);
+            LV->addVirtualRegisterKilled(SrcReg, Prev);
           }
         }
       }
diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp
index 2190f21..f2815ee 100644
--- a/lib/CodeGen/TwoAddressInstructionPass.cpp
+++ b/lib/CodeGen/TwoAddressInstructionPass.cpp
@@ -151,10 +151,10 @@
 
                     // update live variables for regB
                     if (LV->removeVirtualRegisterKilled(regB, &*mbbi, mi))
-                        LV->addVirtualRegisterKilled(regB, &*mbbi, prevMi);
+                        LV->addVirtualRegisterKilled(regB, prevMi);
 
                     if (LV->removeVirtualRegisterDead(regB, &*mbbi, mi))
-                        LV->addVirtualRegisterDead(regB, &*mbbi, prevMi);
+                        LV->addVirtualRegisterDead(regB, prevMi);
                 }
 
                 // replace all occurences of regB with regA
