From aa598b3be67ae5cb7b4d95ae7003135bee622873 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 29 Nov 2012 14:36:26 +0000 Subject: [PATCH] misched: Recompute priority queue when DFSResults are updated. This was found by MSVC10's STL debug mode on a test from the test suite. Sadly std::is_heap isn't standard so there is no way to assert this without writing our own heap verify, which looks like overkill to me. llvm-svn: 168885 --- llvm/lib/CodeGen/MachineScheduler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index e27bb0dd1bd2..b3e38f64ff09 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -2117,6 +2117,8 @@ public: virtual void registerRoots() { DFSResult.compute(ReadyQ); ScheduledTrees.resize(DFSResult.getNumSubtrees()); + // Restore the heap in ReadyQ with the updated DFS results. + std::make_heap(ReadyQ.begin(), ReadyQ.end(), Cmp); } /// Implement MachineSchedStrategy interface.