diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2014-03-31 03:36:38 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2014-03-31 03:36:38 +0000 |
commit | d48bcd8a4693b4adedd1db4be64a6998d490fa9a (patch) | |
tree | 74e5c8eb6bb796ab67ab519ddbc8362fc1f1c6a8 /clang/lib/Sema/TreeTransform.h | |
parent | 79cfed55fc923b137a1a41702534b6830c4f5851 (diff) | |
download | bcm5719-llvm-d48bcd8a4693b4adedd1db4be64a6998d490fa9a.tar.gz bcm5719-llvm-d48bcd8a4693b4adedd1db4be64a6998d490fa9a.zip |
[OPENMP] Implemented 'copyin' clause
llvm-svn: 205164
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index a8ec18c7404..2c7328983a3 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1382,6 +1382,18 @@ public: EndLoc); } + /// \brief Build a new OpenMP 'copyin' clause. + /// + /// By default, performs semantic analysis to build the new statement. + /// Subclasses may override this routine to provide different behavior. + OMPClause *RebuildOMPCopyinClause(ArrayRef<Expr *> VarList, + SourceLocation StartLoc, + SourceLocation LParenLoc, + SourceLocation EndLoc) { + return getSema().ActOnOpenMPCopyinClause(VarList, StartLoc, LParenLoc, + EndLoc); + } + /// \brief Rebuild the operand to an Objective-C \@synchronized statement. /// /// By default, performs semantic analysis to build the new statement. @@ -6422,6 +6434,25 @@ TreeTransform<Derived>::TransformOMPSharedClause(OMPSharedClause *C) { C->getLocEnd()); } +template<typename Derived> +OMPClause * +TreeTransform<Derived>::TransformOMPCopyinClause(OMPCopyinClause *C) { + llvm::SmallVector<Expr *, 16> Vars; + Vars.reserve(C->varlist_size()); + for (OMPCopyinClause::varlist_iterator I = C->varlist_begin(), + E = C->varlist_end(); + I != E; ++I) { + ExprResult EVar = getDerived().TransformExpr(cast<Expr>(*I)); + if (EVar.isInvalid()) + return 0; + Vars.push_back(EVar.take()); + } + return getDerived().RebuildOMPCopyinClause(Vars, + C->getLocStart(), + C->getLParenLoc(), + C->getLocEnd()); +} + //===----------------------------------------------------------------------===// // Expression transformation //===----------------------------------------------------------------------===// |