aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/StackMaps.cpp
diff options
context:
space:
mode:
authorPeixin-Qiao <qiaopeixin@huawei.com>2022-06-07 15:08:17 +0800
committerPeixin-Qiao <qiaopeixin@huawei.com>2022-06-07 15:08:17 +0800
commit411bd2d40788c8cb869dc4fdc37e01a57213cda9 (patch)
treee569cd03e149b043750da53d24780fec6826d7b0 /llvm/lib/CodeGen/StackMaps.cpp
parent1b182c65ebe9d86f8c8d9c8212eda1c5e6681ace (diff)
downloadllvm-411bd2d40788c8cb869dc4fdc37e01a57213cda9.zip
llvm-411bd2d40788c8cb869dc4fdc37e01a57213cda9.tar.gz
llvm-411bd2d40788c8cb869dc4fdc37e01a57213cda9.tar.bz2
[flang][OpenMP] Support lowering parse-tree to MLIR for threadprivate directive
This supports lowering parse-tree to MLIR for threadprivate directive following the OpenMP 5.1 [2.21.2] standard. Take the following as an example: ``` program m integer, save :: i !$omp threadprivate(i) call sub(i) !$omp parallel call sub(i) !$omp end parallel end ``` ``` func.func @_QQmain() { %0 = fir.address_of(@_QFEi) : !fir.ref<i32> %1 = omp.threadprivate %0 : !fir.ref<i32> -> !fir.ref<i32> fir.call @_QPsub(%1) : (!fir.ref<i32>) -> () omp.parallel { %2 = omp.threadprivate %0 : !fir.ref<i32> -> !fir.ref<i32> fir.call @_QPsub(%2) : (!fir.ref<i32>) -> () omp.terminator } return } ``` A threadprivate operation (omp.threadprivate) is created for all references to a threadprivate variable. The runtime will appropriately return a threadprivate var (%1 as above) or its copy (%2 as above) depending on whether it is outside or inside a parallel region. For threadprivate access outside the parallel region, the threadprivate operation is created in instantiateVar. Inside the parallel region, it is created in createBodyOfOp. One new utility function collectSymbolSet is created for collecting all the variables with a property within a evaluation, which may be one Fortran, or OpenMP, or OpenACC construct. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D124226
Diffstat (limited to 'llvm/lib/CodeGen/StackMaps.cpp')
0 files changed, 0 insertions, 0 deletions