diff --git a/lib/CodeGen/InstrSelection/InstrSelection.cpp b/lib/CodeGen/InstrSelection/InstrSelection.cpp
index c43f8dd..d61feb4 100644
--- a/lib/CodeGen/InstrSelection/InstrSelection.cpp
+++ b/lib/CodeGen/InstrSelection/InstrSelection.cpp
@@ -18,6 +18,7 @@
 #include "llvm/CodeGen/InstrSelectionSupport.h"
 #include "llvm/CodeGen/InstrForest.h"
 #include "llvm/CodeGen/MachineCodeForInstruction.h"
+#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
 #include "llvm/CodeGen/MachineCodeForMethod.h"
 #include "llvm/Target/MachineRegInfo.h"
 #include "llvm/Target/TargetMachine.h"
@@ -127,7 +128,7 @@
     for (BasicBlock::iterator II = BI->begin(); II != BI->end(); ++II) {
       MachineCodeForInstruction &mvec =MachineCodeForInstruction::get(II);
       for (unsigned i=0; i < mvec.size(); i++)
-        BI->getMachineInstrVec().push_back(mvec[i]);
+        MachineCodeForBasicBlock::get(BI).push_back(mvec[i]);
     }
 
   // Insert phi elimination code -- added by Ruchira
@@ -162,7 +163,7 @@
   assert( FirstMIOfTerm && "No Machine Instrs for terminator" );
   
   // get an iterator to machine instructions in the BB
-  MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
+  MachineCodeForBasicBlock& bbMvec = MachineCodeForBasicBlock::get(BB);
   MachineCodeForBasicBlock::iterator MCIt =  bbMvec.begin();
   
   // find the position of first machine instruction generated by the
@@ -217,7 +218,7 @@
       target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
       
       // get an iterator to machine instructions in the BB
-      MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
+      MachineCodeForBasicBlock& bbMvec = MachineCodeForBasicBlock::get(BB);
       
       bbMvec.insert(bbMvec.begin(), mvec.begin(), mvec.end());
     }  // for each Phi Instr in BB
diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp
index c43f8dd..d61feb4 100644
--- a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp
+++ b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp
@@ -18,6 +18,7 @@
 #include "llvm/CodeGen/InstrSelectionSupport.h"
 #include "llvm/CodeGen/InstrForest.h"
 #include "llvm/CodeGen/MachineCodeForInstruction.h"
+#include "llvm/CodeGen/MachineCodeForBasicBlock.h"
 #include "llvm/CodeGen/MachineCodeForMethod.h"
 #include "llvm/Target/MachineRegInfo.h"
 #include "llvm/Target/TargetMachine.h"
@@ -127,7 +128,7 @@
     for (BasicBlock::iterator II = BI->begin(); II != BI->end(); ++II) {
       MachineCodeForInstruction &mvec =MachineCodeForInstruction::get(II);
       for (unsigned i=0; i < mvec.size(); i++)
-        BI->getMachineInstrVec().push_back(mvec[i]);
+        MachineCodeForBasicBlock::get(BI).push_back(mvec[i]);
     }
 
   // Insert phi elimination code -- added by Ruchira
@@ -162,7 +163,7 @@
   assert( FirstMIOfTerm && "No Machine Instrs for terminator" );
   
   // get an iterator to machine instructions in the BB
-  MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
+  MachineCodeForBasicBlock& bbMvec = MachineCodeForBasicBlock::get(BB);
   MachineCodeForBasicBlock::iterator MCIt =  bbMvec.begin();
   
   // find the position of first machine instruction generated by the
@@ -217,7 +218,7 @@
       target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
       
       // get an iterator to machine instructions in the BB
-      MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
+      MachineCodeForBasicBlock& bbMvec = MachineCodeForBasicBlock::get(BB);
       
       bbMvec.insert(bbMvec.begin(), mvec.begin(), mvec.end());
     }  // for each Phi Instr in BB
