Change the scheduler accessor methods to accept an explicit TargetMachine
authorDan Gohman <gohman@apple.com>
Tue, 11 Nov 2008 17:50:47 +0000 (17:50 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 11 Nov 2008 17:50:47 +0000 (17:50 +0000)
argument instead of taking the SelectionDAG's TargetMachine. This is
needed for some upcoming scheduler changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59055 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/LinkAllCodegenComponents.h
include/llvm/CodeGen/ScheduleDAG.h
include/llvm/CodeGen/SchedulerRegistry.h
lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 22e2aae5055b0ee9129fa9fd1489e627ea6eb99e..285350057d5fa3a5165939dddd2d5cf09398a522 100644 (file)
@@ -42,11 +42,11 @@ namespace {
       llvm::linkOcamlGC();
       llvm::linkShadowStackGC();
       
-      (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL, false);
-      (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL, false);
-      (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL, false);
-      (void) llvm::createFastDAGScheduler(NULL, NULL, NULL, false);
-      (void) llvm::createDefaultScheduler(NULL, NULL, NULL, false);
+      (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL, NULL, false);
+      (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL, NULL, false);
+      (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL, NULL, false);
+      (void) llvm::createFastDAGScheduler(NULL, NULL, NULL, NULL, false);
+      (void) llvm::createDefaultScheduler(NULL, NULL, NULL, NULL, false);
 
     }
   } ForceCodegenLinking; // Force link by creating a global definition.
index 06bb0361159cf44f3e8919f73e1e4d8597634cb7..9e21b30f376d5f25b86cbb131973ddfd57aa8632 100644 (file)
@@ -395,6 +395,7 @@ namespace llvm {
   /// reduction list scheduler.
   ScheduleDAG* createBURRListDAGScheduler(SelectionDAGISel *IS,
                                           SelectionDAG *DAG,
+                                          const TargetMachine *TM,
                                           MachineBasicBlock *BB,
                                           bool Fast);
   
@@ -402,6 +403,7 @@ namespace llvm {
   /// reduction list scheduler.
   ScheduleDAG* createTDRRListDAGScheduler(SelectionDAGISel *IS,
                                           SelectionDAG *DAG,
+                                          const TargetMachine *TM,
                                           MachineBasicBlock *BB,
                                           bool Fast);
   
@@ -409,6 +411,7 @@ namespace llvm {
   /// a hazard recognizer.
   ScheduleDAG* createTDListDAGScheduler(SelectionDAGISel *IS,
                                         SelectionDAG *DAG,
+                                        const TargetMachine *TM,
                                         MachineBasicBlock *BB,
                                         bool Fast);
                                         
@@ -416,6 +419,7 @@ namespace llvm {
   ///
   ScheduleDAG *createFastDAGScheduler(SelectionDAGISel *IS,
                                       SelectionDAG *DAG,
+                                      const TargetMachine *TM,
                                       MachineBasicBlock *BB,
                                       bool Fast);
 
@@ -423,6 +427,7 @@ namespace llvm {
   /// for the target.
   ScheduleDAG* createDefaultScheduler(SelectionDAGISel *IS,
                                       SelectionDAG *DAG,
+                                      const TargetMachine *TM,
                                       MachineBasicBlock *BB,
                                       bool Fast);
 
index db70dee6c5b16e1a0266c6e8fd7edf25fdf279ca..84a0fec5741d84ae94fa3e961b5d5bab4e1edfd1 100644 (file)
@@ -35,6 +35,7 @@ class RegisterScheduler : public MachinePassRegistryNode {
 public:
 
   typedef ScheduleDAG *(*FunctionPassCtor)(SelectionDAGISel*, SelectionDAG*,
+                                        const TargetMachine *,
                                         MachineBasicBlock*, bool);
 
   static MachinePassRegistry Registry;
index 83f7b7364ee387e2d6e5eec9275af321a3b7763e..d205f3d09035a3cab4e0cef09c3cf1d17ad5ab35 100644 (file)
@@ -652,6 +652,7 @@ void ScheduleDAGFast::ListScheduleBottomUp() {
 
 llvm::ScheduleDAG* llvm::createFastDAGScheduler(SelectionDAGISel *IS,
                                                 SelectionDAG *DAG,
+                                                const TargetMachine *TM,
                                                 MachineBasicBlock *BB, bool) {
-  return new ScheduleDAGFast(*DAG, BB, DAG->getTarget());
+  return new ScheduleDAGFast(*DAG, BB, *TM);
 }
index 067407b1eb84e5f27bf13eb1cb69066df6b20c22..178c3f6ca4ee0a2eb546ee938915f4b7ba91ecda 100644 (file)
@@ -541,8 +541,9 @@ void LatencyPriorityQueue::AdjustPriorityOfUnscheduledPreds(SUnit *SU) {
 /// recognizer and deletes it when done.
 ScheduleDAG* llvm::createTDListDAGScheduler(SelectionDAGISel *IS,
                                             SelectionDAG *DAG,
+                                            const TargetMachine *TM,
                                             MachineBasicBlock *BB, bool Fast) {
-  return new ScheduleDAGList(*DAG, BB, DAG->getTarget(),
+  return new ScheduleDAGList(*DAG, BB, *TM,
                              new LatencyPriorityQueue(),
                              IS->CreateTargetHazardRecognizer());
 }
index d1617bd60c87c60e5204a4f344f4d4e03dd553f5..5ae315896117723c7ebf7609b59341543d0aff01 100644 (file)
@@ -1881,27 +1881,29 @@ void TDRegReductionPriorityQueue::CalculateSethiUllmanNumbers() {
 
 llvm::ScheduleDAG* llvm::createBURRListDAGScheduler(SelectionDAGISel *IS,
                                                     SelectionDAG *DAG,
+                                                    const TargetMachine *TM,
                                                     MachineBasicBlock *BB,
                                                     bool Fast) {
   if (Fast)
-    return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), true, true,
+    return new ScheduleDAGRRList(*DAG, BB, *TM, true, true,
                                  new BURegReductionFastPriorityQueue());
 
-  const TargetInstrInfo *TII = DAG->getTarget().getInstrInfo();
-  const TargetRegisterInfo *TRI = DAG->getTarget().getRegisterInfo();
+  const TargetInstrInfo *TII = TM->getInstrInfo();
+  const TargetRegisterInfo *TRI = TM->getRegisterInfo();
   
   BURegReductionPriorityQueue *PQ = new BURegReductionPriorityQueue(TII, TRI);
 
   ScheduleDAGRRList *SD =
-    new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(),true,false, PQ);
+    new ScheduleDAGRRList(*DAG, BB, *TM, true, false, PQ);
   PQ->setScheduleDAG(SD);
   return SD;  
 }
 
 llvm::ScheduleDAG* llvm::createTDRRListDAGScheduler(SelectionDAGISel *IS,
                                                     SelectionDAG *DAG,
+                                                    const TargetMachine *TM,
                                                     MachineBasicBlock *BB,
                                                     bool Fast) {
-  return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), false, Fast,
+  return new ScheduleDAGRRList(*DAG, BB, *TM, false, Fast,
                                new TDRegReductionPriorityQueue());
 }
index 7702b3d5e90c096be026cec9fe6d076195458616..3114d1b9bb33bde0da1537cc997a4f0beda6e4cb 100644 (file)
@@ -133,16 +133,17 @@ namespace llvm {
   /// for the target.
   ScheduleDAG* createDefaultScheduler(SelectionDAGISel *IS,
                                       SelectionDAG *DAG,
+                                      const TargetMachine *TM,
                                       MachineBasicBlock *BB,
                                       bool Fast) {
     TargetLowering &TLI = IS->getTargetLowering();
     
     if (TLI.getSchedulingPreference() == TargetLowering::SchedulingForLatency) {
-      return createTDListDAGScheduler(IS, DAG, BB, Fast);
+      return createTDListDAGScheduler(IS, DAG, TM, BB, Fast);
     } else {
       assert(TLI.getSchedulingPreference() ==
            TargetLowering::SchedulingForRegPressure && "Unknown sched type!");
-      return createBURRListDAGScheduler(IS, DAG, BB, Fast);
+      return createBURRListDAGScheduler(IS, DAG, TM, BB, Fast);
     }
   }
 }
@@ -1053,7 +1054,8 @@ ScheduleDAG *SelectionDAGISel::Schedule() {
     RegisterScheduler::setDefault(Ctor);
   }
   
-  ScheduleDAG *Scheduler = Ctor(this, CurDAG, BB, Fast);
+  TargetMachine &TM = getTargetLowering().getTargetMachine();
+  ScheduleDAG *Scheduler = Ctor(this, CurDAG, &TM, BB, Fast);
   Scheduler->Run();
 
   return Scheduler;