[clang] [OpenACC][CIR] Implement 'alloca copying' for private lowering (PR #161382)
Andy Kaylor via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 30 13:30:02 PDT 2025
================
@@ -36,6 +36,77 @@ mlir::Block *OpenACCRecipeBuilderBase::createRecipeBlock(mlir::Region ®ion,
llvm::SmallVector<mlir::Location> locs{types.size(), loc};
return builder.createBlock(®ion, region.end(), types, locs);
}
+void OpenACCRecipeBuilderBase::makeAllocaCopy(mlir::Location loc,
+ mlir::Type copyType,
+ mlir::Value numEltsToCopy,
+ mlir::Value offsetPerSubarray,
+ mlir::Value destAlloca,
+ mlir::Value srcAlloca) {
+ mlir::OpBuilder::InsertionGuard guardCase(builder);
+
+ mlir::Type itrTy = cgf.cgm.convertType(cgf.getContext().UnsignedLongLongTy);
+ auto itrPtrTy = cir::PointerType::get(itrTy);
+ mlir::IntegerAttr itrAlign =
+ cgf.cgm.getSize(cgf.getContext().getTypeAlignInChars(
+ cgf.getContext().UnsignedLongLongTy));
+
+ auto loopBuilder = [&]() {
+ auto itr =
+ cir::AllocaOp::create(builder, loc, itrPtrTy, itrTy, "itr", itrAlign);
+ cir::ConstantOp constZero = builder.getConstInt(loc, itrTy, 0);
+ builder.CIRBaseBuilderTy::createStore(loc, constZero.getResult(), itr);
----------------
andykaylor wrote:
```suggestion
builder.CIRBaseBuilderTy::createStore(loc, constZero, itr);
```
Any operation that returns a single result can be implicitly converted to `mlir::Value`.
https://github.com/llvm/llvm-project/pull/161382
More information about the cfe-commits
mailing list