Lines Matching defs:Clauses

2116     // OpenMP 4.5 [2.15.5, Data-mapping Attribute Rules and Clauses].
2779 ArrayRef<OMPClause *> Clauses) {
2786 for (OMPClause *C : Clauses) {
2811 for (OMPClause *C : Clauses) {
2844 ArrayRef<OMPClause *> Clauses);
2990 static bool finishLinearClauses(Sema &SemaRef, ArrayRef<OMPClause *> Clauses,
3000 for (OMPClause *C : Clauses) {
3414 SourceLocation Loc, ArrayRef<Expr *> VarList, ArrayRef<OMPClause *> Clauses,
3416 assert(Clauses.size() <= 2 && "Expected at most two clauses.");
3419 if (Clauses.empty()) {
3428 for (const OMPClause *C : Clauses)
3482 auto *D = OMPAllocateDecl::Create(getASTContext(), Owner, Loc, Vars, Clauses);
3562 StmtResult SemaOpenMP::ActOnOpenMPAssumeDirective(ArrayRef<OMPClause *> Clauses,
3569 return OMPAssumeDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
4549 const ArrayRef<OMPClause *> Clauses) {
4553 for (const OMPClause *Clause : Clauses) {
4579 ArrayRef<OMPClause *> Clauses) {
4600 for (OMPClause *Clause : Clauses) {
4665 if (checkOrderedOrderSpecified(SemaRef, Clauses))
4711 for (OMPClause *C : Clauses) {
4726 for (OMPClause *C : Clauses) {
5056 ArrayRef<OMPClause *> Clauses,
5063 for (const OMPClause *C : Clauses) {
5222 ArrayRef<OMPClause *> Clauses) {
5226 llvm::make_filter_range(Clauses, OMPAllocateClause::classof);
5228 auto PrivateRange = llvm::make_filter_range(Clauses, [](const OMPClause *C) {
5766 SmallVectorImpl<OMPClause *> &Clauses) {
5771 for (int Cnt = 0, EndCnt = Clauses.size(); Cnt < EndCnt; ++Cnt) {
5772 auto *C = dyn_cast<OMPMapClause>(Clauses[Cnt]);
5892 Clauses.push_back(NewClause);
5970 OpenMPDirectiveKind CancelRegion, ArrayRef<OMPClause *> Clauses,
5979 OMPExecutableDirective::getSingleClause<OMPBindClause>(Clauses))
6015 for (OMPClause *C : Clauses) {
6036 ClausesWithImplicit.append(Clauses.begin(), Clauses.end());
6070 for (OMPClause *C : Clauses) {
6084 for (OMPClause *C : Clauses) {
6125 for (OMPClause *C : Clauses) {
6511 for (OMPClause *C : Clauses) {
6652 ErrorFound = checkIfClauses(SemaRef, Kind, Clauses, AllowedNameModifiers) ||
6926 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
6935 Res = ActOnOpenMPAssumeDirective(Clauses, AStmt, StartLoc, EndLoc);
7619 SemaOpenMP::ActOnOpenMPParallelDirective(ArrayRef<OMPClause *> Clauses,
7628 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
10319 static Expr *getCollapseNumberExpr(ArrayRef<OMPClause *> Clauses) {
10321 OMPExecutableDirective::getClausesOfKind<OMPCollapseClause>(Clauses);
10327 static Expr *getOrderedNumberExpr(ArrayRef<OMPClause *> Clauses) {
10329 OMPExecutableDirective::getClausesOfKind<OMPOrderedClause>(Clauses);
10336 const ArrayRef<OMPClause *> Clauses) {
10340 for (const OMPClause *Clause : Clauses) {
10380 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10392 OMPD_simd, getCollapseNumberExpr(Clauses), getOrderedNumberExpr(Clauses),
10397 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
10400 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
10404 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
10409 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10419 OMPD_for, getCollapseNumberExpr(Clauses), getOrderedNumberExpr(Clauses),
10424 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
10428 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
10434 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10446 checkOpenMPLoop(OMPD_for_simd, getCollapseNumberExpr(Clauses),
10447 getOrderedNumberExpr(Clauses), CS, SemaRef, *DSAStack,
10452 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
10455 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
10459 NestedLoopCount, Clauses, AStmt, B);
10497 SemaOpenMP::ActOnOpenMPSectionsDirective(ArrayRef<OMPClause *> Clauses,
10506 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
10532 SemaOpenMP::ActOnOpenMPDispatchDirective(ArrayRef<OMPClause *> Clauses,
10578 Clauses, AStmt, TargetCallLoc);
10581 static bool checkGenericLoopLastprivate(Sema &S, ArrayRef<OMPClause *> Clauses,
10585 for (OMPClause *C : Clauses) {
10607 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10615 if (checkGenericLoopLastprivate(SemaRef, Clauses, OMPD_loop, DSAStack))
10623 OMPD_loop, getCollapseNumberExpr(Clauses), getOrderedNumberExpr(Clauses),
10632 NestedLoopCount, Clauses, AStmt, B);
10636 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10644 if (checkGenericLoopLastprivate(SemaRef, Clauses, OMPD_teams_loop, DSAStack))
10652 checkOpenMPLoop(OMPD_teams_loop, getCollapseNumberExpr(Clauses),
10664 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
10668 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10676 if (checkGenericLoopLastprivate(SemaRef, Clauses, OMPD_target_teams_loop,
10686 checkOpenMPLoop(OMPD_target_teams_loop, getCollapseNumberExpr(Clauses),
10696 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
10701 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10709 if (checkGenericLoopLastprivate(SemaRef, Clauses, OMPD_parallel_loop,
10719 checkOpenMPLoop(OMPD_parallel_loop, getCollapseNumberExpr(Clauses),
10729 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
10733 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10741 if (checkGenericLoopLastprivate(SemaRef, Clauses, OMPD_target_parallel_loop,
10751 checkOpenMPLoop(OMPD_target_parallel_loop, getCollapseNumberExpr(Clauses),
10761 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
10764 StmtResult SemaOpenMP::ActOnOpenMPSingleDirective(ArrayRef<OMPClause *> Clauses,
10779 for (const OMPClause *Clause : Clauses) {
10792 return OMPSingleDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
10807 StmtResult SemaOpenMP::ActOnOpenMPMaskedDirective(ArrayRef<OMPClause *> Clauses,
10816 return OMPMaskedDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
10821 const DeclarationNameInfo &DirName, ArrayRef<OMPClause *> Clauses,
10830 for (const OMPClause *C : Clauses) {
10871 EndLoc, Clauses, AStmt);
10878 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10889 checkOpenMPLoop(OMPD_parallel_for, getCollapseNumberExpr(Clauses),
10890 getOrderedNumberExpr(Clauses), AStmt, SemaRef, *DSAStack,
10895 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
10899 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
10904 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10916 checkOpenMPLoop(OMPD_parallel_for_simd, getCollapseNumberExpr(Clauses),
10917 getOrderedNumberExpr(Clauses), CS, SemaRef, *DSAStack,
10922 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
10925 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
10929 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
10933 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10941 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
10946 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10954 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
10959 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
10967 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
10973 Sema &S, ArrayRef<OMPClause *> Clauses,
10977 for (const OMPClause *C : Clauses) {
10994 StmtResult SemaOpenMP::ActOnOpenMPTaskDirective(ArrayRef<OMPClause *> Clauses,
11004 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
11010 return OMPTaskDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
11024 StmtResult SemaOpenMP::ActOnOpenMPErrorDirective(ArrayRef<OMPClause *> Clauses,
11029 OMPExecutableDirective::getSingleClause<OMPAtClause>(Clauses);
11037 OMPExecutableDirective::getSingleClause<OMPSeverityClause>(Clauses);
11039 OMPExecutableDirective::getSingleClause<OMPMessageClause>(Clauses);
11052 return OMPErrorDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses);
11056 SemaOpenMP::ActOnOpenMPTaskwaitDirective(ArrayRef<OMPClause *> Clauses,
11060 OMPExecutableDirective::getSingleClause<OMPNowaitClause>(Clauses);
11062 !OMPExecutableDirective::getClausesOfKind<OMPDependClause>(Clauses)
11070 Clauses);
11074 SemaOpenMP::ActOnOpenMPTaskgroupDirective(ArrayRef<OMPClause *> Clauses,
11085 Clauses, AStmt,
11089 StmtResult SemaOpenMP::ActOnOpenMPFlushDirective(ArrayRef<OMPClause *> Clauses,
11094 for (OMPClause *C : Clauses) {
11102 for (const OMPClause *C : Clauses) {
11126 return OMPFlushDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses);
11129 StmtResult SemaOpenMP::ActOnOpenMPDepobjDirective(ArrayRef<OMPClause *> Clauses,
11132 if (Clauses.empty()) {
11135 } else if (Clauses[0]->getClauseKind() != OMPC_depobj) {
11136 Diag(Clauses[0]->getBeginLoc(), diag::err_omp_depobj_expected);
11140 if (Clauses.size() > 2) {
11141 Diag(Clauses[2]->getBeginLoc(),
11144 } else if (Clauses.size() < 1) {
11145 Diag(Clauses[0]->getEndLoc(), diag::err_omp_depobj_single_clause_expected);
11148 return OMPDepobjDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses);
11151 StmtResult SemaOpenMP::ActOnOpenMPScanDirective(ArrayRef<OMPClause *> Clauses,
11155 if (Clauses.size() != 1) {
11156 Diag(Clauses.empty() ? EndLoc : Clauses[1]->getBeginLoc(),
11178 return OMPScanDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses);
11182 SemaOpenMP::ActOnOpenMPOrderedDirective(ArrayRef<OMPClause *> Clauses,
11194 for (const OMPClause *C : Clauses) {
11259 } else if (TC || Clauses.empty()) {
11293 return OMPOrderedDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
12352 StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses,
12373 for (const OMPClause *C : Clauses) {
12900 // could not be performed (Clauses are not available).
12901 auto *It = find_if(Clauses, [](OMPClause *C) {
12904 if (It != Clauses.end()) {
12925 Context, StartLoc, EndLoc, Clauses, AStmt,
12929 StmtResult SemaOpenMP::ActOnOpenMPTargetDirective(ArrayRef<OMPClause *> Clauses,
12977 return OMPTargetDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
12982 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
12990 getASTContext(), StartLoc, EndLoc, Clauses, AStmt,
12995 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13007 checkOpenMPLoop(OMPD_target_parallel_for, getCollapseNumberExpr(Clauses),
13008 getOrderedNumberExpr(Clauses), CS, SemaRef, *DSAStack,
13013 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13017 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
13022 static bool hasClauses(ArrayRef<OMPClause *> Clauses,
13025 Clauses, [K](const OMPClause *C) { return C->getClauseKind() == K; });
13029 static bool hasClauses(ArrayRef<OMPClause *> Clauses, const OpenMPClauseKind K,
13031 return hasClauses(Clauses, K) || hasClauses(Clauses, ClauseTypes...);
13035 static bool isClauseMappable(ArrayRef<OMPClause *> Clauses) {
13036 for (const OMPClause *C : Clauses) {
13055 SemaOpenMP::ActOnOpenMPTargetDataDirective(ArrayRef<OMPClause *> Clauses,
13066 if (!hasClauses(Clauses, OMPC_map, OMPC_use_device_ptr) &&
13068 !hasClauses(Clauses, OMPC_use_device_addr))) {
13082 Clauses, AStmt);
13086 ArrayRef<OMPClause *> Clauses, SourceLocation StartLoc,
13095 if (!hasClauses(Clauses, OMPC_map)) {
13102 Clauses, AStmt);
13106 ArrayRef<OMPClause *> Clauses, SourceLocation StartLoc,
13115 if (!hasClauses(Clauses, OMPC_map)) {
13122 Clauses, AStmt);
13126 ArrayRef<OMPClause *> Clauses, SourceLocation StartLoc,
13133 if (!hasClauses(Clauses, OMPC_to, OMPC_from)) {
13138 if (!isClauseMappable(Clauses)) {
13144 Clauses, AStmt);
13151 ArrayRef<OMPClause *> Clauses,
13153 auto ClauseItr = llvm::find_if(Clauses, llvm::IsaPred<ClauseType>);
13154 if (ClauseItr == Clauses.end())
13166 StmtResult SemaOpenMP::ActOnOpenMPTeamsDirective(ArrayRef<OMPClause *> Clauses,
13174 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed) ||
13176 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed))
13187 return OMPTeamsDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
13207 ArrayRef<OMPClause *> Clauses, SourceLocation StartLoc,
13218 return OMPCancelDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,
13223 ArrayRef<OMPClause *> Clauses) {
13226 for (const OMPClause *C : Clauses) {
13250 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13260 checkOpenMPLoop(OMPD_taskloop, getCollapseNumberExpr(Clauses),
13272 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13278 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13283 NestedLoopCount, Clauses, AStmt, B,
13288 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13301 checkOpenMPLoop(OMPD_taskloop_simd, getCollapseNumberExpr(Clauses),
13307 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13313 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13319 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13321 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13325 NestedLoopCount, Clauses, AStmt, B);
13329 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13339 checkOpenMPLoop(OMPD_master_taskloop, getCollapseNumberExpr(Clauses),
13351 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13357 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13362 NestedLoopCount, Clauses, AStmt, B,
13367 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13377 checkOpenMPLoop(OMPD_masked_taskloop, getCollapseNumberExpr(Clauses),
13389 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13395 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13400 NestedLoopCount, Clauses, AStmt, B,
13405 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13418 checkOpenMPLoop(OMPD_master_taskloop_simd, getCollapseNumberExpr(Clauses),
13424 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13430 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13436 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13438 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13442 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13446 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13459 checkOpenMPLoop(OMPD_masked_taskloop_simd, getCollapseNumberExpr(Clauses),
13465 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13471 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13477 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13479 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13483 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13487 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13499 OMPD_parallel_master_taskloop, getCollapseNumberExpr(Clauses),
13511 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13517 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13521 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
13526 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13538 OMPD_parallel_masked_taskloop, getCollapseNumberExpr(Clauses),
13550 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13556 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13560 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
13565 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13577 OMPD_parallel_master_taskloop_simd, getCollapseNumberExpr(Clauses),
13583 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13589 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13595 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13597 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13601 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13605 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13617 OMPD_parallel_masked_taskloop_simd, getCollapseNumberExpr(Clauses),
13623 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13629 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
13635 if (checkReductionClauseWithNogroup(SemaRef, Clauses))
13637 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13641 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13645 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13655 checkOpenMPLoop(OMPD_distribute, getCollapseNumberExpr(Clauses),
13666 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13671 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13683 OMPD_distribute_parallel_for, getCollapseNumberExpr(Clauses),
13693 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
13698 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13710 OMPD_distribute_parallel_for_simd, getCollapseNumberExpr(Clauses),
13716 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13719 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13723 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13727 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13739 checkOpenMPLoop(OMPD_distribute_simd, getCollapseNumberExpr(Clauses),
13745 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13748 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13752 NestedLoopCount, Clauses, AStmt, B);
13756 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13768 OMPD_target_parallel_for_simd, getCollapseNumberExpr(Clauses),
13769 getOrderedNumberExpr(Clauses), CS, SemaRef, *DSAStack,
13774 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13777 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13781 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13785 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13796 checkOpenMPLoop(OMPD_target_simd, getCollapseNumberExpr(Clauses),
13797 getOrderedNumberExpr(Clauses), CS, SemaRef, *DSAStack,
13802 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13805 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13809 NestedLoopCount, Clauses, AStmt, B);
13813 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13825 checkOpenMPLoop(OMPD_teams_distribute, getCollapseNumberExpr(Clauses),
13837 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13841 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13853 OMPD_teams_distribute_simd, getCollapseNumberExpr(Clauses),
13859 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13862 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13868 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13872 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13884 OMPD_teams_distribute_parallel_for_simd, getCollapseNumberExpr(Clauses),
13890 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
13893 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
13899 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
13903 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13915 OMPD_teams_distribute_parallel_for, getCollapseNumberExpr(Clauses),
13928 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
13933 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13941 bool HasThreadLimitAndNumTeamsClause = hasClauses(Clauses, OMPC_num_teams) &&
13942 hasClauses(Clauses, OMPC_thread_limit);
13943 bool HasBareClause = llvm::any_of(Clauses, [&](const OMPClause *C) {
13957 if (!checkNumExprsInClause<OMPNumTeamsClause>(*this, Clauses,
13959 !checkNumExprsInClause<OMPThreadLimitClause>(*this, Clauses,
13964 Clauses, AStmt);
13968 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
13974 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed) ||
13976 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed))
13986 OMPD_target_teams_distribute, getCollapseNumberExpr(Clauses),
13996 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
14000 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
14006 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed) ||
14008 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed))
14018 OMPD_target_teams_distribute_parallel_for, getCollapseNumberExpr(Clauses),
14024 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
14028 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B,
14033 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
14039 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed) ||
14041 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed))
14052 getCollapseNumberExpr(Clauses),
14058 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
14061 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
14065 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
14069 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
14075 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed) ||
14077 *this, Clauses, /*MaxNum=*/1, diag::err_omp_multi_expr_not_allowed))
14087 OMPD_target_teams_distribute_simd, getCollapseNumberExpr(Clauses),
14093 if (finishLinearClauses(SemaRef, Clauses, B, DSAStack))
14096 if (checkSimdlenSafelenSpecified(SemaRef, Clauses))
14100 getASTContext(), StartLoc, EndLoc, NestedLoopCount, Clauses, AStmt, B);
14208 StmtResult SemaOpenMP::ActOnOpenMPTileDirective(ArrayRef<OMPClause *> Clauses,
14216 OMPExecutableDirective::getSingleClause<OMPSizesClause>(Clauses);
14236 return OMPTileDirective::Create(Context, StartLoc, EndLoc, Clauses,
14475 return OMPTileDirective::Create(Context, StartLoc, EndLoc, Clauses, NumLoops,
14480 StmtResult SemaOpenMP::ActOnOpenMPUnrollDirective(ArrayRef<OMPClause *> Clauses,
14490 if (checkMutuallyExclusiveClauses(SemaRef, Clauses,
14495 OMPExecutableDirective::getSingleClause<OMPFullClause>(Clauses);
14497 OMPExecutableDirective::getSingleClause<OMPPartialClause>(Clauses);
14514 return OMPUnrollDirective::Create(Context, StartLoc, EndLoc, Clauses, AStmt,
14539 return OMPUnrollDirective::Create(Context, StartLoc, EndLoc, Clauses, AStmt,
14755 return OMPUnrollDirective::Create(Context, StartLoc, EndLoc, Clauses, AStmt,
14948 ArrayRef<OMPClause *> Clauses, Stmt *AStmt, SourceLocation StartLoc,
14960 OMPExecutableDirective::getSingleClause<OMPPermutationClause>(Clauses);
14973 return OMPInterchangeDirective::Create(Context, StartLoc, EndLoc, Clauses,
15026 return OMPInterchangeDirective::Create(Context, StartLoc, EndLoc, Clauses,
15139 return OMPInterchangeDirective::Create(Context, StartLoc, EndLoc, Clauses,
16775 SemaOpenMP::ActOnOpenMPInteropDirective(ArrayRef<OMPClause *> Clauses,
16781 if (!hasClauses(Clauses, OMPC_init, OMPC_use, OMPC_destroy, OMPC_nowait)) {
16799 for (const OMPClause *C : Clauses) {
16819 for (OMPClause *C : Clauses) {
16846 Clauses);
17488 // OpenMP [2.4.13, Data-sharing Attribute Clauses]
21985 Expr *MapperVarRef, ArrayRef<OMPClause *> Clauses, Decl *PrevDeclInScope) {
22045 SmallVector<OMPClause *, 4> ClausesWithImplicit(Clauses);
23311 StmtResult SemaOpenMP::ActOnOpenMPScopeDirective(ArrayRef<OMPClause *> Clauses,
23320 return OMPScopeDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses,