summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorAlexander Musman <alexander.musman@gmail.com>2014-07-21 09:42:05 +0000
committerAlexander Musman <alexander.musman@gmail.com>2014-07-21 09:42:05 +0000
commitd9ed09f7a5f149ea3ed7904f83ed70bf12963842 (patch)
treeb4efe1d3d62612141434996c2c6d7db1fe730d27 /clang/lib/Sema/TreeTransform.h
parentddf36dea135db24d073acd8dbc1251dc798624bb (diff)
downloadbcm5719-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.h29
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;
OpenPOWER on IntegriCloud