diff --git a/flang/include/flang/Parser/dump-parse-tree.h b/flang/include/flang/Parser/dump-parse-tree.h --- a/flang/include/flang/Parser/dump-parse-tree.h +++ b/flang/include/flang/Parser/dump-parse-tree.h @@ -457,6 +457,7 @@ NODE(parser, OmpAtomicWrite) NODE(parser, OmpBeginBlockDirective) NODE(parser, OmpBeginLoopDirective) + NODE(parser, OmpBeginTileDirectibe) NODE(parser, OmpBeginSectionsDirective) NODE(parser, OmpBlockDirective) static std::string GetNodeName(const llvm::omp::Directive &x) { @@ -491,6 +492,7 @@ NODE(parser, OmpEndBlockDirective) NODE(parser, OmpEndCriticalDirective) NODE(parser, OmpEndLoopDirective) + NODE(parser, OmpEndTileDirective) NODE(parser, OmpEndSectionsDirective) NODE(parser, OmpIfClause) NODE_ENUM(OmpIfClause, DirectiveNameModifier) @@ -500,6 +502,7 @@ NODE(parser, OmpLinearModifier) NODE_ENUM(OmpLinearModifier, Type) NODE(parser, OmpLoopDirective) + NODE(parser, OmpTileDirective) NODE(parser, OmpMapClause) NODE(parser, OmpMapType) NODE(OmpMapType, Always) @@ -560,6 +563,7 @@ NODE(parser, OmpAtomicClauseList) NODE(parser, OpenMPFlushConstruct) NODE(parser, OpenMPLoopConstruct) + NODE(parser, OpenMPTileConstruct) NODE(parser, OpenMPExecutableAllocate) NODE(parser, OpenMPSimpleStandaloneConstruct) NODE(parser, OpenMPStandaloneConstruct) diff --git a/flang/include/flang/Parser/parse-tree.h b/flang/include/flang/Parser/parse-tree.h --- a/flang/include/flang/Parser/parse-tree.h +++ b/flang/include/flang/Parser/parse-tree.h @@ -3740,6 +3740,11 @@ CharBlock source; }; +struct OmpTileDirective { + WRAPPER_CLASS_BOILERPLATE(OmpTileDirective, llvm::omp::Directive); + CharBlock source; +}; + // 2.14.1 construct-type-clause -> PARALLEL | SECTIONS | DO | TASKGROUP struct OmpCancelType { ENUM_CLASS(Type, Parallel, Sections, Do, Taskgroup) @@ -3802,6 +3807,19 @@ CharBlock source; }; +// OpenMP Tile +struct OmpBeginTileDirective { + TUPLE_CLASS_BOILERPLATE(OmpBeginTileDirective); + std::tuple t; + CharBlock source; +}; + +struct OmpEndTileDirective { + TUPLE_CLASS_BOILERPLATE(OmpEndTileDirective); + std::tuple t; + CharBlock source; +}; + struct OmpBeginBlockDirective { TUPLE_CLASS_BOILERPLATE(OmpBeginBlockDirective); std::tuple t; @@ -3829,11 +3847,21 @@ t; }; +// OpenMP Tile +struct OpenMPTileConstruct { + TUPLE_CLASS_BOILERPLATE(OpenMPTileConstruct); + OpenMPTileConstruct(OmpBeginTileDirective &&a) + : t({std::move(a), std::nullopt, std::nullopt}) {} + std::tuple, + std::optional> + t; +}; + struct OpenMPConstruct { UNION_CLASS_BOILERPLATE(OpenMPConstruct); std::variant u; };