[Mlir-commits] [llvm] [mlir] [OMPIRBuilder] - Make offloading input data persist for deferred target tasks (PR #133499)
Sergio Afonso
llvmlistbot at llvm.org
Thu May 8 05:50:53 PDT 2025
================
@@ -7378,13 +7530,43 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::emitTargetTask(
TaskData = Builder.CreateCall(TaskAllocFn, TaskAllocArgs);
+ Align Alignment = TaskData->getPointerAlignment(M.getDataLayout());
if (HasShareds) {
- Value *Shareds = StaleCI->getArgOperand(1);
- Align Alignment = TaskData->getPointerAlignment(M.getDataLayout());
- Value *TaskShareds = Builder.CreateLoad(VoidPtr, TaskData);
+ Value *Shareds = StaleCI->getArgOperand(SharedArgOperandNo);
+ Value *TaskT = Builder.CreateStructGEP(TaskWithPrivatesTy, TaskData, 0);
+ Value *TaskSharedsPtr = TaskT;
+ if (TaskWithPrivatesTy != Task) {
+ TaskSharedsPtr = Builder.CreateStructGEP(Task, TaskT, 0);
+ }
+ Value *TaskShareds = Builder.CreateLoad(VoidPtr, TaskSharedsPtr);
+
Builder.CreateMemCpy(TaskShareds, Alignment, Shareds, Alignment,
SharedsSize);
}
+ if (OffloadingArraysToPrivatize.size()) {
----------------
skatrak wrote:
```suggestion
if (!OffloadingArraysToPrivatize.empty()) {
```
https://github.com/llvm/llvm-project/pull/133499
More information about the Mlir-commits
mailing list