[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