diff options
Diffstat (limited to 'clang/lib/AST/OpenMPClause.cpp')
| -rw-r--r-- | clang/lib/AST/OpenMPClause.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/clang/lib/AST/OpenMPClause.cpp b/clang/lib/AST/OpenMPClause.cpp index ae4fc1140476..6bdc86f61679 100644 --- a/clang/lib/AST/OpenMPClause.cpp +++ b/clang/lib/AST/OpenMPClause.cpp @@ -1755,6 +1755,24 @@ OMPContainsClause *OMPContainsClause::CreateEmpty(const ASTContext &C, return new (Mem) OMPContainsClause(K); } +OMPNumTeamsClause *OMPNumTeamsClause::Create( + const ASTContext &C, OpenMPDirectiveKind CaptureRegion, + SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, + ArrayRef<Expr *> VL, Stmt *PreInit) { + void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(VL.size())); + OMPNumTeamsClause *Clause = + new (Mem) OMPNumTeamsClause(C, StartLoc, LParenLoc, EndLoc, VL.size()); + Clause->setVarRefs(VL); + Clause->setPreInitStmt(PreInit, CaptureRegion); + return Clause; +} + +OMPNumTeamsClause *OMPNumTeamsClause::CreateEmpty(const ASTContext &C, + unsigned N) { + void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(N)); + return new (Mem) OMPNumTeamsClause(N); +} + //===----------------------------------------------------------------------===// // OpenMP clauses printing methods //===----------------------------------------------------------------------===// @@ -2055,9 +2073,11 @@ void OMPClausePrinter::VisitOMPDeviceClause(OMPDeviceClause *Node) { } void OMPClausePrinter::VisitOMPNumTeamsClause(OMPNumTeamsClause *Node) { - OS << "num_teams("; - Node->getNumTeams()->printPretty(OS, nullptr, Policy, 0); - OS << ")"; + if (!Node->varlist_empty()) { + OS << "num_teams"; + VisitOMPClauseList(Node, '('); + OS << ")"; + } } void OMPClausePrinter::VisitOMPThreadLimitClause(OMPThreadLimitClause *Node) { |
