diff options
-rw-r--r-- | polly/include/polly/ScopDetection.h | 7 | ||||
-rw-r--r-- | polly/lib/Analysis/ScopDetection.cpp | 28 |
2 files changed, 11 insertions, 24 deletions
diff --git a/polly/include/polly/ScopDetection.h b/polly/include/polly/ScopDetection.h index fa425c4c4e1..07802916527 100644 --- a/polly/include/polly/ScopDetection.h +++ b/polly/include/polly/ScopDetection.h @@ -208,13 +208,6 @@ private: /// @return True if R is a Scop, false otherwise. bool isValidRegion(DetectionContext &Context) const; - /// @brief Check if a region is a Scop. - /// - /// @param Context The context of scop detection. - /// - /// @return True if R is a Scop, false otherwise. - bool isValidRegion(Region &R) const; - /// @brief Check if a call instruction can be part of a Scop. /// /// @param CI The call instruction to check. diff --git a/polly/lib/Analysis/ScopDetection.cpp b/polly/lib/Analysis/ScopDetection.cpp index 8ef657a967a..954dd95038d 100644 --- a/polly/lib/Analysis/ScopDetection.cpp +++ b/polly/lib/Analysis/ScopDetection.cpp @@ -251,8 +251,10 @@ bool ScopDetection::isMaxRegionInScop(const Region &R, bool Verify) const { if (!ValidRegions.count(&R)) return false; - if (Verify) - return isValidRegion(const_cast<Region &>(R)); + if (Verify) { + DetectionContext Context(const_cast<Region &>(R), *AA, false /*verifying*/); + return isValidRegion(Context); + } return true; } @@ -731,10 +733,14 @@ void ScopDetection::findScops(Region &R) { if (!DetectRegionsWithoutLoops && regionWithoutLoops(R, LI)) return; - bool IsValidRegion = isValidRegion(R); - bool HasErrors = RejectLogs.count(&R) > 0; + DetectionContext Context(R, *AA, false /*verifying*/); + bool RegionIsValid = isValidRegion(Context); + bool HasErrors = !RegionIsValid || Context.Log.size() > 0; - if (IsValidRegion && !HasErrors) { + if (PollyTrackFailures && HasErrors) + RejectLogs.insert(std::make_pair(&R, Context.Log)); + + if (!HasErrors) { ++ValidRegion; ValidRegions.insert(&R); return; @@ -817,18 +823,6 @@ bool ScopDetection::isValidExit(DetectionContext &Context) const { return true; } -bool ScopDetection::isValidRegion(Region &R) const { - DetectionContext Context(R, *AA, false /*verifying*/); - - bool RegionIsValid = isValidRegion(Context); - bool HasErrors = !RegionIsValid || Context.Log.size() > 0; - - if (PollyTrackFailures && HasErrors) - RejectLogs.insert(std::make_pair(&R, Context.Log)); - - return RegionIsValid; -} - bool ScopDetection::isValidRegion(DetectionContext &Context) const { Region &R = Context.CurRegion; |