diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-07-01 06:57:41 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-07-01 06:57:41 +0000 |
commit | 6d4ed0583033169f4a83f352e6ef0bd9275e34fa (patch) | |
tree | 283082dc9a4eda33ade3539de6575c9305ec5a09 /clang/lib/Sema/TreeTransform.h | |
parent | 2510ba3f6e3153d94171bf7b0c6735fe644841cf (diff) | |
download | bcm5719-llvm-6d4ed0583033169f4a83f352e6ef0bd9275e34fa.tar.gz bcm5719-llvm-6d4ed0583033169f4a83f352e6ef0bd9275e34fa.zip |
[OPENMP 4.0] Initial support for 'omp cancellation point' construct.
Add parsing and sema analysis for 'omp cancellation point' directive.
llvm-svn: 241145
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 5d9c35f08df..41ab5a2e9b0 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1321,11 +1321,12 @@ public: /// Subclasses may override this routine to provide different behavior. StmtResult RebuildOMPExecutableDirective(OpenMPDirectiveKind Kind, DeclarationNameInfo DirName, + OpenMPDirectiveKind CancelRegion, ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc) { - return getSema().ActOnOpenMPExecutableDirective(Kind, DirName, Clauses, - AStmt, StartLoc, EndLoc); + return getSema().ActOnOpenMPExecutableDirective( + Kind, DirName, CancelRegion, Clauses, AStmt, StartLoc, EndLoc); } /// \brief Build a new OpenMP 'if' clause. @@ -6715,10 +6716,14 @@ StmtResult TreeTransform<Derived>::TransformOMPExecutableDirective( DirName = cast<OMPCriticalDirective>(D)->getDirectiveName(); DirName = getDerived().TransformDeclarationNameInfo(DirName); } + OpenMPDirectiveKind CancelRegion = OMPD_unknown; + if (D->getDirectiveKind() == OMPD_cancellation_point) { + CancelRegion = cast<OMPCancellationPointDirective>(D)->getCancelRegion(); + } return getDerived().RebuildOMPExecutableDirective( - D->getDirectiveKind(), DirName, TClauses, AssociatedStmt.get(), - D->getLocStart(), D->getLocEnd()); + D->getDirectiveKind(), DirName, CancelRegion, TClauses, + AssociatedStmt.get(), D->getLocStart(), D->getLocEnd()); } template <typename Derived> @@ -6962,6 +6967,17 @@ TreeTransform<Derived>::TransformOMPTeamsDirective(OMPTeamsDirective *D) { return Res; } +template <typename Derived> +StmtResult TreeTransform<Derived>::TransformOMPCancellationPointDirective( + OMPCancellationPointDirective *D) { + DeclarationNameInfo DirName; + getDerived().getSema().StartOpenMPDSABlock(OMPD_cancellation_point, DirName, + nullptr, D->getLocStart()); + StmtResult Res = getDerived().TransformOMPExecutableDirective(D); + getDerived().getSema().EndOpenMPDSABlock(Res.get()); + return Res; +} + //===----------------------------------------------------------------------===// // OpenMP clause transformation //===----------------------------------------------------------------------===// |