diff --git a/include/llvm/CodeGen/LiveVariables.h b/include/llvm/CodeGen/LiveVariables.h
index 4eec1d66120..7820f7414d4 100644
--- a/include/llvm/CodeGen/LiveVariables.h
+++ b/include/llvm/CodeGen/LiveVariables.h
@@ -231,10 +231,6 @@ public:
   /// register.
   VarInfo &getVarInfo(unsigned RegIdx);
 
-  const std::vector<bool>& getAllocatablePhysicalRegisters() const {
-    return AllocatablePhysicalRegisters;
-  }
-
   void MarkVirtRegAliveInBlock(VarInfo &VRInfo, MachineBasicBlock *BB);
   void HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB,
                        	MachineInstr *MI);
diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp
index 0bdf86406f1..b6d9bc2a601 100644
--- a/lib/CodeGen/LiveVariables.cpp
+++ b/lib/CodeGen/LiveVariables.cpp
@@ -148,19 +148,7 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &MF) {
   RegInfo = MF.getTarget().getRegisterInfo();
   assert(RegInfo && "Target doesn't have register information?");
 
-  // First time though, initialize AllocatablePhysicalRegisters for the target
-  if (AllocatablePhysicalRegisters.empty()) {
-    // Make space, initializing to false...
-    AllocatablePhysicalRegisters.resize(RegInfo->getNumRegs());
-
-    // Loop over all of the register classes...
-    for (MRegisterInfo::regclass_iterator RCI = RegInfo->regclass_begin(),
-           E = RegInfo->regclass_end(); RCI != E; ++RCI)
-      // Loop over all of the allocatable registers in the function...
-      for (TargetRegisterClass::iterator I = (*RCI)->allocation_order_begin(MF),
-             E = (*RCI)->allocation_order_end(MF); I != E; ++I)
-        AllocatablePhysicalRegisters[*I] = true;  // The reg is allocatable!
-  }
+  AllocatablePhysicalRegisters = RegInfo->getAllocatableSet(MF);
 
   // PhysRegInfo - Keep track of which instruction was the last use of a
   // physical register.  This is a purely local property, because all physical