@@ -567,6 +567,16 @@ TYPE_PARSER(construct<OmpBindClause>(
567567 "TEAMS" >> pure(OmpBindClause::Binding::Teams) ||
568568 "THREAD" >> pure(OmpBindClause::Binding::Thread)))
569569
570+ TYPE_PARSER(construct<OmpAtClause>(
571+ "EXECUTION" >> pure(OmpAtClause::ActionTime::Execution) ||
572+ "COMPILATION" >> pure(OmpAtClause::ActionTime::Compilation)))
573+
574+ TYPE_PARSER(construct<OmpSeverityClause>(
575+ "FATAL" >> pure(OmpSeverityClause::Severity::Fatal) ||
576+ "WARNING" >> pure(OmpSeverityClause::Severity::Warning)))
577+
578+ TYPE_PARSER(construct<OmpMessageClause>(expr))
579+
570580TYPE_PARSER(
571581 "ACQUIRE" >> construct<OmpClause>(construct<OmpClause::Acquire>()) ||
572582 "ACQ_REL" >> construct<OmpClause>(construct<OmpClause::AcqRel>()) ||
@@ -578,6 +588,8 @@ TYPE_PARSER(
578588 parenthesized(Parser<OmpAllocateClause>{}))) ||
579589 "ALLOCATOR" >> construct<OmpClause>(construct<OmpClause::Allocator>(
580590 parenthesized(scalarIntExpr))) ||
591+ "AT" >> construct<OmpClause>(construct<OmpClause::At>(
592+ parenthesized(Parser<OmpAtClause>{}))) ||
581593 "ATOMIC_DEFAULT_MEM_ORDER" >>
582594 construct<OmpClause>(construct<OmpClause::AtomicDefaultMemOrder>(
583595 parenthesized(Parser<OmpAtomicDefaultMemOrderClause>{}))) ||
@@ -645,6 +657,8 @@ TYPE_PARSER(
645657 "MAP" >> construct<OmpClause>(construct<OmpClause::Map>(
646658 parenthesized(Parser<OmpMapClause>{}))) ||
647659 "MERGEABLE" >> construct<OmpClause>(construct<OmpClause::Mergeable>()) ||
660+ "MESSAGE" >> construct<OmpClause>(construct<OmpClause::Message>(
661+ parenthesized(Parser<OmpMessageClause>{}))) ||
648662 "NOGROUP" >> construct<OmpClause>(construct<OmpClause::Nogroup>()) ||
649663 "NONTEMPORAL" >> construct<OmpClause>(construct<OmpClause::Nontemporal>(
650664 parenthesized(nonemptyList(name)))) ||
@@ -688,6 +702,8 @@ TYPE_PARSER(
688702 "SCHEDULE" >> construct<OmpClause>(construct<OmpClause::Schedule>(
689703 parenthesized(Parser<OmpScheduleClause>{}))) ||
690704 "SEQ_CST" >> construct<OmpClause>(construct<OmpClause::SeqCst>()) ||
705+ "SEVERITY" >> construct<OmpClause>(construct<OmpClause::Severity>(
706+ parenthesized(Parser<OmpSeverityClause>{}))) ||
691707 "SHARED" >> construct<OmpClause>(construct<OmpClause::Shared>(
692708 parenthesized(Parser<OmpObjectList>{}))) ||
693709 "SIMD"_id >> construct<OmpClause>(construct<OmpClause::Simd>()) ||
@@ -1011,6 +1027,9 @@ TYPE_PARSER(sourced(construct<OmpCriticalDirective>(verbatim("CRITICAL"_tok),
10111027TYPE_PARSER(construct<OpenMPCriticalConstruct>(
10121028 Parser<OmpCriticalDirective>{}, block, Parser<OmpEndCriticalDirective>{}))
10131029
1030+ TYPE_PARSER(sourced(construct<OpenMPErrorConstruct>(
1031+ verbatim("ERROR"_tok), Parser<OmpClauseList>{})))
1032+
10141033// 2.11.3 Executable Allocate directive
10151034TYPE_PARSER(
10161035 sourced(construct<OpenMPExecutableAllocate>(verbatim("ALLOCATE"_tok),
@@ -1108,6 +1127,7 @@ TYPE_CONTEXT_PARSER("OpenMP construct"_en_US,
11081127 // OpenMPStandaloneConstruct to resolve !$OMP ORDERED
11091128 construct<OpenMPConstruct>(Parser<OpenMPStandaloneConstruct>{}),
11101129 construct<OpenMPConstruct>(Parser<OpenMPAtomicConstruct>{}),
1130+ construct<OpenMPConstruct>(Parser<OpenMPErrorConstruct>{}),
11111131 construct<OpenMPConstruct>(Parser<OpenMPExecutableAllocate>{}),
11121132 construct<OpenMPConstruct>(Parser<OpenMPAllocatorsConstruct>{}),
11131133 construct<OpenMPConstruct>(Parser<OpenMPDeclarativeAllocate>{}),
0 commit comments