@@ -507,6 +507,16 @@ TYPE_PARSER(construct<OmpBindClause>(
507507 "TEAMS" >> pure(OmpBindClause::Binding::Teams) ||
508508 "THREAD" >> pure(OmpBindClause::Binding::Thread)))
509509
510+ TYPE_PARSER(construct<OmpAtClause>(
511+ " EXECUTION" >> pure (OmpAtClause::ActionTime::Execution) ||
512+ "COMPILATION" >> pure(OmpAtClause::ActionTime::Compilation)))
513+
514+ TYPE_PARSER(construct<OmpSeverityClause>(
515+ " FATAL" >> pure (OmpSeverityClause::Severity::Fatal) ||
516+ "WARNING" >> pure(OmpSeverityClause::Severity::Warning)))
517+
518+ TYPE_PARSER(construct<OmpMessageClause>(charLiteralConstantWithoutKind))
519+
510520TYPE_PARSER(
511521 " ACQUIRE" >> construct<OmpClause>(construct<OmpClause::Acquire>()) ||
512522 "ACQ_REL" >> construct<OmpClause>(construct<OmpClause::AcqRel>()) ||
@@ -518,6 +528,8 @@ TYPE_PARSER(
518528 parenthesized (Parser<OmpAllocateClause>{}))) ||
519529 "ALLOCATOR" >> construct<OmpClause>(construct<OmpClause::Allocator>(
520530 parenthesized (scalarIntExpr))) ||
531+ "AT" >> construct<OmpClause>(construct<OmpClause::At>(
532+ parenthesized (Parser<OmpAtClause>{}))) ||
521533 "ATOMIC_DEFAULT_MEM_ORDER" >>
522534 construct<OmpClause>(construct<OmpClause::AtomicDefaultMemOrder>(
523535 parenthesized (Parser<OmpAtomicDefaultMemOrderClause>{}))) ||
@@ -585,6 +597,8 @@ TYPE_PARSER(
585597 "MAP" >> construct<OmpClause>(construct<OmpClause::Map>(
586598 parenthesized (Parser<OmpMapClause>{}))) ||
587599 "MERGEABLE" >> construct<OmpClause>(construct<OmpClause::Mergeable>()) ||
600+ "MESSAGE" >> construct<OmpClause>(construct<OmpClause::Message>(
601+ parenthesized (Parser<OmpMessageClause>{}))) ||
588602 "NOGROUP" >> construct<OmpClause>(construct<OmpClause::Nogroup>()) ||
589603 "NONTEMPORAL" >> construct<OmpClause>(construct<OmpClause::Nontemporal>(
590604 parenthesized (nonemptyList(name)))) ||
@@ -627,6 +641,8 @@ TYPE_PARSER(
627641 "SCHEDULE" >> construct<OmpClause>(construct<OmpClause::Schedule>(
628642 parenthesized (Parser<OmpScheduleClause>{}))) ||
629643 "SEQ_CST" >> construct<OmpClause>(construct<OmpClause::SeqCst>()) ||
644+ "SEVERITY" >> construct<OmpClause>(construct<OmpClause::Severity>(
645+ parenthesized (Parser<OmpSeverityClause>{}))) ||
630646 "SHARED" >> construct<OmpClause>(construct<OmpClause::Shared>(
631647 parenthesized (Parser<OmpObjectList>{}))) ||
632648 "SIMD"_id >> construct<OmpClause>(construct<OmpClause::Simd>()) ||
@@ -946,6 +962,9 @@ TYPE_PARSER(sourced(construct<OmpCriticalDirective>(verbatim("CRITICAL"_tok),
946962TYPE_PARSER(construct<OpenMPCriticalConstruct>(
947963 Parser<OmpCriticalDirective>{}, block, Parser<OmpEndCriticalDirective>{}))
948964
965+ TYPE_PARSER(sourced(construct<OpenMPErrorConstruct>(
966+ verbatim (" ERROR" _tok), Parser<OmpClauseList>{})))
967+
949968// 2.11.3 Executable Allocate directive
950969TYPE_PARSER(
951970 sourced (construct<OpenMPExecutableAllocate>(verbatim(" ALLOCATE" _tok),
@@ -1043,6 +1062,7 @@ TYPE_CONTEXT_PARSER("OpenMP construct"_en_US,
10431062 // OpenMPStandaloneConstruct to resolve !$OMP ORDERED
10441063 construct<OpenMPConstruct>(Parser<OpenMPStandaloneConstruct>{}),
10451064 construct<OpenMPConstruct>(Parser<OpenMPAtomicConstruct>{}),
1065+ construct<OpenMPConstruct>(Parser<OpenMPErrorConstruct>{}),
10461066 construct<OpenMPConstruct>(Parser<OpenMPExecutableAllocate>{}),
10471067 construct<OpenMPConstruct>(Parser<OpenMPAllocatorsConstruct>{}),
10481068 construct<OpenMPConstruct>(Parser<OpenMPDeclarativeAllocate>{}),
0 commit comments