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
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to