[llvm-branch-commits] [OpenMP] Extend taskgraph shared-data relocation to taskloop (PR #200405)
Julian Brown via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri May 29 06:54:59 PDT 2026
https://github.com/jtb20 created https://github.com/llvm/llvm-project/pull/200405
Build on the per-task relocation infrastructure introduced for
'omp task' in the previous patch and apply the same scheme to
taskloop tasks recorded inside a taskgraph. Without this,
by-reference captures inside a recorded taskloop iteration still
point at the original recording's stack on each replay.
On the compiler side (CGOpenMPRuntime.cpp), emit a relocation
thunk for the taskloop's captured statement via the shared
emitTaskRelocationFunction helper and pass it as the new trailing
argument of __kmpc_taskgraph_taskloop. The now-unused 'shareds'
and 'sizeof_shareds' parameters are dropped from the call and from
TGTaskLoopArgs.
On the runtime side, update __kmpc_taskgraph_taskloop to match
the new ABI (drop the dead 'shareds' / 'sizeof_shareds'
parameters, add the trailing kmp_task_relocate_t parameter) and
plumb the callback through the taskgraph variant of
__kmp_taskloop and __kmp_taskloop_linear so every recorded
subtask gets node->relocate = reloc, mirroring the explicit-task
path. Non-taskgraph callers pass a default nullptr and are
unaffected.
Add taskloop counterparts of the omp-task runtime tests added in
the previous patch.
Assisted-By: Claude Opus 4.7
More information about the llvm-branch-commits
mailing list