Prevent binary-tree deterioration in sparse switch statements.
[oota-llvm.git] / lib / CodeGen / SelectionDAG / ResourcePriorityQueue.cpp
index aaf1e1fe05013443aac46b639a728e2fee9ddda8..db38b76cf93a982b34a5992fa3cd32d1421f09d6 100644 (file)
@@ -42,15 +42,12 @@ static cl::opt<signed> RegPressureThreshold(
   cl::desc("Track reg pressure and switch priority to in-depth"));
 
 ResourcePriorityQueue::ResourcePriorityQueue(SelectionDAGISel *IS)
-    : Picker(this), InstrItins(IS->getTargetLowering()
-                                   ->getTargetMachine()
-                                   .getSubtargetImpl()
-                                   ->getInstrItineraryData()) {
-  const TargetMachine &TM = (*IS->MF).getTarget();
-  TRI = TM.getSubtargetImpl()->getRegisterInfo();
-  TLI = IS->getTargetLowering();
-  TII = TM.getSubtargetImpl()->getInstrInfo();
-  ResourcesModel = TII->CreateTargetScheduleState(&TM, nullptr);
+    : Picker(this), InstrItins(IS->MF->getSubtarget().getInstrItineraryData()) {
+  const TargetSubtargetInfo &STI = IS->MF->getSubtarget();
+  TRI = STI.getRegisterInfo();
+  TLI = IS->TLI;
+  TII = STI.getInstrInfo();
+  ResourcesModel = TII->CreateTargetScheduleState(STI);
   // This hard requirement could be relaxed, but for now
   // do not let it procede.
   assert(ResourcesModel && "Unimplemented CreateTargetScheduleState.");