@@ -242,7 +242,7 @@ ENUM(MotionExpectation, Present);
242242// V5.2: [15.9.1] `task-dependence-type` modifier
243243ENUM (DependenceType, Depobj, In, Inout, Inoutset, Mutexinoutset, Out, Sink,
244244 Source);
245- ENUM (Prescriptiveness, Strict);
245+ ENUM (Prescriptiveness, Strict, Fallback );
246246
247247template <typename I, typename E> //
248248struct LoopIterationT {
@@ -574,6 +574,15 @@ struct DynamicAllocatorsT {
574574 using EmptyTrait = std::true_type;
575575};
576576
577+ template <typename T, typename I, typename E> //
578+ struct DynGroupprivateT {
579+ ENUM (AccessGroup, Cgroup);
580+ using Prescriptiveness = type::Prescriptiveness;
581+ using Size = E;
582+ using TupleTrait = std::true_type;
583+ std::tuple<OPT(AccessGroup), OPT(Prescriptiveness), Size> t;
584+ };
585+
577586// V5.2: [5.8.4] `enter` clause
578587template <typename T, typename I, typename E> //
579588struct EnterT {
@@ -1263,11 +1272,12 @@ template <typename T, typename I, typename E>
12631272using TupleClausesT =
12641273 std::variant<AffinityT<T, I, E>, AlignedT<T, I, E>, AllocateT<T, I, E>,
12651274 DefaultmapT<T, I, E>, DeviceT<T, I, E>, DistScheduleT<T, I, E>,
1266- DoacrossT<T, I, E>, FromT<T, I, E>, GrainsizeT<T, I, E>,
1267- IfT<T, I, E>, InitT<T, I, E>, InReductionT<T, I, E>,
1268- LastprivateT<T, I, E>, LinearT<T, I, E>, MapT<T, I, E>,
1269- NumTasksT<T, I, E>, OrderT<T, I, E>, ReductionT<T, I, E>,
1270- ScheduleT<T, I, E>, TaskReductionT<T, I, E>, ToT<T, I, E>>;
1275+ DoacrossT<T, I, E>, DynGroupprivateT<T, I, E>, FromT<T, I, E>,
1276+ GrainsizeT<T, I, E>, IfT<T, I, E>, InitT<T, I, E>,
1277+ InReductionT<T, I, E>, LastprivateT<T, I, E>, LinearT<T, I, E>,
1278+ MapT<T, I, E>, NumTasksT<T, I, E>, OrderT<T, I, E>,
1279+ ReductionT<T, I, E>, ScheduleT<T, I, E>,
1280+ TaskReductionT<T, I, E>, ToT<T, I, E>>;
12711281
12721282template <typename T, typename I, typename E>
12731283using UnionClausesT = std::variant<DependT<T, I, E>>;
0 commit comments