[REFACTOR] Simplify the SCoP detection interface a bit
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 19 Feb 2015 18:11:50 +0000 (18:11 +0000)
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 19 Feb 2015 18:11:50 +0000 (18:11 +0000)
llvm-svn: 229879

polly/include/polly/ScopDetection.h
polly/lib/Analysis/ScopDetection.cpp

index fa425c4..0780291 100644 (file)
@@ -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.
index 8ef657a..954dd95 100644 (file)
@@ -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;