summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2014-05-09 23:28:49 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2014-05-09 23:28:49 +0000
commit8722aa57545760f08bb6b29f48b8907499438628 (patch)
tree477796f7240614496a04fd91c6434814f8fc820a /llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
parent238137294f5a7d993f398c99bfac87bb01dcd4e5 (diff)
downloadbcm5719-llvm-8722aa57545760f08bb6b29f48b8907499438628.tar.gz
bcm5719-llvm-8722aa57545760f08bb6b29f48b8907499438628.zip
SLPVectorizer: When sorting by domination for CSE don't assert on unreachable code.
There is no total ordering if the CFG is disconnected. We don't care if we catch all CSE opportunities in dead code either so just exclude ignore them in the assert. PR19646 llvm-svn: 208461
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 0eb045e628b..cecb18b9183 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -1827,7 +1827,8 @@ void BoUpSLP::optimizeGatherSequence() {
for (SmallVectorImpl<BasicBlock *>::iterator I = CSEWorkList.begin(),
E = CSEWorkList.end();
I != E; ++I) {
- assert((I == CSEWorkList.begin() || !DT->dominates(*I, *std::prev(I))) &&
+ assert((I == CSEWorkList.begin() || !DT->isReachableFromEntry(*I) ||
+ !DT->dominates(*I, *std::prev(I))) &&
"Worklist not sorted properly!");
BasicBlock *BB = *I;
// For all instructions in blocks containing gather sequences:
OpenPOWER on IntegriCloud