summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polly/include/polly/ScopDetection.h7
-rw-r--r--polly/lib/Analysis/ScopDetection.cpp28
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;
OpenPOWER on IntegriCloud