Skip to content

Commit c34e062

Browse files
committed
[OpenMP][Flang] Add empty clause support for dyn_groupprivate in Flang
1 parent 099c502 commit c34e062

File tree

6 files changed

+22
-8
lines changed

6 files changed

+22
-8
lines changed

flang/include/flang/Lower/OpenMP/Clauses.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ using DistSchedule = tomp::clause::DistScheduleT<TypeTy, IdTy, ExprTy>;
219219
using Doacross = tomp::clause::DoacrossT<TypeTy, IdTy, ExprTy>;
220220
using DynamicAllocators =
221221
tomp::clause::DynamicAllocatorsT<TypeTy, IdTy, ExprTy>;
222+
using DynGroupprivate = tomp::clause::DynGroupprivateT<TypeTy, IdTy, ExprTy>;
222223
using Enter = tomp::clause::EnterT<TypeTy, IdTy, ExprTy>;
223224
using Exclusive = tomp::clause::ExclusiveT<TypeTy, IdTy, ExprTy>;
224225
using Fail = tomp::clause::FailT<TypeTy, IdTy, ExprTy>;

flang/lib/Lower/OpenMP/Clauses.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ MAKE_EMPTY_CLASS(Acquire, Acquire);
220220
MAKE_EMPTY_CLASS(Capture, Capture);
221221
MAKE_EMPTY_CLASS(Compare, Compare);
222222
MAKE_EMPTY_CLASS(DynamicAllocators, DynamicAllocators);
223+
MAKE_EMPTY_CLASS(DynGroupprivate, DynGroupprivate);
223224
MAKE_EMPTY_CLASS(Full, Full);
224225
MAKE_EMPTY_CLASS(Inbranch, Inbranch);
225226
MAKE_EMPTY_CLASS(Mergeable, Mergeable);
@@ -769,6 +770,7 @@ Doacross make(const parser::OmpClause::Doacross &inp,
769770
}
770771

771772
// DynamicAllocators: empty
773+
// DynGroupprivate: empty
772774

773775
Enter make(const parser::OmpClause::Enter &inp,
774776
semantics::SemanticsContext &semaCtx) {

flang/lib/Parser/openmp-parsers.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -999,6 +999,8 @@ TYPE_PARSER( //
999999
construct<OmpClause>(parenthesized(Parser<OmpDoacrossClause>{})) ||
10001000
"DYNAMIC_ALLOCATORS" >>
10011001
construct<OmpClause>(construct<OmpClause::DynamicAllocators>()) ||
1002+
"DYN_GROUPPRIVATE" >>
1003+
construct<OmpClause>(construct<OmpClause::DynGroupprivate>()) ||
10021004
"ENTER" >> construct<OmpClause>(construct<OmpClause::Enter>(
10031005
parenthesized(Parser<OmpObjectList>{}))) ||
10041006
"EXCLUSIVE" >> construct<OmpClause>(construct<OmpClause::Exclusive>(

flang/lib/Semantics/check-omp-structure.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2545,6 +2545,7 @@ CHECK_SIMPLE_CLAUSE(Default, OMPC_default)
25452545
CHECK_SIMPLE_CLAUSE(Depobj, OMPC_depobj)
25462546
CHECK_SIMPLE_CLAUSE(DeviceType, OMPC_device_type)
25472547
CHECK_SIMPLE_CLAUSE(DistSchedule, OMPC_dist_schedule)
2548+
CHECK_SIMPLE_CLAUSE(DynGroupprivate, OMPC_dyn_groupprivate)
25482549
CHECK_SIMPLE_CLAUSE(Exclusive, OMPC_exclusive)
25492550
CHECK_SIMPLE_CLAUSE(Final, OMPC_final)
25502551
CHECK_SIMPLE_CLAUSE(Flush, OMPC_flush)

llvm/include/llvm/Frontend/OpenMP/ClauseT.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,12 @@ struct DynamicAllocatorsT {
574574
using EmptyTrait = std::true_type;
575575
};
576576

577+
// V6.1: `dyn_groupprivate` clause
578+
template <typename T, typename I, typename E> //
579+
struct DynGroupprivateT {
580+
using EmptyTrait = std::true_type;
581+
};
582+
577583
// V5.2: [5.8.4] `enter` clause
578584
template <typename T, typename I, typename E> //
579585
struct EnterT {
@@ -1243,14 +1249,15 @@ using ExtensionClausesT =
12431249
template <typename T, typename I, typename E>
12441250
using EmptyClausesT = std::variant<
12451251
AcqRelT<T, I, E>, AcquireT<T, I, E>, CaptureT<T, I, E>, CompareT<T, I, E>,
1246-
DynamicAllocatorsT<T, I, E>, FullT<T, I, E>, InbranchT<T, I, E>,
1247-
MergeableT<T, I, E>, NogroupT<T, I, E>, NoOpenmpRoutinesT<T, I, E>,
1248-
NoOpenmpT<T, I, E>, NoParallelismT<T, I, E>, NotinbranchT<T, I, E>,
1249-
NowaitT<T, I, E>, ReadT<T, I, E>, RelaxedT<T, I, E>, ReleaseT<T, I, E>,
1250-
ReverseOffloadT<T, I, E>, SeqCstT<T, I, E>, SimdT<T, I, E>,
1251-
ThreadsT<T, I, E>, UnifiedAddressT<T, I, E>, UnifiedSharedMemoryT<T, I, E>,
1252-
UnknownT<T, I, E>, UntiedT<T, I, E>, UseT<T, I, E>, WeakT<T, I, E>,
1253-
WriteT<T, I, E>, NoOpenmpConstructsT<T, I, E>, SelfMapsT<T, I, E>>;
1252+
DynamicAllocatorsT<T, I, E>, DynGroupprivateT<T, I, E>, FullT<T, I, E>,
1253+
InbranchT<T, I, E>, MergeableT<T, I, E>, NogroupT<T, I, E>,
1254+
NoOpenmpRoutinesT<T, I, E>, NoOpenmpT<T, I, E>, NoParallelismT<T, I, E>,
1255+
NotinbranchT<T, I, E>, NowaitT<T, I, E>, ReadT<T, I, E>, RelaxedT<T, I, E>,
1256+
ReleaseT<T, I, E>, ReverseOffloadT<T, I, E>, SeqCstT<T, I, E>,
1257+
SimdT<T, I, E>, ThreadsT<T, I, E>, UnifiedAddressT<T, I, E>,
1258+
UnifiedSharedMemoryT<T, I, E>, UnknownT<T, I, E>, UntiedT<T, I, E>,
1259+
UseT<T, I, E>, WeakT<T, I, E>, WriteT<T, I, E>,
1260+
NoOpenmpConstructsT<T, I, E>, SelfMapsT<T, I, E>>;
12541261

12551262
template <typename T, typename I, typename E>
12561263
using IncompleteClausesT =

llvm/unittests/Frontend/OpenMPDecompositionTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ using DistSchedule = tomp::clause::DistScheduleT<TypeTy, IdTy, ExprTy>;
8888
using Doacross = tomp::clause::DoacrossT<TypeTy, IdTy, ExprTy>;
8989
using DynamicAllocators =
9090
tomp::clause::DynamicAllocatorsT<TypeTy, IdTy, ExprTy>;
91+
using DynGroupprivate = tomp::clause::DynGroupprivateT<TypeTy, IdTy, ExprTy>;
9192
using Enter = tomp::clause::EnterT<TypeTy, IdTy, ExprTy>;
9293
using Exclusive = tomp::clause::ExclusiveT<TypeTy, IdTy, ExprTy>;
9394
using Fail = tomp::clause::FailT<TypeTy, IdTy, ExprTy>;

0 commit comments

Comments
 (0)