[OPENMP] CodeGen for "omp atomic read [seq_cst]" directive.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 22 Jan 2015 05:44:37 +0000 (05:44 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 22 Jan 2015 05:44:37 +0000 (05:44 +0000)
commit92efdce5037ec34b1cf611ab597bcb8c26105ebf
tree34c297b34db303d8415154843032a91b5cbe7f19
parent137421c8a99c70b93df9001ae77a90e476f8822f
[OPENMP] CodeGen for "omp atomic read [seq_cst]" directive.
"omp atomic read [seq_cst]" accepts expressions "v=x;". In this patch we perform
an atomic load of "x" (using builtin atomic loading instructions or a call to
"atomic_load()" for simple lvalues and "kmpc_atomic_start();load
<x>;kmpc_atomic_end();" for other lvalues), convert the result of loading to
type of "v" (using EmitScalarConversion() for simple types and
EmitComplexToScalarConversion() for conversions from complex to scalar) and then
store the result in "v".)
Differential Revision: http://reviews.llvm.org/D6431

llvm-svn: 226786
clang/lib/CodeGen/CGAtomic.cpp
clang/lib/CodeGen/CGStmtOpenMP.cpp
clang/test/OpenMP/atomic_read_codegen.c [new file with mode: 0644]