diff options
| -rw-r--r-- | polly/lib/Support/SCEVValidator.cpp | 29 |
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; } |

