diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp')
| -rw-r--r-- | contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp | 56 | 
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp b/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp index a7c71bb5f45c..880817a1339b 100644 --- a/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp +++ b/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp @@ -1720,3 +1720,59 @@ OMPTargetTeamsDistributeParallelForSimdDirective::CreateEmpty(        CollapsedNum, NumClauses);  } +OMPTargetTeamsDistributeSimdDirective * +OMPTargetTeamsDistributeSimdDirective::Create( +    const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc, +    unsigned CollapsedNum, ArrayRef<OMPClause *> Clauses, Stmt *AssociatedStmt, +    const HelperExprs &Exprs) { +  auto Size = llvm::alignTo(sizeof(OMPTargetTeamsDistributeSimdDirective), +                            alignof(OMPClause *)); +  void *Mem = C.Allocate( +      Size + sizeof(OMPClause *) * Clauses.size() + +      sizeof(Stmt *) * +          numLoopChildren(CollapsedNum, OMPD_target_teams_distribute_simd)); +  OMPTargetTeamsDistributeSimdDirective *Dir = new (Mem) +      OMPTargetTeamsDistributeSimdDirective(StartLoc, EndLoc, CollapsedNum, +                                            Clauses.size()); +  Dir->setClauses(Clauses); +  Dir->setAssociatedStmt(AssociatedStmt); +  Dir->setIterationVariable(Exprs.IterationVarRef); +  Dir->setLastIteration(Exprs.LastIteration); +  Dir->setCalcLastIteration(Exprs.CalcLastIteration); +  Dir->setPreCond(Exprs.PreCond); +  Dir->setCond(Exprs.Cond); +  Dir->setInit(Exprs.Init); +  Dir->setInc(Exprs.Inc); +  Dir->setIsLastIterVariable(Exprs.IL); +  Dir->setLowerBoundVariable(Exprs.LB); +  Dir->setUpperBoundVariable(Exprs.UB); +  Dir->setStrideVariable(Exprs.ST); +  Dir->setEnsureUpperBound(Exprs.EUB); +  Dir->setNextLowerBound(Exprs.NLB); +  Dir->setNextUpperBound(Exprs.NUB); +  Dir->setNumIterations(Exprs.NumIterations); +  Dir->setPrevLowerBoundVariable(Exprs.PrevLB); +  Dir->setPrevUpperBoundVariable(Exprs.PrevUB); +  Dir->setCounters(Exprs.Counters); +  Dir->setPrivateCounters(Exprs.PrivateCounters); +  Dir->setInits(Exprs.Inits); +  Dir->setUpdates(Exprs.Updates); +  Dir->setFinals(Exprs.Finals); +  Dir->setPreInits(Exprs.PreInits); +  return Dir; +} + +OMPTargetTeamsDistributeSimdDirective * +OMPTargetTeamsDistributeSimdDirective::CreateEmpty(const ASTContext &C, +                                                   unsigned NumClauses, +                                                   unsigned CollapsedNum, +                                                   EmptyShell) { +  auto Size = llvm::alignTo(sizeof(OMPTargetTeamsDistributeSimdDirective), +                            alignof(OMPClause *)); +  void *Mem = C.Allocate( +      Size + sizeof(OMPClause *) * NumClauses + +      sizeof(Stmt *) * +          numLoopChildren(CollapsedNum, OMPD_target_teams_distribute_simd)); +  return new (Mem) +      OMPTargetTeamsDistributeSimdDirective(CollapsedNum, NumClauses); +}  | 
