[flang-commits] [flang] [llvm] [flang][OpenMP] Parse iterators, add to MAP clause, TODO for lowering (PR #113167)
Krzysztof Parzyszek via flang-commits
flang-commits at lists.llvm.org
Tue Oct 22 11:15:24 PDT 2024
================
@@ -3450,16 +3460,25 @@ struct OmpObject {
WRAPPER_CLASS(OmpObjectList, std::list<OmpObject>);
// 2.15.5.1 map ->
-// MAP ([ [map-type-modifiers [,] ] map-type : ] variable-name-list)
-// map-type-modifiers -> map-type-modifier [,] [...]
+// MAP ([[map-type-modifier-list [,]] [iterator-modifier [,]] map-type : ]
+// variable-name-list)
+// map-type-modifier-list -> map-type-modifier [,] [...]
// map-type-modifier -> ALWAYS | CLOSE | PRESENT | OMPX_HOLD
// map-type -> TO | FROM | TOFROM | ALLOC | RELEASE | DELETE
struct OmpMapClause {
- ENUM_CLASS(TypeModifier, Always, Close, Present, OmpxHold);
+ ENUM_CLASS(TypeModifier, Always, Close, Present, Ompx_Hold);
ENUM_CLASS(Type, To, From, Tofrom, Alloc, Release, Delete)
TUPLE_CLASS_BOILERPLATE(OmpMapClause);
- std::tuple<std::optional<std::list<TypeModifier>>, std::optional<Type>,
- OmpObjectList>
+
+ // All modifiers are parsed into optional lists, even if they are unique.
+ // The checks for satisfying those constraints are deferred to semantics.
+ // In OpenMP 5.2 the non-comma syntax has been deprecated: keep the
+ // information about separator presence to emit a diagnostic if needed.
+ std::tuple<std::optional<std::list<TypeModifier>>,
+ std::optional<std::list<OmpIteratorModifier>>, // unique
+ std::optional<std::list<Type>>, // unique
+ OmpObjectList,
+ bool> // were the modifiers comma-separated
----------------
kparzysz wrote:
Added a ?
https://github.com/llvm/llvm-project/pull/113167
More information about the flang-commits
mailing list