From d4a5470d8c4075045392397b016d4ca60def5da3 Mon Sep 17 00:00:00 2001 From: Valentin Clement Date: Mon, 17 Jul 2023 13:02:50 -0700 Subject: [PATCH] [flang][openacc] Add proper TODO for reduction with dynamic shaped array Lowering for reduction with dynamic shaped arrays is not implemented yet. Add a proper TODO for the time being. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D155324 --- flang/lib/Lower/OpenACC.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/flang/lib/Lower/OpenACC.cpp b/flang/lib/Lower/OpenACC.cpp index 745f9ac..8f8ce04 100644 --- a/flang/lib/Lower/OpenACC.cpp +++ b/flang/lib/Lower/OpenACC.cpp @@ -888,6 +888,20 @@ mlir::acc::ReductionRecipeOp Fortran::lower::createOrGetReductionRecipe( return recipe; } +/// Determine if the bounds represent a dynamic shape. +bool hasDynamicShape(llvm::SmallVector &bounds) { + if (bounds.empty()) + return false; + for (auto b : bounds) { + auto op = mlir::dyn_cast(b.getDefiningOp()); + if (((op.getLowerbound() && !fir::getIntIfConstant(op.getLowerbound())) || + (op.getUpperbound() && !fir::getIntIfConstant(op.getUpperbound()))) && + op.getExtent() && !fir::getIntIfConstant(op.getExtent())) + return true; + } + return false; +} + static void genReductions(const Fortran::parser::AccObjectListWithReduction &objectList, Fortran::lower::AbstractConverter &converter, @@ -908,6 +922,9 @@ genReductions(const Fortran::parser::AccObjectListWithReduction &objectList, converter, builder, semanticsContext, stmtCtx, accObject, operandLocation, asFortran, bounds); + if (hasDynamicShape(bounds)) + TODO(operandLocation, "OpenACC reductions with dynamic shaped array"); + mlir::Type reductionTy = fir::unwrapRefType(baseAddr.getType()); if (auto seqTy = mlir::dyn_cast(reductionTy)) reductionTy = seqTy.getEleTy(); -- 2.7.4