[flang-commits] [flang] e74e970 - [flang][OpenMP][DoConcurrent] Add `collapse` clause to generated `omp.loop_nest` op (#178138)
via flang-commits
flang-commits at lists.llvm.org
Tue Jan 27 02:59:02 PST 2026
Author: Kareem Ergawy
Date: 2026-01-27T11:58:57+01:00
New Revision: e74e970036645553459e4768dfaf48b618b48de2
URL: https://github.com/llvm/llvm-project/commit/e74e970036645553459e4768dfaf48b618b48de2
DIFF: https://github.com/llvm/llvm-project/commit/e74e970036645553459e4768dfaf48b618b48de2.diff
LOG: [flang][OpenMP][DoConcurrent] Add `collapse` clause to generated `omp.loop_nest` op (#178138)
Adds the collpase clause to the generated loop nest both on host and
device.
Added:
Modified:
flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp
flang/test/Transforms/DoConcurrent/multiple_iteration_ranges.f90
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp b/flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp
index 1012a9608aa27..ff346e79276ce 100644
--- a/flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp
+++ b/flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp
@@ -483,6 +483,8 @@ class DoConcurrentConversion
}
loopNestClauseOps.loopInclusive = rewriter.getUnitAttr();
+ loopNestClauseOps.collapseNumLoops =
+ rewriter.getI64IntegerAttr(loopNestClauseOps.loopLowerBounds.size());
}
std::pair<mlir::omp::LoopNestOp, mlir::omp::WsloopOp>
diff --git a/flang/test/Transforms/DoConcurrent/multiple_iteration_ranges.f90 b/flang/test/Transforms/DoConcurrent/multiple_iteration_ranges.f90
index 015a9104942e3..7de38bf064bb6 100644
--- a/flang/test/Transforms/DoConcurrent/multiple_iteration_ranges.f90
+++ b/flang/test/Transforms/DoConcurrent/multiple_iteration_ranges.f90
@@ -75,7 +75,7 @@ program main
! COMMON-SAME: (%[[ARG0:[^[:space:]]+]], %[[ARG1:[^[:space:]]+]], %[[ARG2:[^[:space:]]+]])
! COMMON-SAME: : index = (%[[LB_I]], %[[LB_J]], %[[LB_K]])
! COMMON-SAME: to (%[[UB_I]], %[[UB_J]], %[[UB_K]]) inclusive
-! COMMON-SAME: step (%[[STEP_I]], %[[STEP_J]], %[[STEP_K]]) {
+! COMMON-SAME: step (%[[STEP_I]], %[[STEP_J]], %[[STEP_K]]) collapse(3) {
! COMMON-NEXT: %[[IV_IDX_I:.*]] = fir.convert %[[ARG0]]
! COMMON-NEXT: fir.store %[[IV_IDX_I]] to %[[BINDING_I]]#0
More information about the flang-commits
mailing list