summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize
diff options
context:
space:
mode:
authorJulien Lerouge <jlerouge@apple.com>2015-01-13 19:45:52 +0000
committerJulien Lerouge <jlerouge@apple.com>2015-01-13 19:45:52 +0000
commit0473cb5ab75c5ddf51290d7e5299c0c64d13312f (patch)
tree8f35948e400bbd67584cd9a8f25f0d6a798f8b64 /llvm/lib/Transforms/Vectorize
parentbd039299c069ad5459410882382432f6d70eb2b0 (diff)
downloadbcm5719-llvm-0473cb5ab75c5ddf51290d7e5299c0c64d13312f.tar.gz
bcm5719-llvm-0473cb5ab75c5ddf51290d7e5299c0c64d13312f.zip
Fix non-determinism issue in SLP
The issue was introduced in r214638: + for (auto &BSIter : BlocksSchedules) { + scheduleBlock(BSIter.second.get()); + } Because BlocksSchedules is a DenseMap with BasicBlock* keys, blocks are scheduled in non-deterministic order, resulting in unpredictable IR. Patch by Daniel Reynaud! llvm-svn: 225821
Diffstat (limited to 'llvm/lib/Transforms/Vectorize')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 9281bcb2c51..24d02b0060b 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -857,7 +857,7 @@ private:
};
/// Attaches the BlockScheduling structures to basic blocks.
- DenseMap<BasicBlock *, std::unique_ptr<BlockScheduling>> BlocksSchedules;
+ MapVector<BasicBlock *, std::unique_ptr<BlockScheduling>> BlocksSchedules;
/// Performs the "real" scheduling. Done before vectorization is actually
/// performed in a basic block.
OpenPOWER on IntegriCloud