summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polly/lib/Support/SCEVValidator.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/polly/lib/Support/SCEVValidator.cpp b/polly/lib/Support/SCEVValidator.cpp
index 82e8fd6ed7f..b263873284d 100644
--- a/polly/lib/Support/SCEVValidator.cpp
+++ b/polly/lib/Support/SCEVValidator.cpp
@@ -403,23 +403,28 @@ public:
Instruction *Inst = dyn_cast<Instruction>(Unknown->getValue());
// Return true when Inst is defined inside the region R.
- if (Inst && R->contains(Inst)) {
+ if (!Inst || !R->contains(Inst))
+ return true;
+
+ HasInRegionDeps = true;
+ return false;
+ }
+
+ if (auto AddRec = dyn_cast<SCEVAddRecExpr>(S)) {
+ if (AllowLoops)
+ return true;
+
+ if (!Scope) {
HasInRegionDeps = true;
return false;
}
- } else if (auto AddRec = dyn_cast<SCEVAddRecExpr>(S)) {
- if (!AllowLoops) {
- if (!Scope) {
- HasInRegionDeps = true;
- return false;
- }
- auto *L = AddRec->getLoop();
- if (R->contains(L) && !L->contains(Scope)) {
- HasInRegionDeps = true;
- return false;
- }
+ auto *L = AddRec->getLoop();
+ if (R->contains(L) && !L->contains(Scope)) {
+ HasInRegionDeps = true;
+ return false;
}
}
+
return true;
}
bool isDone() { return false; }
OpenPOWER on IntegriCloud