[llvm-branch-commits] [flang] [flang][OpenMP] Handle directive arguments in OmpDirectiveSpecifier (PR #124278)

Krzysztof Parzyszek via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 24 10:17:44 PST 2025


kparzysz wrote:

Summary of code changes:
- Remove the indirection from `std::optional<common::Indirection<OmpClauseList>>>` inside OmpDirectiveSpecifier.  The type with indirection was not convertible to `std::optional<OmpClauseList>`, which is a relatively useful abstraction. The consequence of that was that the definition of `OmpDirectiveSpecifier` had to be moved past the definitions of all clauses, and any occurrence of OmpDirectiveSpecifier in clauses now had to be wrapped in indirection.
- New classes for arguments (and their parsers) were created: OmpLocator, OmpReductionSpecifier, and a union-like struct OmpArgument.  OmpDeclareMapperSpecifier was renamed to OmpMapperSpecifier.  All of them were moved to before clause definitions.  The intent here was to create argument classes for directives, while keeping in mind support for clause arguments as a long(er)-term goal.
- Some other cleanups were made in parse-tree.h as well: the MODIFIER_BOILERPLATE macro was moved closer to the modifier definitions, OmpObject definition was moved to the top of OpenMP definitions.
- Extend symbol resolution to properly resolve symbols in OmpMapperSpecifier and OmpReductionSpecifier when embedded in WHEN/OTHERWISE clauses (i.e. inside of a METADIRECTIVE specification).

https://github.com/llvm/llvm-project/pull/124278


More information about the llvm-branch-commits mailing list