================ @@ -162,7 +173,52 @@ class DoConcurrentConversion assert(loop.getRegion().hasOneBlock()); mlir::Block &loopBlock = loop.getRegion().getBlocks().front(); - // Collect iteration variable(s) allocations do that we can move them + // Handle localization + if (!loop.getLocalVars().empty()) { + mlir::OpBuilder::InsertionGuard guard(rewriter); + rewriter.setInsertionPointToStart(&loop.getRegion().front()); + + std::optional<mlir::ArrayAttr> localSyms = loop.getLocalSyms(); + + for (auto [localVar, localArg, localizerSym] : llvm::zip_equal( + loop.getLocalVars(), loop.getRegionLocalArgs(), *localSyms)) { + mlir::SymbolRefAttr localizerName = + llvm::cast<mlir::SymbolRefAttr>(localizerSym); + fir::LocalitySpecifierOp localizer = findLocalizer(loop, localizerName); + + mlir::Value localAlloc = + rewriter.create<fir::AllocaOp>(loop.getLoc(), localizer.getType()); ---------------- ergawy wrote:
I think you meant for the `init` and `dealloc` todo right? https://github.com/llvm/llvm-project/pull/138512 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits