[flang-commits] [flang] [flang][OpenMP] Convert AST node for ALLOCATORS to use Block as body (PR #148005)
Krzysztof Parzyszek via flang-commits
flang-commits at lists.llvm.org
Fri Jul 11 03:54:34 PDT 2025
================
@@ -1276,6 +1276,32 @@ struct OmpEndDirectiveParser {
llvm::omp::Directive dir_;
};
+struct OmpAllocatorsConstructParser {
+ using resultType = OpenMPAllocatorsConstruct;
+
+ std::optional<resultType> Parse(ParseState &state) const {
+ auto dirSpec{Parser<OmpDirectiveSpecification>{}.Parse(state)};
+ if (!dirSpec || dirSpec->DirId() != llvm::omp::Directive::OMPD_allocators) {
+ return std::nullopt;
+ }
+
+ // This should be an allocate-stmt. That will be checked in semantics.
+ Block block;
+ if (auto stmt{attempt(Parser<ExecutionPartConstruct>{}).Parse(state)}) {
+ block.emplace_back(std::move(*stmt));
+ }
+ // Allow empty block. Check for this in semantics.
+
+ auto end{OmpEndDirectiveParser{llvm::omp::Directive::OMPD_allocators}};
+ return OpenMPAllocatorsConstruct{
+ std::move(*dirSpec), std::move(block), *maybe(end).Parse(state)};
+ }
+};
+
+TYPE_PARSER(sourced( //
----------------
kparzysz wrote:
I use those occasionally to keep clang-format from uglifying the code.
https://github.com/llvm/llvm-project/pull/148005
More information about the flang-commits
mailing list