summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-11-29 14:36:26 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-11-29 14:36:26 +0000
commit5175fd990c898a49708d60b84e7838bead48f2cd (patch)
tree155df29ee31ccc3aeac82e9cdf4fb5fd6e90fe6c
parent6d988b423acf37ed4d0b50b2678a18f65ab1a207 (diff)
downloadllvm-5175fd990c898a49708d60b84e7838bead48f2cd.tar.gz
llvm-5175fd990c898a49708d60b84e7838bead48f2cd.tar.bz2
llvm-5175fd990c898a49708d60b84e7838bead48f2cd.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168885 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/MachineScheduler.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/CodeGen/MachineScheduler.cpp b/lib/CodeGen/MachineScheduler.cpp
index e27bb0dd1b..b3e38f64ff 100644
--- a/lib/CodeGen/MachineScheduler.cpp
+++ b/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.