[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