misched: Release only unscheduled nodes into ReadyQ.
authorAndrew Trick <atrick@apple.com>
Thu, 10 May 2012 21:06:14 +0000 (21:06 +0000)
committerAndrew Trick <atrick@apple.com>
Thu, 10 May 2012 21:06:14 +0000 (21:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156573 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineScheduler.cpp

index c6679c2666e887646957f1326d5e20ca7d42af49..55af22920ab30198e4317cad966a33455877f440 100644 (file)
@@ -643,6 +643,10 @@ struct ReadyQ {
 
   bool empty() const { return Queue.empty(); }
 
+  iterator begin() { return Queue.begin(); }
+
+  iterator end() { return Queue.end(); }
+
   iterator find(SUnit *SU) {
     return std::find(Queue.begin(), Queue.end(), SU);
   }
@@ -705,10 +709,12 @@ public:
   }
 
   virtual void releaseTopNode(SUnit *SU) {
-    TopQueue.push(SU);
+    if (!SU->isScheduled)
+      TopQueue.push(SU);
   }
   virtual void releaseBottomNode(SUnit *SU) {
-    BotQueue.push(SU);
+    if (!SU->isScheduled)
+      BotQueue.push(SU);
   }
 };
 } // namespace