misched: Use the same scheduling heuristics with -misched-topdown/bottomup.
authorAndrew Trick <atrick@apple.com>
Thu, 24 May 2012 23:11:17 +0000 (23:11 +0000)
committerAndrew Trick <atrick@apple.com>
Thu, 24 May 2012 23:11:17 +0000 (23:11 +0000)
(except the part about choosing direction)

llvm-svn: 157437

llvm/lib/CodeGen/MachineScheduler.cpp

index 78a5b8d..662b16f 100644 (file)
@@ -1168,11 +1168,25 @@ SUnit *ConvergingScheduler::pickNode(bool &IsTopNode) {
   }
   SUnit *SU;
   if (ForceTopDown) {
-    SU = DAG->getSUnit(DAG->top());
+    SU = Top.pickOnlyChoice();
+    if (!SU) {
+      SchedCandidate TopCand;
+      CandResult TopResult =
+        pickNodeFromQueue(Top.Available, DAG->getTopRPTracker(), TopCand);
+      assert(TopResult != NoCand && "failed to find the first candidate");
+      SU = TopCand.SU;
+    }
     IsTopNode = true;
   }
   else if (ForceBottomUp) {
-    SU = DAG->getSUnit(priorNonDebug(DAG->bottom(), DAG->top()));
+    SU = Bot.pickOnlyChoice();
+    if (!SU) {
+      SchedCandidate BotCand;
+      CandResult BotResult =
+        pickNodeFromQueue(Bot.Available, DAG->getBotRPTracker(), BotCand);
+      assert(BotResult != NoCand && "failed to find the first candidate");
+      SU = BotCand.SU;
+    }
     IsTopNode = false;
   }
   else {