diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2014-05-09 23:28:49 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2014-05-09 23:28:49 +0000 |
commit | 8722aa57545760f08bb6b29f48b8907499438628 (patch) | |
tree | 477796f7240614496a04fd91c6434814f8fc820a /llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | |
parent | 238137294f5a7d993f398c99bfac87bb01dcd4e5 (diff) | |
download | bcm5719-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.cpp | 3 |
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: |