[polly] [Polly] Distribute the innermost point loop of tile over its statements (PR #225844)

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 04:22:02 PDT 2026


================
@@ -589,6 +725,25 @@ ScheduleTreeOptimizer::optimizeBand(__isl_take isl_schedule_node *NodeArg,
   if (OAI->Postopts)
     Node = applyTileBandOpt(Node);
 
+  // Prevectorization strip-mines a parallel point loop and register tiling
+  // unrolls the point loops, leave those to them.
+  if (OAI->Postopts && DistributePointLoops && !OAI->Prevect &&
+      !RegisterTiling) {
+    isl::schedule_node Distributed;
+    {
+      IslQuotaScope MaxScope = OAI->MaxOpGuard.enter();
+      Distributed = distributeInnermostLoop(Node, OAI->D);
+      // Leave the band as it is if the analysis exceeds the quota, rather than
+      // discarding the other optimizations of the SCoP.
+      if (OAI->MaxOpGuard.hasQuotaExceeded()) {
+        Distributed = {};
+        isl_ctx_reset_error(Node.ctx().get());
----------------
Meinersbur wrote:

[nit] `isl_ctx_reset_error` should not be needed. It is not wrong, but the other uses of `IslQuotaScope` leave it to the next error-sensitive region to reset the error.

https://github.com/llvm/llvm-project/pull/225844


More information about the llvm-commits mailing list