diff options
author | Alexander Musman <alexander.musman@gmail.com> | 2014-07-21 09:42:05 +0000 |
---|---|---|
committer | Alexander Musman <alexander.musman@gmail.com> | 2014-07-21 09:42:05 +0000 |
commit | d9ed09f7a5f149ea3ed7904f83ed70bf12963842 (patch) | |
tree | b4efe1d3d62612141434996c2c6d7db1fe730d27 /clang/lib/Sema/TreeTransform.h | |
parent | ddf36dea135db24d073acd8dbc1251dc798624bb (diff) | |
download | bcm5719-llvm-d9ed09f7a5f149ea3ed7904f83ed70bf12963842.tar.gz bcm5719-llvm-d9ed09f7a5f149ea3ed7904f83ed70bf12963842.zip |
[OPENMP] Parsing/Sema of the OpenMP directive 'critical'.
llvm-svn: 213510
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 1f648d4aca6..ba67df7417d 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1298,12 +1298,12 @@ public: /// By default, performs semantic analysis to build the new statement. /// Subclasses may override this routine to provide different behavior. StmtResult RebuildOMPExecutableDirective(OpenMPDirectiveKind Kind, + DeclarationNameInfo DirName, ArrayRef<OMPClause *> Clauses, - Stmt *AStmt, - SourceLocation StartLoc, + Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc) { - return getSema().ActOnOpenMPExecutableDirective(Kind, Clauses, AStmt, - StartLoc, EndLoc); + return getSema().ActOnOpenMPExecutableDirective(Kind, DirName, Clauses, + AStmt, StartLoc, EndLoc); } /// \brief Build a new OpenMP 'if' clause. @@ -6445,9 +6445,16 @@ StmtResult TreeTransform<Derived>::TransformOMPExecutableDirective( return StmtError(); } + // Transform directive name for 'omp critical' directive. + DeclarationNameInfo DirName; + if (D->getDirectiveKind() == OMPD_critical) { + DirName = cast<OMPCriticalDirective>(D)->getDirectiveName(); + DirName = getDerived().TransformDeclarationNameInfo(DirName); + } + return getDerived().RebuildOMPExecutableDirective( - D->getDirectiveKind(), TClauses, AssociatedStmt.get(), D->getLocStart(), - D->getLocEnd()); + D->getDirectiveKind(), DirName, TClauses, AssociatedStmt.get(), + D->getLocStart(), D->getLocEnd()); } template <typename Derived> @@ -6528,6 +6535,16 @@ TreeTransform<Derived>::TransformOMPMasterDirective(OMPMasterDirective *D) { } template <typename Derived> +StmtResult +TreeTransform<Derived>::TransformOMPCriticalDirective(OMPCriticalDirective *D) { + getDerived().getSema().StartOpenMPDSABlock( + OMPD_critical, D->getDirectiveName(), nullptr, D->getLocStart()); + StmtResult Res = getDerived().TransformOMPExecutableDirective(D); + getDerived().getSema().EndOpenMPDSABlock(Res.get()); + return Res; +} + +template <typename Derived> StmtResult TreeTransform<Derived>::TransformOMPParallelForDirective( OMPParallelForDirective *D) { DeclarationNameInfo DirName; |