[flang-commits] [flang] 43ccdbc - [FIRToSCF] propagate acc.par_dims during fir.do_loop conversion (#207973)

via flang-commits flang-commits at lists.llvm.org
Tue Jul 7 07:50:30 PDT 2026


Author: Scott Manley
Date: 2026-07-07T09:50:25-05:00
New Revision: 43ccdbc84774da0ae4cb5131f2245a9633d977b9

URL: https://github.com/llvm/llvm-project/commit/43ccdbc84774da0ae4cb5131f2245a9633d977b9
DIFF: https://github.com/llvm/llvm-project/commit/43ccdbc84774da0ae4cb5131f2245a9633d977b9.diff

LOG: [FIRToSCF] propagate acc.par_dims during fir.do_loop conversion (#207973)

Copy any OpenACC parallel dimensions from the fir.do_loop to the scf op

Added: 
    

Modified: 
    flang/lib/Optimizer/Transforms/FIRToSCF.cpp
    flang/test/Fir/FirToSCF/do-loop.fir

Removed: 
    


################################################################################
diff  --git a/flang/lib/Optimizer/Transforms/FIRToSCF.cpp b/flang/lib/Optimizer/Transforms/FIRToSCF.cpp
index 04ba0537a6434..9eadb5830ae49 100644
--- a/flang/lib/Optimizer/Transforms/FIRToSCF.cpp
+++ b/flang/lib/Optimizer/Transforms/FIRToSCF.cpp
@@ -8,6 +8,7 @@
 
 #include "flang/Optimizer/Dialect/FIRDialect.h"
 #include "flang/Optimizer/Transforms/Passes.h"
+#include "mlir/Dialect/OpenACC/OpenACC.h"
 #include "mlir/Dialect/SCF/IR/SCF.h"
 #include "mlir/Transforms/WalkPatternRewriteDriver.h"
 
@@ -128,6 +129,11 @@ struct DoLoopConversion : public mlir::OpRewritePattern<fir::DoLoopOp> {
     if (auto ann = doLoopOp.getLoopAnnotation())
       scfLoopOp->setAttr("loop_annotation", *ann);
 
+    // Copy any OpenACC parallel dimensions from the fir.do_loop to the scf loop
+    // op.
+    if (auto parDims = doLoopOp->getAttr(mlir::acc::GPUParallelDimsAttr::name))
+      scfLoopOp->setAttr(mlir::acc::GPUParallelDimsAttr::name, parDims);
+
     rewriter.replaceOp(doLoopOp, scfLoopOp);
     return mlir::success();
   }

diff  --git a/flang/test/Fir/FirToSCF/do-loop.fir b/flang/test/Fir/FirToSCF/do-loop.fir
index b61d4230b57fd..8883d795b5d2d 100644
--- a/flang/test/Fir/FirToSCF/do-loop.fir
+++ b/flang/test/Fir/FirToSCF/do-loop.fir
@@ -329,3 +329,14 @@ func.func @nested_loop(%arg0: !fir.ref<!fir.array<100x100xi32>>) {
   }
   return
 }
+
+// CHECK-LABEL: func.func @propagate_par_dims
+// CHECK:         scf.for {{.*}} {
+// CHECK:         } {acc.par_dims = #acc<par_dims[sequential]>}
+func.func @propagate_par_dims() {
+  %c1 = arith.constant 1 : index
+  %c100 = arith.constant 100 : index
+  fir.do_loop %arg1 = %c1 to %c100 step %c1 attributes {acc.par_dims = #acc<par_dims[sequential]>} {
+  }
+  return
+}


        


More information about the flang-commits mailing list