[polly] r337246 - [ScopInfo] Replace isl foreach calls with for loops

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 16 23:41:20 PDT 2018


Author: grosser
Date: Mon Jul 16 23:41:20 2018
New Revision: 337246

URL: http://llvm.org/viewvc/llvm-project?rev=337246&view=rev
Log:
[ScopInfo] Replace isl foreach calls with for loops

Modified:
    polly/trunk/lib/Analysis/ScopInfo.cpp

Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=337246&r1=337245&r2=337246&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Mon Jul 16 23:41:20 2018
@@ -2283,8 +2283,11 @@ void Scop::simplifyContexts() {
 }
 
 /// Add the minimal/maximal access in @p Set to @p User.
-static isl::stat
-buildMinMaxAccess(isl::set Set, Scop::MinMaxVectorTy &MinMaxAccesses, Scop &S) {
+///
+/// @return True if more accesses should be added, false if we reached the
+///         maximal number of run-time checks to be generated.
+static bool buildMinMaxAccess(isl::set Set,
+                              Scop::MinMaxVectorTy &MinMaxAccesses, Scop &S) {
   isl::pw_multi_aff MinPMA, MaxPMA;
   isl::pw_aff LastDimAff;
   isl::aff OneAff;
@@ -2317,7 +2320,7 @@ buildMinMaxAccess(isl::set Set, Scop::Mi
         InvolvedParams++;
 
     if (InvolvedParams > RunTimeChecksMaxParameters)
-      return isl::stat::error;
+      return false;
   }
 
   MinPMA = Set.lexmin_pw_multi_aff();
@@ -2341,11 +2344,11 @@ buildMinMaxAccess(isl::set Set, Scop::Mi
   MaxPMA = MaxPMA.set_pw_aff(Pos, LastDimAff);
 
   if (!MinPMA || !MaxPMA)
-    return isl::stat::error;
+    return false;
 
   MinMaxAccesses.push_back(std::make_pair(MinPMA, MaxPMA));
 
-  return isl::stat::ok;
+  return true;
 }
 
 static isl::set getAccessDomain(MemoryAccess *MA) {
@@ -2368,10 +2371,14 @@ static bool calculateMinMaxAccess(Scop::
   Accesses = Accesses.intersect_domain(Domains);
   isl::union_set Locations = Accesses.range();
 
-  auto Lambda = [&MinMaxAccesses, &S](isl::set Set) -> isl::stat {
-    return buildMinMaxAccess(Set, MinMaxAccesses, S);
-  };
-  return Locations.foreach_set(Lambda) == isl::stat::ok;
+  bool LimitReached = false;
+  for (isl::set Set : Locations.get_set_list()) {
+    LimitReached |= !buildMinMaxAccess(Set, MinMaxAccesses, S);
+    if (LimitReached)
+      break;
+  }
+
+  return !LimitReached;
 }
 
 /// Helper to treat non-affine regions and basic blocks the same.




More information about the llvm-commits mailing list