diff options
author | Alexander Musman <alexander.musman@gmail.com> | 2014-05-29 14:36:25 +0000 |
---|---|---|
committer | Alexander Musman <alexander.musman@gmail.com> | 2014-05-29 14:36:25 +0000 |
commit | f0d76e7dc3e5ca3969e44fd40417a0e568493a4e (patch) | |
tree | 15545611be68d7376c675f090b963a20e7046ec5 /clang/lib/Sema/TreeTransform.h | |
parent | fa5c0750f0fa18424de62878f0d717fee861cb9d (diff) | |
download | bcm5719-llvm-f0d76e7dc3e5ca3969e44fd40417a0e568493a4e.tar.gz bcm5719-llvm-f0d76e7dc3e5ca3969e44fd40417a0e568493a4e.zip |
Parsing/Sema for OMPAlignedClause.
llvm-svn: 209816
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index d2683bec649..a13c3e442e2 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1419,6 +1419,19 @@ public: ColonLoc, EndLoc); } + /// \brief Build a new OpenMP 'aligned' clause. + /// + /// By default, performs semantic analysis to build the new statement. + /// Subclasses may override this routine to provide different behavior. + OMPClause *RebuildOMPAlignedClause(ArrayRef<Expr *> VarList, Expr *Alignment, + SourceLocation StartLoc, + SourceLocation LParenLoc, + SourceLocation ColonLoc, + SourceLocation EndLoc) { + return getSema().ActOnOpenMPAlignedClause(VarList, Alignment, StartLoc, + LParenLoc, ColonLoc, EndLoc); + } + /// \brief Build a new OpenMP 'copyin' clause. /// /// By default, performs semantic analysis to build the new statement. @@ -6508,6 +6521,25 @@ TreeTransform<Derived>::TransformOMPLinearClause(OMPLinearClause *C) { template<typename Derived> OMPClause * +TreeTransform<Derived>::TransformOMPAlignedClause(OMPAlignedClause *C) { + llvm::SmallVector<Expr *, 16> Vars; + Vars.reserve(C->varlist_size()); + for (auto *VE : C->varlists()) { + ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE)); + if (EVar.isInvalid()) + return nullptr; + Vars.push_back(EVar.get()); + } + ExprResult Alignment = getDerived().TransformExpr(C->getAlignment()); + if (Alignment.isInvalid()) + return nullptr; + return getDerived().RebuildOMPAlignedClause( + Vars, Alignment.get(), C->getLocStart(), C->getLParenLoc(), + C->getColonLoc(), C->getLocEnd()); +} + +template<typename Derived> +OMPClause * TreeTransform<Derived>::TransformOMPCopyinClause(OMPCopyinClause *C) { llvm::SmallVector<Expr *, 16> Vars; Vars.reserve(C->varlist_size()); |