diff options
author | Evgeny Stupachenko <evstupac@gmail.com> | 2018-02-27 00:17:31 +0000 |
---|---|---|
committer | Evgeny Stupachenko <evstupac@gmail.com> | 2018-02-27 00:17:31 +0000 |
commit | a732611ac822f9cc9fc5b322fdeff95f8c38cc6a (patch) | |
tree | 57f34f3a3bbad022ce356a2f264b0ad8f7328924 /llvm/lib/Analysis/ScalarEvolution.cpp | |
parent | 6df870ca586632ea59afb7f2ce8723684cea9496 (diff) | |
download | bcm5719-llvm-a732611ac822f9cc9fc5b322fdeff95f8c38cc6a.tar.gz bcm5719-llvm-a732611ac822f9cc9fc5b322fdeff95f8c38cc6a.zip |
Fix PR36032, PR35432
Summary:
The change fix an assert fail at ScalarEvolutionExpander.cpp:
assert(ExitCount != SE.getCouldNotCompute() && "Invalid loop count");
Reviewers: sbaranga
Differential Revision: http://reviews.llvm.org/D42604
From: Evgeny Stupachenko <evstupac@gmail.com>
<evgeny.v.stupachenko@intel.com>
llvm-svn: 326154
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index e75a29bd0a3..f75b55d4bf4 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -11649,6 +11649,12 @@ private: if (!PredicatedRewrite) return Expr; for (auto *P : PredicatedRewrite->second){ + // Wrap predicates from outer loops are not supported. + if (auto *WP = dyn_cast<const SCEVWrapPredicate>(P)) { + auto *AR = cast<const SCEVAddRecExpr>(WP->getExpr()); + if (L != AR->getLoop()) + return Expr; + } if (!addOverflowAssumption(P)) return Expr; } |