[flang-commits] [flang] e07c1e7 - [flang][OpenMP] Move unique clauses to allowedOnceClauses in OMP.td (#204995)
via flang-commits
flang-commits at lists.llvm.org
Mon Jun 22 07:44:01 PDT 2026
Author: Krzysztof Parzyszek
Date: 2026-06-22T09:43:55-05:00
New Revision: e07c1e710ccf0be64140bd5774ba8dccce505bfd
URL: https://github.com/llvm/llvm-project/commit/e07c1e710ccf0be64140bd5774ba8dccce505bfd
DIFF: https://github.com/llvm/llvm-project/commit/e07c1e710ccf0be64140bd5774ba8dccce505bfd.diff
LOG: [flang][OpenMP] Move unique clauses to allowedOnceClauses in OMP.td (#204995)
Many unique clauses were listed in "allowedClauses", which turned off
the single-occurrence check in flang. Move these clauses to the right
category to enable this check.
One exception to this is the IF clause: the IF clause is unique for all
non-compound directives, but is repeatable on compound ones with the
restriction that at most one IF clause can apply to any of the
constituents. This restriction is currently not enforced correctly in
flang, and so the IF clause was left unchanged.
Although this change is applied to a file shared between flang and
clang, clang does not use these categories for its checks, and hence is
not affected by this patch.
Added:
Modified:
flang/lib/Semantics/check-omp-structure.cpp
llvm/include/llvm/Frontend/OpenMP/OMP.td
Removed:
################################################################################
diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp
index 022c774cd2adc..b61662995ad57 100644
--- a/flang/lib/Semantics/check-omp-structure.cpp
+++ b/flang/lib/Semantics/check-omp-structure.cpp
@@ -2380,9 +2380,6 @@ void OmpStructureChecker::Leave(const parser::OmpDeclareTargetDirective &x) {
context_.Warn(common::UsageWarning::OpenMPUsage, toClause->source,
"The usage of TO clause on DECLARE TARGET directive has been deprecated. Use ENTER clause instead."_warn_en_US);
}
- if (indirectClause) {
- CheckAllowedClause(llvm::omp::Clause::OMPC_indirect);
- }
}
bool toClauseFound{false};
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMP.td b/llvm/include/llvm/Frontend/OpenMP/OMP.td
index e622d856f7cf9..65118c96bc2e8 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMP.td
+++ b/llvm/include/llvm/Frontend/OpenMP/OMP.td
@@ -681,9 +681,9 @@ def OMP_Assume : Directive<[Spelling<"assume">]> {
VersionedClause<OMPC_Contains, 51>,
VersionedClause<OMPC_Holds, 51>,
VersionedClause<OMPC_NoOpenMP, 51>,
+ VersionedClause<OMPC_NoOpenMPConstructs, 60>,
VersionedClause<OMPC_NoOpenMPRoutines, 51>,
VersionedClause<OMPC_NoParallelism, 51>,
- VersionedClause<OMPC_NoOpenMPConstructs, 60>,
];
}
def OMP_Atomic : Directive<[Spelling<"atomic">]> {
@@ -730,11 +730,13 @@ def OMP_EndAssumes : Directive<[Spelling<"end assumes">]> {
def OMP_BeginDeclareTarget : Directive<[Spelling<"begin declare target", 1, 52>,
Spelling<"begin declare_target", 60>]> {
let allowedClauses = [
- VersionedClause<OMPC_DeviceType>,
- VersionedClause<OMPC_Indirect, 51>,
VersionedClause<OMPC_Link>,
VersionedClause<OMPC_To>,
];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_DeviceType>,
+ VersionedClause<OMPC_Indirect, 51>,
+ ];
let association = AS_Delimited;
let category = CA_Declarative;
let languages = [L_C];
@@ -827,13 +829,13 @@ def OMP_DeclareTarget : Directive<[Spelling<"declare target", 1, 52>,
Spelling<"declare_target", 60>]> {
let allowedClauses = [
VersionedClause<OMPC_Enter, 52>,
- VersionedClause<OMPC_Indirect, 51>,
VersionedClause<OMPC_Link>,
VersionedClause<OMPC_Local, 60>,
VersionedClause<OMPC_To>,
];
let allowedOnceClauses = [
VersionedClause<OMPC_DeviceType, 50>,
+ VersionedClause<OMPC_Indirect, 51>,
];
let association = AS_None;
let category = CA_Declarative;
@@ -844,8 +846,8 @@ def OMP_DeclareVariant : Directive<[Spelling<"declare variant", 1, 52>,
VersionedClause<OMPC_AdjustArgs, 51>,
];
let allowedOnceClauses = [
- VersionedClause<OMPC_Match>,
VersionedClause<OMPC_AppendArgs, 51>,
+ VersionedClause<OMPC_Match>,
];
let association = AS_Declaration;
let category = CA_Declarative;
@@ -859,6 +861,8 @@ def OMP_Depobj : Directive<[Spelling<"depobj">]> {
VersionedClause<OMPC_Depobj, 50>,
VersionedClause<OMPC_Destroy, 50>,
VersionedClause<OMPC_Init, 60>,
+ ];
+ let allowedOnceClauses = [
VersionedClause<OMPC_Update, 50>,
];
let association = AS_None;
@@ -867,9 +871,11 @@ def OMP_Depobj : Directive<[Spelling<"depobj">]> {
def OMP_dispatch : Directive<[Spelling<"dispatch">]> {
let allowedClauses = [
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
VersionedClause<OMPC_IsDevicePtr>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Nocontext>,
VersionedClause<OMPC_Novariants>,
VersionedClause<OMPC_NoWait>,
@@ -922,7 +928,7 @@ def OMP_EndDo : Directive<[Spelling<"end do">]> {
let languages = OMP_Do.languages;
}
def OMP_Error : Directive<[Spelling<"error">]> {
- let allowedClauses = [
+ let allowedOnceClauses = [
VersionedClause<OMPC_At, 51>,
VersionedClause<OMPC_Message, 51>,
VersionedClause<OMPC_Severity, 51>,
@@ -956,15 +962,17 @@ def OMP_Flush : Directive<[Spelling<"flush">]> {
def OMP_For : Directive<[Spelling<"for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Schedule>,
];
let association = AS_LoopNest;
@@ -998,11 +1006,13 @@ def OMP_interop : Directive<[Spelling<"interop">]> {
let allowedClauses = [
VersionedClause<OMPC_Depend>,
VersionedClause<OMPC_Destroy>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Init>,
- VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_Use>,
];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_NoWait>,
+ ];
let association = AS_None;
let category = CA_Executable;
}
@@ -1036,8 +1046,8 @@ def OMP_Metadirective : Directive<[Spelling<"metadirective">]> {
VersionedClause<OMPC_When>,
];
let allowedOnceClauses = [
- VersionedClause<OMPC_Otherwise, 52>,
VersionedClause<OMPC_Default, 50, 51>,
+ VersionedClause<OMPC_Otherwise, 52>,
];
let association = AS_None;
let category = CA_Meta;
@@ -1069,24 +1079,26 @@ def OMP_Parallel : Directive<[Spelling<"parallel">]> {
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
];
- let allowedOnceClauses = [VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Message, 60>,
- VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Severity, 60>,
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_If>,
+ VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NumThreads>,
+ VersionedClause<OMPC_ProcBind>,
+ VersionedClause<OMPC_Severity, 60>,
];
let association = AS_Block;
let category = CA_Executable;
}
def OMP_Requires : Directive<[Spelling<"requires">]> {
let allowedOnceClauses = [
- VersionedClause<OMPC_UnifiedAddress>,
- VersionedClause<OMPC_UnifiedSharedMemory>,
- VersionedClause<OMPC_DeviceSafesync, 60>,
VersionedClause<OMPC_AtomicDefaultMemOrder>,
- VersionedClause<OMPC_DynamicAllocators>, VersionedClause<OMPC_SelfMaps>,
+ VersionedClause<OMPC_DeviceSafesync, 60>,
+ VersionedClause<OMPC_DynamicAllocators>,
VersionedClause<OMPC_ReverseOffload>,
+ VersionedClause<OMPC_SelfMaps>,
+ VersionedClause<OMPC_UnifiedAddress>,
+ VersionedClause<OMPC_UnifiedSharedMemory>,
];
let association = AS_None;
let category = CA_Informational;
@@ -1096,7 +1108,7 @@ def OMP_Reverse : Directive<[Spelling<"reverse">]> {
let category = CA_Executable;
}
def OMP_Scan : Directive<[Spelling<"scan">]> {
- let allowedClauses = [
+ let allowedOnceClauses = [
VersionedClause<OMPC_Exclusive>,
VersionedClause<OMPC_Inclusive>,
];
@@ -1134,10 +1146,12 @@ def OMP_Sections : Directive<[Spelling<"sections">]> {
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_NoWait>,
+ ];
let association = AS_Block;
let category = CA_Executable;
}
@@ -1208,9 +1222,9 @@ def OMP_Target : Directive<[Spelling<"target">]> {
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_UsesAllocators, 50>,
- VersionedClause<OMPC_Default, 60>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Default, 60>,
VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_If>,
@@ -1226,9 +1240,9 @@ def OMP_Target : Directive<[Spelling<"target">]> {
def OMP_TargetData : Directive<[Spelling<"target data", 1, 52>,
Spelling<"target_data", 60>]> {
let allowedOnceClauses = [
+ VersionedClause<OMPC_Default, 60>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Default, 60>,
VersionedClause<OMPC_Transparent, 60>,
];
let requiredClauses = [
@@ -1296,20 +1310,20 @@ def OMP_Task : Directive<[Spelling<"task">]> {
VersionedClause<OMPC_Depend>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Untied>,
];
let allowedOnceClauses = [
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Detach, 50>,
VersionedClause<OMPC_Final>,
VersionedClause<OMPC_If>,
+ VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Threadset, 60>,
VersionedClause<OMPC_Replayable, 60>,
+ VersionedClause<OMPC_Threadset, 60>,
VersionedClause<OMPC_Transparent, 60>,
+ VersionedClause<OMPC_Untied>,
];
let association = AS_Block;
let category = CA_Executable;
@@ -1338,22 +1352,22 @@ def OMP_TaskLoop : Directive<[Spelling<"taskloop">]> {
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_InReduction>,
VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Untied>,
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
VersionedClause<OMPC_If>,
+ VersionedClause<OMPC_Mergeable>,
+ VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Threadset, 60>,
VersionedClause<OMPC_Replayable, 60>,
+ VersionedClause<OMPC_Threadset, 60>,
VersionedClause<OMPC_Transparent, 60>,
+ VersionedClause<OMPC_Untied>,
];
let allowedExclusiveClauses = [
VersionedClause<OMPC_GrainSize>,
@@ -1365,9 +1379,9 @@ def OMP_TaskLoop : Directive<[Spelling<"taskloop">]> {
def OMP_TaskWait : Directive<[Spelling<"taskwait">]> {
let allowedClauses = [
VersionedClause<OMPC_Depend, 50>,
- VersionedClause<OMPC_NoWait, 51>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_NoWait, 51>,
VersionedClause<OMPC_Replayable, 60>,
];
let association = AS_None;
@@ -1479,7 +1493,6 @@ def OMP_DistributeParallelDo : Directive<[Spelling<"distribute parallel do">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
@@ -1489,6 +1502,7 @@ def OMP_DistributeParallelDo : Directive<[Spelling<"distribute parallel do">]> {
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_Message, 60>,
@@ -1507,25 +1521,27 @@ def OMP_DistributeParallelDoSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DistSchedule>,
+ VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
];
let leafConstructs = [OMP_Distribute, OMP_Parallel, OMP_Do, OMP_Simd];
@@ -1536,23 +1552,25 @@ def OMP_DistributeParallelFor
: Directive<[Spelling<"distribute parallel for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DistSchedule>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
];
let leafConstructs = [OMP_Distribute, OMP_Parallel, OMP_For];
let category = CA_Executable;
@@ -1563,26 +1581,28 @@ def OMP_DistributeParallelForSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_Attribute>,
- VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DistSchedule>,
+ VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NumThreads>,
+ VersionedClause<OMPC_Order, 50>,
+ VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
];
let leafConstructs = [OMP_Distribute, OMP_Parallel, OMP_For, OMP_Simd];
@@ -1594,7 +1614,6 @@ def OMP_DistributeSimd : Directive<[Spelling<"distribute simd">]> {
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
@@ -1604,6 +1623,7 @@ def OMP_DistributeSimd : Directive<[Spelling<"distribute simd">]> {
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_If, 50>,
VersionedClause<OMPC_Message, 60>,
@@ -1654,17 +1674,19 @@ def OMP_ForSimd : Directive<[Spelling<"for simd">]> {
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If, 50>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_SimdLen>,
@@ -1692,13 +1714,13 @@ def OMP_target_loop : Directive<[Spelling<"target loop">]> {
let allowedOnceClauses = [
VersionedClause<OMPC_Bind, 50>,
VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Order>,
- VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
- VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_If>,
VersionedClause<OMPC_NoWait>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
+ VersionedClause<OMPC_Order>,
+ VersionedClause<OMPC_ThreadLimit>,
];
let leafConstructs = [OMP_Target, OMP_loop];
let category = CA_Executable;
@@ -1706,22 +1728,24 @@ def OMP_target_loop : Directive<[Spelling<"target loop">]> {
def OMP_MaskedTaskloop : Directive<[Spelling<"masked taskloop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_InReduction>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Filter>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_Untied>,
];
let leafConstructs = [OMP_masked, OMP_TaskLoop];
@@ -1731,26 +1755,28 @@ def OMP_MaskedTaskloopSimd : Directive<[Spelling<"masked taskloop simd">]> {
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_InReduction>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Filter>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NonTemporal, 50>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_Untied>,
];
@@ -1760,21 +1786,23 @@ def OMP_MaskedTaskloopSimd : Directive<[Spelling<"masked taskloop simd">]> {
def OMP_MasterTaskloop : Directive<[Spelling<"master taskloop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_InReduction>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_Untied>,
];
let leafConstructs = [OMP_Master, OMP_TaskLoop];
@@ -1784,25 +1812,27 @@ def OMP_MasterTaskloopSimd : Directive<[Spelling<"master taskloop simd">]> {
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_InReduction>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_InReduction>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NonTemporal, 50>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_Untied>,
];
@@ -1813,7 +1843,6 @@ def OMP_ParallelDo : Directive<[Spelling<"parallel do">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate, 50>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
@@ -1823,6 +1852,7 @@ def OMP_ParallelDo : Directive<[Spelling<"parallel do">]> {
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
@@ -1841,7 +1871,6 @@ def OMP_ParallelDoSimd : Directive<[Spelling<"parallel do simd">]> {
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
@@ -1853,6 +1882,7 @@ def OMP_ParallelDoSimd : Directive<[Spelling<"parallel do simd">]> {
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_Order, 50>,
@@ -1860,8 +1890,8 @@ def OMP_ParallelDoSimd : Directive<[Spelling<"parallel do simd">]> {
VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_Severity, 60>,
+ VersionedClause<OMPC_SimdLen>,
];
let leafConstructs = [OMP_Parallel, OMP_Do, OMP_Simd];
let category = CA_Executable;
@@ -1870,24 +1900,26 @@ def OMP_ParallelDoSimd : Directive<[Spelling<"parallel do simd">]> {
def OMP_ParallelFor : Directive<[Spelling<"parallel for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
];
let leafConstructs = [OMP_Parallel, OMP_For];
let category = CA_Executable;
@@ -1897,26 +1929,28 @@ def OMP_ParallelForSimd : Directive<[Spelling<"parallel for simd">]> {
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
];
let leafConstructs = [OMP_Parallel, OMP_For, OMP_Simd];
@@ -1952,47 +1986,51 @@ def OMP_ParallelMasked : Directive<[Spelling<"parallel masked">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_Filter>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_Message, 60>,
- VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Severity, 60>,
VersionedClause<OMPC_Shared>,
];
- let leafConstructs = [OMP_Parallel, OMP_masked];
- let category = CA_Executable;
-}
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_Filter>,
+ VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NumThreads>,
+ VersionedClause<OMPC_ProcBind>,
+ VersionedClause<OMPC_Severity, 60>,
+ ];
+ let leafConstructs = [OMP_Parallel, OMP_masked];
+ let category = CA_Executable;
+}
def OMP_ParallelMaskedTaskloop
: Directive<[Spelling<"parallel masked taskloop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Filter>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_Untied>,
];
let leafConstructs = [OMP_Parallel, OMP_masked, OMP_TaskLoop];
@@ -2003,31 +2041,33 @@ def OMP_ParallelMaskedTaskloopSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Filter>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NonTemporal, 50>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_Untied>,
];
@@ -2038,17 +2078,19 @@ def OMP_ParallelMaster : Directive<[Spelling<"parallel master">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
];
let leafConstructs = [OMP_Parallel, OMP_Master];
let category = CA_Executable;
@@ -2057,26 +2099,28 @@ def OMP_ParallelMasterTaskloop
: Directive<[Spelling<"parallel master taskloop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_Untied>,
];
let leafConstructs = [OMP_Parallel, OMP_Master, OMP_TaskLoop];
@@ -2087,30 +2131,32 @@ def OMP_ParallelMasterTaskloopSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
+ VersionedClause<OMPC_FirstPrivate>,
+ VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_Linear>,
+ VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
- VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_GrainSize>,
VersionedClause<OMPC_If>,
- VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Mergeable>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoGroup>,
- VersionedClause<OMPC_NonTemporal, 50>,
VersionedClause<OMPC_NumTasks>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Priority>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_Untied>,
];
@@ -2121,19 +2167,19 @@ def OMP_ParallelSections : Directive<[Spelling<"parallel sections">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
+ VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_Severity, 60>,
];
let leafConstructs = [OMP_Parallel, OMP_Sections];
@@ -2143,13 +2189,13 @@ def OMP_ParallelWorkshare : Directive<[Spelling<"parallel workshare">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumThreads>,
@@ -2163,7 +2209,6 @@ def OMP_ParallelWorkshare : Directive<[Spelling<"parallel workshare">]> {
def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Depend>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
@@ -2171,7 +2216,6 @@ def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
VersionedClause<OMPC_If>,
VersionedClause<OMPC_IsDevicePtr>,
VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
@@ -2179,9 +2223,11 @@ def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
VersionedClause<OMPC_UsesAllocators, 50>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_ProcBind>,
@@ -2193,8 +2239,6 @@ def OMP_TargetParallel : Directive<[Spelling<"target parallel">]> {
}
def OMP_TargetParallelDo : Directive<[Spelling<"target parallel do">]> {
let allowedClauses = [
- VersionedClause<OMPC_Allocator>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Depend>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
@@ -2210,7 +2254,9 @@ def OMP_TargetParallelDo : Directive<[Spelling<"target parallel do">]> {
VersionedClause<OMPC_UsesAllocators>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Allocator>,
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Message, 60>,
@@ -2231,11 +2277,7 @@ def OMP_TargetParallelDoSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2244,21 +2286,27 @@ def OMP_TargetParallelDoSimd
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ VersionedClause<OMPC_UsesAllocators>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_UsesAllocators>,
];
let leafConstructs = [OMP_Target, OMP_Parallel, OMP_Do, OMP_Simd];
let category = CA_Executable;
@@ -2267,11 +2315,7 @@ def OMP_TargetParallelDoSimd
def OMP_TargetParallelFor : Directive<[Spelling<"target parallel for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2280,22 +2324,26 @@ def OMP_TargetParallelFor : Directive<[Spelling<"target parallel for">]> {
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Message, 60>,
- VersionedClause<OMPC_NoWait>,
- VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_Attribute>,
- VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Ordered>,
VersionedClause<OMPC_Private>,
- VersionedClause<OMPC_ProcBind>,
VersionedClause<OMPC_Reduction>,
- VersionedClause<OMPC_Schedule>,
- VersionedClause<OMPC_Severity, 60>,
VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_UsesAllocators, 50>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NoWait>,
+ VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_DynCGroupMem>,
+ VersionedClause<OMPC_Order, 50>,
+ VersionedClause<OMPC_Ordered>,
+ VersionedClause<OMPC_ProcBind>,
+ VersionedClause<OMPC_Schedule>,
+ VersionedClause<OMPC_Severity, 60>,
VersionedClause<OMPC_ThreadLimit, 51>,
];
let leafConstructs = [OMP_Target, OMP_Parallel, OMP_For];
@@ -2307,11 +2355,7 @@ def OMP_TargetParallelForSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2320,25 +2364,29 @@ def OMP_TargetParallelForSimd
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ VersionedClause<OMPC_UsesAllocators, 50>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Ordered>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_ThreadLimit, 51>,
];
let leafConstructs = [OMP_Target, OMP_Parallel, OMP_For, OMP_Simd];
@@ -2349,7 +2397,6 @@ def OMP_target_parallel_loop : Directive<[Spelling<"target parallel loop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2368,6 +2415,7 @@ def OMP_target_parallel_loop : Directive<[Spelling<"target parallel loop">]> {
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumThreads>,
@@ -2394,7 +2442,6 @@ def OMP_TargetSimd : Directive<[Spelling<"target simd">]> {
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Map>,
VersionedClause<OMPC_NonTemporal, 50>,
- VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
@@ -2406,6 +2453,7 @@ def OMP_TargetSimd : Directive<[Spelling<"target simd">]> {
VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_Message, 60>,
+ VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumThreads>,
VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_Order, 50>,
@@ -2441,8 +2489,8 @@ def OMP_TargetTeams : Directive<[Spelling<"target teams">]> {
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_OMPX_Bare>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_ThreadLimit>,
];
let leafConstructs = [OMP_Target, OMP_Teams];
@@ -2567,12 +2615,7 @@ def OMP_TargetTeamsDistributeParallelFor
: Directive<[Spelling<"target teams distribute parallel for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2580,23 +2623,28 @@ def OMP_TargetTeamsDistributeParallelFor
VersionedClause<OMPC_IsDevicePtr>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Map>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ VersionedClause<OMPC_UsesAllocators, 50>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
];
let leafConstructs =
[OMP_Target, OMP_Teams, OMP_Distribute, OMP_Parallel, OMP_For];
@@ -2608,12 +2656,7 @@ def OMP_TargetTeamsDistributeParallelForSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2622,26 +2665,31 @@ def OMP_TargetTeamsDistributeParallelForSimd
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
VersionedClause<OMPC_Map>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ VersionedClause<OMPC_UsesAllocators, 50>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
+ VersionedClause<OMPC_DistSchedule>,
+ VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_ThreadLimit>,
- VersionedClause<OMPC_UsesAllocators, 50>,
- ];
- let allowedOnceClauses = [
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
];
let leafConstructs =
[OMP_Target, OMP_Teams, OMP_Distribute, OMP_Parallel, OMP_For, OMP_Simd];
@@ -2668,10 +2716,10 @@ def OMP_TargetTeamsDistributeSimd
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_UsesAllocators, 50>,
- VersionedClause<OMPC_Default, 60>,
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default, 60>,
VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DistSchedule>,
@@ -2707,8 +2755,8 @@ def OMP_TargetTeamsWorkdistribute : Directive<[Spelling<"target teams workdistri
VersionedClause<OMPC_Device>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumTeams>,
- VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_OMPX_Bare>,
+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
VersionedClause<OMPC_ThreadLimit>,
];
let leafConstructs = [OMP_Target, OMP_Teams, OMP_Workdistribute];
@@ -2718,9 +2766,7 @@ def OMP_TargetTeamsWorkdistribute : Directive<[Spelling<"target teams workdistri
def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_DefaultMap>,
VersionedClause<OMPC_Depend>,
- VersionedClause<OMPC_Device>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2738,6 +2784,8 @@ def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
VersionedClause<OMPC_Bind, 50>,
VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DefaultMap>,
+ VersionedClause<OMPC_Device>,
VersionedClause<OMPC_NoWait>,
VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_OMPX_DynCGroupMem>,
@@ -2751,27 +2799,27 @@ def OMP_TaskLoopSimd : Directive<[Spelling<"taskloop simd">]> {
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Default>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_InReduction>,
VersionedClause<OMPC_LastPrivate>,
VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Mergeable>,
- VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_NonTemporal, 50>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_Untied>,
];
let allowedOnceClauses = [
VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
VersionedClause<OMPC_Final>,
+ VersionedClause<OMPC_Mergeable>,
+ VersionedClause<OMPC_NoGroup>,
VersionedClause<OMPC_Order, 50>,
VersionedClause<OMPC_Priority>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_SimdLen>,
+ VersionedClause<OMPC_Untied>,
];
let allowedExclusiveClauses = [
VersionedClause<OMPC_GrainSize>,
@@ -2783,22 +2831,22 @@ def OMP_TaskLoopSimd : Directive<[Spelling<"taskloop simd">]> {
def OMP_TeamsDistribute : Directive<[Spelling<"teams distribute">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_LastPrivate>,
- VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Private>,
VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Shared>,
- VersionedClause<OMPC_ThreadLimit>,
];
let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_If>,
+ VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_Order, 50>,
+ VersionedClause<OMPC_ThreadLimit>,
];
let leafConstructs = [OMP_Teams, OMP_Distribute];
let category = CA_Executable;
@@ -2873,25 +2921,27 @@ def OMP_TeamsDistributeParallelFor
: Directive<[Spelling<"teams distribute parallel for">]> {
let allowedClauses = [
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
VersionedClause<OMPC_Copyin>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_ThreadLimit>,
];
let leafConstructs = [OMP_Teams, OMP_Distribute, OMP_Parallel, OMP_For];
@@ -2903,27 +2953,29 @@ def OMP_TeamsDistributeParallelForSimd
let allowedClauses = [
VersionedClause<OMPC_Aligned>,
VersionedClause<OMPC_Allocate>,
- VersionedClause<OMPC_Collapse>,
- VersionedClause<OMPC_Default>,
- VersionedClause<OMPC_DistSchedule>,
VersionedClause<OMPC_DynGroupprivate, 61>,
VersionedClause<OMPC_FirstPrivate>,
- VersionedClause<OMPC_If>,
VersionedClause<OMPC_LastPrivate>,
+ VersionedClause<OMPC_If>,
VersionedClause<OMPC_Linear>,
- VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NonTemporal, 50>,
+ VersionedClause<OMPC_OMPX_Attribute>,
+ VersionedClause<OMPC_Private>,
+ VersionedClause<OMPC_Reduction>,
+ VersionedClause<OMPC_Shared>,
+ ];
+ let allowedOnceClauses = [
+ VersionedClause<OMPC_Collapse>,
+ VersionedClause<OMPC_Default>,
+ VersionedClause<OMPC_DistSchedule>,
+ VersionedClause<OMPC_Message, 60>,
VersionedClause<OMPC_NumTeams>,
VersionedClause<OMPC_NumThreads>,
- VersionedClause<OMPC_OMPX_Attribute>,
VersionedClause<OMPC_Order, 50>,
- VersionedClause<OMPC_Private>,
VersionedClause<OMPC_ProcBind>,
- VersionedClause<OMPC_Reduction>,
VersionedClause<OMPC_SafeLen>,
VersionedClause<OMPC_Schedule>,
VersionedClause<OMPC_Severity, 60>,
- VersionedClause<OMPC_Shared>,
VersionedClause<OMPC_SimdLen>,
VersionedClause<OMPC_ThreadLimit>,
];
More information about the flang-commits
mailing list