diff options
Diffstat (limited to 'flang/lib/Parser')
-rw-r--r-- | flang/lib/Parser/openmp-parsers.cpp | 5 | ||||
-rw-r--r-- | flang/lib/Parser/unparse.cpp | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/flang/lib/Parser/openmp-parsers.cpp b/flang/lib/Parser/openmp-parsers.cpp index ea09fe0..9507021 100644 --- a/flang/lib/Parser/openmp-parsers.cpp +++ b/flang/lib/Parser/openmp-parsers.cpp @@ -1023,6 +1023,9 @@ TYPE_PARSER( maybe(":"_tok >> nonemptyList(Parser<OmpLinearClause::Modifier>{})), /*PostModified=*/pure(true))) +TYPE_PARSER(construct<OmpLoopRangeClause>( + scalarIntConstantExpr, "," >> scalarIntConstantExpr)) + // OpenMPv5.2 12.5.2 detach-clause -> DETACH (event-handle) TYPE_PARSER(construct<OmpDetachClause>(Parser<OmpObject>{})) @@ -1207,6 +1210,8 @@ TYPE_PARSER( // parenthesized(Parser<OmpLinearClause>{}))) || "LINK" >> construct<OmpClause>(construct<OmpClause::Link>( parenthesized(Parser<OmpObjectList>{}))) || + "LOOPRANGE" >> construct<OmpClause>(construct<OmpClause::Looprange>( + parenthesized(Parser<OmpLoopRangeClause>{}))) || "MAP" >> construct<OmpClause>(construct<OmpClause::Map>( parenthesized(Parser<OmpMapClause>{}))) || "MATCH" >> construct<OmpClause>(construct<OmpClause::Match>( diff --git a/flang/lib/Parser/unparse.cpp b/flang/lib/Parser/unparse.cpp index 0fbd347..0511f5b 100644 --- a/flang/lib/Parser/unparse.cpp +++ b/flang/lib/Parser/unparse.cpp @@ -2345,6 +2345,13 @@ public: } } } + void Unparse(const OmpLoopRangeClause &x) { + Word("LOOPRANGE("); + Walk(std::get<0>(x.t)); + Put(", "); + Walk(std::get<1>(x.t)); + Put(")"); + } void Unparse(const OmpReductionClause &x) { using Modifier = OmpReductionClause::Modifier; Walk(std::get<std::optional<std::list<Modifier>>>(x.t), ": "); |