diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-05-22 08:56:35 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-05-22 08:56:35 +0000 |
commit | 3ae88e2124b8f832b88d81700a545f06eab6e42c (patch) | |
tree | d32720497d902d116c975bda3b9f24b575b3feb3 /clang/lib/CodeGen/CGExprComplex.cpp | |
parent | b84141a6fe584381e97adb2ed1fe9a2b6fd90fc7 (diff) | |
download | bcm5719-llvm-3ae88e2124b8f832b88d81700a545f06eab6e42c.tar.gz bcm5719-llvm-3ae88e2124b8f832b88d81700a545f06eab6e42c.zip |
[OPENMP] Prepare codegen for privates in tasks for non-capturing of privates in CapturedStmt.
Reworked codegen for privates in tasks:
call @kmpc_omp_task_alloc();
...
call @kmpc_omp_task(task_proxy);
void map_privates(.privates_rec. *privs, type1 ** priv1_ref, ..., typen **privn_ref) {
*priv1_ref = &privs->private1;
...
*privn_ref = &privs->privaten;
ret void
}
i32 task_entry(i32 ThreadId, i32 PartId, void* privs, void (void*, ...) map_privates, shareds* captures) {
type1 **priv1;
...
typen **privn;
call map_privates(privs, priv1, ..., privn);
<Task body with priv1, .., privn instead of the captured variables>.
ret i32
}
i32 task_proxy(i32 ThreadId, kmp_task_t_with_privates *tt) {
call task_entry(ThreadId, tt->task_data.PartId, &tt->privates, map_privates, tt->task_data.shareds);
}
llvm-svn: 238010
Diffstat (limited to 'clang/lib/CodeGen/CGExprComplex.cpp')
0 files changed, 0 insertions, 0 deletions