@@ -36,6 +36,9 @@ using namespace Fortran::parser::omp;
36
36
constexpr auto startOmpLine = skipStuffBeforeStatement >> "!$OMP "_sptok;
37
37
constexpr auto endOmpLine = space >> endOfLine;
38
38
39
+ constexpr auto logicalConstantExpr{logical(constantExpr)};
40
+ constexpr auto scalarLogicalConstantExpr{scalar(logicalConstantExpr)};
41
+
39
42
// Given a parser for a single element, and a parser for a list of elements
40
43
// of the same type, create a parser that constructs the entire list by having
41
44
// the single element be the head of the list, and the rest be the tail.
@@ -870,6 +873,8 @@ TYPE_PARSER(construct<OmpReductionClause>(
870
873
maybe(nonemptyList(Parser<OmpReductionClause::Modifier>{}) / ":"),
871
874
Parser<OmpObjectList>{}))
872
875
876
+ TYPE_PARSER(construct<OmpReplayableClause>(scalarLogicalConstantExpr))
877
+
873
878
// OMP 5.0 2.19.5.6 IN_REDUCTION (reduction-identifier: variable-name-list)
874
879
TYPE_PARSER(construct<OmpInReductionClause>(
875
880
maybe(nonemptyList(Parser<OmpInReductionClause::Modifier>{}) / ":"),
@@ -879,6 +884,8 @@ TYPE_PARSER(construct<OmpTaskReductionClause>(
879
884
maybe(nonemptyList(Parser<OmpTaskReductionClause::Modifier>{}) / ":"),
880
885
Parser<OmpObjectList>{}))
881
886
887
+ TYPE_PARSER(construct<OmpTransparentClause>(scalarIntExpr))
888
+
882
889
// OMP 5.0 2.11.4 allocate-clause -> ALLOCATE ([allocator:] variable-name-list)
883
890
// OMP 5.2 2.13.4 allocate-clause -> ALLOCATE ([allocate-modifier
884
891
// [, allocate-modifier] :]
@@ -1194,6 +1201,8 @@ TYPE_PARSER( //
1194
1201
"READ" >> construct<OmpClause>(construct<OmpClause::Read>()) ||
1195
1202
"RELAXED" >> construct<OmpClause>(construct<OmpClause::Relaxed>()) ||
1196
1203
"RELEASE" >> construct<OmpClause>(construct<OmpClause::Release>()) ||
1204
+ "REPLAYABLE" >> construct<OmpClause>(construct<OmpClause::Replayable>(
1205
+ maybe(parenthesized(Parser<OmpReplayableClause>{})))) ||
1197
1206
"REVERSE_OFFLOAD" >>
1198
1207
construct<OmpClause>(construct<OmpClause::ReverseOffload>()) ||
1199
1208
"SAFELEN" >> construct<OmpClause>(construct<OmpClause::Safelen>(
@@ -1217,6 +1226,9 @@ TYPE_PARSER( //
1217
1226
parenthesized(scalarIntExpr))) ||
1218
1227
"TO" >> construct<OmpClause>(construct<OmpClause::To>(
1219
1228
parenthesized(Parser<OmpToClause>{}))) ||
1229
+ "TRANSPARENT" >>
1230
+ construct<OmpClause>(construct<OmpClause::Transparent>(
1231
+ maybe(parenthesized(Parser<OmpTransparentClause>{})))) ||
1220
1232
"USE" >> construct<OmpClause>(construct<OmpClause::Use>(
1221
1233
parenthesized(Parser<OmpObject>{}))) ||
1222
1234
"USE_DEVICE_PTR" >> construct<OmpClause>(construct<OmpClause::UseDevicePtr>(
0 commit comments