summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclOpenMP.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2016-02-08 09:29:13 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2016-02-08 09:29:13 +0000
commit90c228f0baee4e807f7355066f31c3438f1fcafd (patch)
tree92068ace18446aeb21f0b85563da405914f8be74 /clang/lib/AST/DeclOpenMP.cpp
parent9ab99ab985f7e4d6eb21deaedbf75344833f1465 (diff)
downloadbcm5719-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.cpp21
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());
+}
+
OpenPOWER on IntegriCloud