[Mlir-commits] [flang] [mlir] [flang][acc] Fix collapse(force:N) + reduction producing redundant inner loop (PR #191312)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Apr 10 11:23:40 PDT 2026
================
@@ -4684,6 +4546,22 @@ bool Fortran::lower::isInOpenACCLoop(fir::FirOpBuilder &builder) {
return false;
}
+bool Fortran::lower::isInsideCollapsedACCLoop(fir::FirOpBuilder &builder) {
+ auto parentLoop =
+ builder.getBlock()->getParent()->getParentOfType<mlir::acc::LoopOp>();
+ if (!parentLoop)
+ return false;
+ unsigned numParentIVs = parentLoop.getBody().getNumArguments();
+ if (numParentIVs <= 1)
+ return false;
+
+ // Check that there are still collapsed dimensions to consume:
+ // no inner acc.loop has been generated yet.
+ unsigned innerAccLoops = 0;
+ parentLoop.getBody().walk([&](mlir::acc::LoopOp) { ++innerAccLoops; });
+ return (innerAccLoops + 1 < numParentIVs);
----------------
khaki3 wrote:
To support non-tightly nested loops, I need to merge the fix in https://github.com/llvm/llvm-project/pull/191310. I will close this branch and combine them.
https://github.com/llvm/llvm-project/pull/191312
More information about the Mlir-commits
mailing list