@@ -6549,18 +6549,14 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
65496549 ClausesWithImplicit);
65506550 }
65516551
6552- llvm::SmallVector<OpenMPDirectiveKind, 4> AllowedNameModifiers;
65536552 switch (Kind) {
65546553 case OMPD_parallel:
65556554 Res = ActOnOpenMPParallelDirective(ClausesWithImplicit, AStmt, StartLoc,
65566555 EndLoc);
6557- AllowedNameModifiers.push_back(OMPD_parallel);
65586556 break;
65596557 case OMPD_simd:
65606558 Res = ActOnOpenMPSimdDirective(ClausesWithImplicit, AStmt, StartLoc, EndLoc,
65616559 VarsWithInheritedDSA);
6562- if (getLangOpts().OpenMP >= 50)
6563- AllowedNameModifiers.push_back(OMPD_simd);
65646560 break;
65656561 case OMPD_tile:
65666562 Res =
@@ -6577,8 +6573,6 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
65776573 case OMPD_for_simd:
65786574 Res = ActOnOpenMPForSimdDirective(ClausesWithImplicit, AStmt, StartLoc,
65796575 EndLoc, VarsWithInheritedDSA);
6580- if (getLangOpts().OpenMP >= 50)
6581- AllowedNameModifiers.push_back(OMPD_simd);
65826576 break;
65836577 case OMPD_sections:
65846578 Res = ActOnOpenMPSectionsDirective(ClausesWithImplicit, AStmt, StartLoc,
@@ -6609,14 +6603,10 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
66096603 case OMPD_parallel_for:
66106604 Res = ActOnOpenMPParallelForDirective(ClausesWithImplicit, AStmt, StartLoc,
66116605 EndLoc, VarsWithInheritedDSA);
6612- AllowedNameModifiers.push_back(OMPD_parallel);
66136606 break;
66146607 case OMPD_parallel_for_simd:
66156608 Res = ActOnOpenMPParallelForSimdDirective(
66166609 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6617- AllowedNameModifiers.push_back(OMPD_parallel);
6618- if (getLangOpts().OpenMP >= 50)
6619- AllowedNameModifiers.push_back(OMPD_simd);
66206610 break;
66216611 case OMPD_scope:
66226612 Res =
@@ -6625,22 +6615,18 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
66256615 case OMPD_parallel_master:
66266616 Res = ActOnOpenMPParallelMasterDirective(ClausesWithImplicit, AStmt,
66276617 StartLoc, EndLoc);
6628- AllowedNameModifiers.push_back(OMPD_parallel);
66296618 break;
66306619 case OMPD_parallel_masked:
66316620 Res = ActOnOpenMPParallelMaskedDirective(ClausesWithImplicit, AStmt,
66326621 StartLoc, EndLoc);
6633- AllowedNameModifiers.push_back(OMPD_parallel);
66346622 break;
66356623 case OMPD_parallel_sections:
66366624 Res = ActOnOpenMPParallelSectionsDirective(ClausesWithImplicit, AStmt,
66376625 StartLoc, EndLoc);
6638- AllowedNameModifiers.push_back(OMPD_parallel);
66396626 break;
66406627 case OMPD_task:
66416628 Res =
66426629 ActOnOpenMPTaskDirective(ClausesWithImplicit, AStmt, StartLoc, EndLoc);
6643- AllowedNameModifiers.push_back(OMPD_task);
66446630 break;
66456631 case OMPD_taskyield:
66466632 assert(ClausesWithImplicit.empty() &&
@@ -6700,19 +6686,14 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
67006686 case OMPD_target:
67016687 Res = ActOnOpenMPTargetDirective(ClausesWithImplicit, AStmt, StartLoc,
67026688 EndLoc);
6703- AllowedNameModifiers.push_back(OMPD_target);
67046689 break;
67056690 case OMPD_target_parallel:
67066691 Res = ActOnOpenMPTargetParallelDirective(ClausesWithImplicit, AStmt,
67076692 StartLoc, EndLoc);
6708- AllowedNameModifiers.push_back(OMPD_target);
6709- AllowedNameModifiers.push_back(OMPD_parallel);
67106693 break;
67116694 case OMPD_target_parallel_for:
67126695 Res = ActOnOpenMPTargetParallelForDirective(
67136696 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6714- AllowedNameModifiers.push_back(OMPD_target);
6715- AllowedNameModifiers.push_back(OMPD_parallel);
67166697 break;
67176698 case OMPD_cancellation_point:
67186699 assert(ClausesWithImplicit.empty() &&
@@ -6726,90 +6707,58 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
67266707 "No associated statement allowed for 'omp cancel' directive");
67276708 Res = ActOnOpenMPCancelDirective(ClausesWithImplicit, StartLoc, EndLoc,
67286709 CancelRegion);
6729- AllowedNameModifiers.push_back(OMPD_cancel);
67306710 break;
67316711 case OMPD_target_data:
67326712 Res = ActOnOpenMPTargetDataDirective(ClausesWithImplicit, AStmt, StartLoc,
67336713 EndLoc);
6734- AllowedNameModifiers.push_back(OMPD_target_data);
67356714 break;
67366715 case OMPD_target_enter_data:
67376716 Res = ActOnOpenMPTargetEnterDataDirective(ClausesWithImplicit, StartLoc,
67386717 EndLoc, AStmt);
6739- AllowedNameModifiers.push_back(OMPD_target_enter_data);
67406718 break;
67416719 case OMPD_target_exit_data:
67426720 Res = ActOnOpenMPTargetExitDataDirective(ClausesWithImplicit, StartLoc,
67436721 EndLoc, AStmt);
6744- AllowedNameModifiers.push_back(OMPD_target_exit_data);
67456722 break;
67466723 case OMPD_taskloop:
67476724 Res = ActOnOpenMPTaskLoopDirective(ClausesWithImplicit, AStmt, StartLoc,
67486725 EndLoc, VarsWithInheritedDSA);
6749- AllowedNameModifiers.push_back(OMPD_taskloop);
67506726 break;
67516727 case OMPD_taskloop_simd:
67526728 Res = ActOnOpenMPTaskLoopSimdDirective(ClausesWithImplicit, AStmt, StartLoc,
67536729 EndLoc, VarsWithInheritedDSA);
6754- AllowedNameModifiers.push_back(OMPD_taskloop);
6755- if (getLangOpts().OpenMP >= 50)
6756- AllowedNameModifiers.push_back(OMPD_simd);
67576730 break;
67586731 case OMPD_master_taskloop:
67596732 Res = ActOnOpenMPMasterTaskLoopDirective(
67606733 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6761- AllowedNameModifiers.push_back(OMPD_taskloop);
67626734 break;
67636735 case OMPD_masked_taskloop:
67646736 Res = ActOnOpenMPMaskedTaskLoopDirective(
67656737 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6766- AllowedNameModifiers.push_back(OMPD_taskloop);
67676738 break;
67686739 case OMPD_master_taskloop_simd:
67696740 Res = ActOnOpenMPMasterTaskLoopSimdDirective(
67706741 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6771- AllowedNameModifiers.push_back(OMPD_taskloop);
6772- if (getLangOpts().OpenMP >= 50)
6773- AllowedNameModifiers.push_back(OMPD_simd);
67746742 break;
67756743 case OMPD_masked_taskloop_simd:
67766744 Res = ActOnOpenMPMaskedTaskLoopSimdDirective(
67776745 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6778- if (getLangOpts().OpenMP >= 51) {
6779- AllowedNameModifiers.push_back(OMPD_taskloop);
6780- AllowedNameModifiers.push_back(OMPD_simd);
6781- }
67826746 break;
67836747 case OMPD_parallel_master_taskloop:
67846748 Res = ActOnOpenMPParallelMasterTaskLoopDirective(
67856749 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6786- AllowedNameModifiers.push_back(OMPD_taskloop);
6787- AllowedNameModifiers.push_back(OMPD_parallel);
67886750 break;
67896751 case OMPD_parallel_masked_taskloop:
67906752 Res = ActOnOpenMPParallelMaskedTaskLoopDirective(
67916753 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6792- if (getLangOpts().OpenMP >= 51) {
6793- AllowedNameModifiers.push_back(OMPD_taskloop);
6794- AllowedNameModifiers.push_back(OMPD_parallel);
6795- }
67966754 break;
67976755 case OMPD_parallel_master_taskloop_simd:
67986756 Res = ActOnOpenMPParallelMasterTaskLoopSimdDirective(
67996757 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6800- AllowedNameModifiers.push_back(OMPD_taskloop);
6801- AllowedNameModifiers.push_back(OMPD_parallel);
6802- if (getLangOpts().OpenMP >= 50)
6803- AllowedNameModifiers.push_back(OMPD_simd);
68046758 break;
68056759 case OMPD_parallel_masked_taskloop_simd:
68066760 Res = ActOnOpenMPParallelMaskedTaskLoopSimdDirective(
68076761 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6808- if (getLangOpts().OpenMP >= 51) {
6809- AllowedNameModifiers.push_back(OMPD_taskloop);
6810- AllowedNameModifiers.push_back(OMPD_parallel);
6811- AllowedNameModifiers.push_back(OMPD_simd);
6812- }
68136762 break;
68146763 case OMPD_distribute:
68156764 Res = ActOnOpenMPDistributeDirective(ClausesWithImplicit, AStmt, StartLoc,
@@ -6818,40 +6767,26 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
68186767 case OMPD_target_update:
68196768 Res = ActOnOpenMPTargetUpdateDirective(ClausesWithImplicit, StartLoc,
68206769 EndLoc, AStmt);
6821- AllowedNameModifiers.push_back(OMPD_target_update);
68226770 break;
68236771 case OMPD_distribute_parallel_for:
68246772 Res = ActOnOpenMPDistributeParallelForDirective(
68256773 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6826- AllowedNameModifiers.push_back(OMPD_parallel);
68276774 break;
68286775 case OMPD_distribute_parallel_for_simd:
68296776 Res = ActOnOpenMPDistributeParallelForSimdDirective(
68306777 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6831- AllowedNameModifiers.push_back(OMPD_parallel);
6832- if (getLangOpts().OpenMP >= 50)
6833- AllowedNameModifiers.push_back(OMPD_simd);
68346778 break;
68356779 case OMPD_distribute_simd:
68366780 Res = ActOnOpenMPDistributeSimdDirective(
68376781 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6838- if (getLangOpts().OpenMP >= 50)
6839- AllowedNameModifiers.push_back(OMPD_simd);
68406782 break;
68416783 case OMPD_target_parallel_for_simd:
68426784 Res = ActOnOpenMPTargetParallelForSimdDirective(
68436785 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6844- AllowedNameModifiers.push_back(OMPD_target);
6845- AllowedNameModifiers.push_back(OMPD_parallel);
6846- if (getLangOpts().OpenMP >= 50)
6847- AllowedNameModifiers.push_back(OMPD_simd);
68486786 break;
68496787 case OMPD_target_simd:
68506788 Res = ActOnOpenMPTargetSimdDirective(ClausesWithImplicit, AStmt, StartLoc,
68516789 EndLoc, VarsWithInheritedDSA);
6852- AllowedNameModifiers.push_back(OMPD_target);
6853- if (getLangOpts().OpenMP >= 50)
6854- AllowedNameModifiers.push_back(OMPD_simd);
68556790 break;
68566791 case OMPD_teams_distribute:
68576792 Res = ActOnOpenMPTeamsDistributeDirective(
@@ -6860,51 +6795,34 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
68606795 case OMPD_teams_distribute_simd:
68616796 Res = ActOnOpenMPTeamsDistributeSimdDirective(
68626797 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6863- if (getLangOpts().OpenMP >= 50)
6864- AllowedNameModifiers.push_back(OMPD_simd);
68656798 break;
68666799 case OMPD_teams_distribute_parallel_for_simd:
68676800 Res = ActOnOpenMPTeamsDistributeParallelForSimdDirective(
68686801 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6869- AllowedNameModifiers.push_back(OMPD_parallel);
6870- if (getLangOpts().OpenMP >= 50)
6871- AllowedNameModifiers.push_back(OMPD_simd);
68726802 break;
68736803 case OMPD_teams_distribute_parallel_for:
68746804 Res = ActOnOpenMPTeamsDistributeParallelForDirective(
68756805 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6876- AllowedNameModifiers.push_back(OMPD_parallel);
68776806 break;
68786807 case OMPD_target_teams:
68796808 Res = ActOnOpenMPTargetTeamsDirective(ClausesWithImplicit, AStmt, StartLoc,
68806809 EndLoc);
6881- AllowedNameModifiers.push_back(OMPD_target);
68826810 break;
68836811 case OMPD_target_teams_distribute:
68846812 Res = ActOnOpenMPTargetTeamsDistributeDirective(
68856813 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6886- AllowedNameModifiers.push_back(OMPD_target);
68876814 break;
68886815 case OMPD_target_teams_distribute_parallel_for:
68896816 Res = ActOnOpenMPTargetTeamsDistributeParallelForDirective(
68906817 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6891- AllowedNameModifiers.push_back(OMPD_target);
6892- AllowedNameModifiers.push_back(OMPD_parallel);
68936818 break;
68946819 case OMPD_target_teams_distribute_parallel_for_simd:
68956820 Res = ActOnOpenMPTargetTeamsDistributeParallelForSimdDirective(
68966821 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6897- AllowedNameModifiers.push_back(OMPD_target);
6898- AllowedNameModifiers.push_back(OMPD_parallel);
6899- if (getLangOpts().OpenMP >= 50)
6900- AllowedNameModifiers.push_back(OMPD_simd);
69016822 break;
69026823 case OMPD_target_teams_distribute_simd:
69036824 Res = ActOnOpenMPTargetTeamsDistributeSimdDirective(
69046825 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6905- AllowedNameModifiers.push_back(OMPD_target);
6906- if (getLangOpts().OpenMP >= 50)
6907- AllowedNameModifiers.push_back(OMPD_simd);
69086826 break;
69096827 case OMPD_interop:
69106828 assert(AStmt == nullptr &&
@@ -6926,7 +6844,6 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
69266844 case OMPD_target_teams_loop:
69276845 Res = ActOnOpenMPTargetTeamsGenericLoopDirective(
69286846 ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA);
6929- AllowedNameModifiers.push_back(OMPD_target);
69306847 break;
69316848 case OMPD_parallel_loop:
69326849 Res = ActOnOpenMPParallelGenericLoopDirective(
@@ -7096,6 +7013,11 @@ StmtResult SemaOpenMP::ActOnOpenMPExecutableDirective(
70967013 }
70977014 }
70987015
7016+ llvm::SmallVector<OpenMPDirectiveKind, 4> AllowedNameModifiers;
7017+ for (OpenMPDirectiveKind D : getLeafConstructsOrSelf(Kind)) {
7018+ if (isAllowedClauseForDirective(D, OMPC_if, getLangOpts().OpenMP))
7019+ AllowedNameModifiers.push_back(D);
7020+ }
70997021 if (!AllowedNameModifiers.empty())
71007022 ErrorFound = checkIfClauses(SemaRef, Kind, Clauses, AllowedNameModifiers) ||
71017023 ErrorFound;
0 commit comments