diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2016-02-08 09:29:13 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2016-02-08 09:29:13 +0000 |
commit | 90c228f0baee4e807f7355066f31c3438f1fcafd (patch) | |
tree | 92068ace18446aeb21f0b85563da405914f8be74 /clang/lib/AST/DeclOpenMP.cpp | |
parent | 9ab99ab985f7e4d6eb21deaedbf75344833f1465 (diff) | |
download | bcm5719-llvm-90c228f0baee4e807f7355066f31c3438f1fcafd.tar.gz bcm5719-llvm-90c228f0baee4e807f7355066f31c3438f1fcafd.zip |
[OPENMP 4.5] Ccapture/codegen of private non-static data members.
OpenMP 4.5 introduces privatization of non-static data members of current class in non-static member functions.
To correctly handle such kind of privatization a new (pseudo)declaration VarDecl-based node is added. It allows to reuse an existing code for capturing variables in Lambdas/Block/Captured blocks of code for correct privatization and codegen.
llvm-svn: 260077
Diffstat (limited to 'clang/lib/AST/DeclOpenMP.cpp')
-rw-r--r-- | clang/lib/AST/DeclOpenMP.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/clang/lib/AST/DeclOpenMP.cpp b/clang/lib/AST/DeclOpenMP.cpp index 493e2cd4122..33677bacea7 100644 --- a/clang/lib/AST/DeclOpenMP.cpp +++ b/clang/lib/AST/DeclOpenMP.cpp @@ -7,7 +7,8 @@ // //===----------------------------------------------------------------------===// /// \file -/// \brief This file implements OMPThreadPrivateDecl class. +/// \brief This file implements OMPThreadPrivateDecl, OMPCapturedFieldDecl +/// classes. /// //===----------------------------------------------------------------------===// @@ -52,3 +53,21 @@ void OMPThreadPrivateDecl::setVars(ArrayRef<Expr *> VL) { std::uninitialized_copy(VL.begin(), VL.end(), getTrailingObjects<Expr *>()); } +//===----------------------------------------------------------------------===// +// OMPCapturedFieldDecl Implementation. +//===----------------------------------------------------------------------===// + +void OMPCapturedFieldDecl::anchor() {} + +OMPCapturedFieldDecl *OMPCapturedFieldDecl::Create(ASTContext &C, + DeclContext *DC, + IdentifierInfo *Id, + QualType T) { + return new (C, DC) OMPCapturedFieldDecl(C, DC, Id, T); +} + +OMPCapturedFieldDecl *OMPCapturedFieldDecl::CreateDeserialized(ASTContext &C, + unsigned ID) { + return new (C, ID) OMPCapturedFieldDecl(C, nullptr, nullptr, QualType()); +} + |