@@ -755,7 +755,14 @@ TYPE_PARSER(construct<OmpSeverityClause>(
755755
756756TYPE_PARSER(construct<OmpMessageClause>(expr))
757757
758- TYPE_PARSER(
758+ TYPE_PARSER(construct<OmpHoldsClause>(many(maybe(","_tok) >> indirect(expr))))
759+ TYPE_PARSER(construct<OmpAbsentClause>(many(maybe(","_tok) >>
760+ construct<OmpDirectiveNameEntry>(OmpDirectiveNameParser{}))))
761+ TYPE_PARSER(construct<OmpContainsClause>(many(maybe(","_tok) >>
762+ construct<OmpDirectiveNameEntry>(OmpDirectiveNameParser{}))))
763+
764+ TYPE_PARSER("ABSENT" >> construct<OmpClause>(construct<OmpClause::Absent>(
765+ parenthesized(Parser<OmpAbsentClause>{}))) ||
759766 "ACQUIRE" >> construct<OmpClause>(construct<OmpClause::Acquire>()) ||
760767 "ACQ_REL" >> construct<OmpClause>(construct<OmpClause::AcqRel>()) ||
761768 "AFFINITY" >> construct<OmpClause>(construct<OmpClause::Affinity>(
@@ -777,6 +784,8 @@ TYPE_PARSER(
777784 parenthesized(Parser<OmpBindClause>{}))) ||
778785 "COLLAPSE" >> construct<OmpClause>(construct<OmpClause::Collapse>(
779786 parenthesized(scalarIntConstantExpr))) ||
787+ "CONTAINS" >> construct<OmpClause>(construct<OmpClause::Contains>(
788+ parenthesized(Parser<OmpContainsClause>{}))) ||
780789 "COPYIN" >> construct<OmpClause>(construct<OmpClause::Copyin>(
781790 parenthesized(Parser<OmpObjectList>{}))) ||
782791 "COPYPRIVATE" >> construct<OmpClause>(construct<OmpClause::Copyprivate>(
@@ -821,6 +830,8 @@ TYPE_PARSER(
821830 parenthesized(Parser<OmpObjectList>{}))) ||
822831 "HINT" >> construct<OmpClause>(
823832 construct<OmpClause::Hint>(parenthesized(constantExpr))) ||
833+ "HOLDS" >> construct<OmpClause>(construct<OmpClause::Holds>(
834+ parenthesized(Parser<OmpHoldsClause>{}))) ||
824835 "IF" >> construct<OmpClause>(construct<OmpClause::If>(
825836 parenthesized(Parser<OmpIfClause>{}))) ||
826837 "INBRANCH" >> construct<OmpClause>(construct<OmpClause::Inbranch>()) ||
@@ -851,6 +862,11 @@ TYPE_PARSER(
851862 "NOVARIANTS" >> construct<OmpClause>(construct<OmpClause::Novariants>(
852863 parenthesized(scalarLogicalExpr))) ||
853864 "NOWAIT" >> construct<OmpClause>(construct<OmpClause::Nowait>()) ||
865+ "NO_OPENMP"_id >> construct<OmpClause>(construct<OmpClause::NoOpenmp>()) ||
866+ "NO_OPENMP_ROUTINES" >>
867+ construct<OmpClause>(construct<OmpClause::NoOpenmpRoutines>()) ||
868+ "NO_PARALLELISM" >>
869+ construct<OmpClause>(construct<OmpClause::NoParallelism>()) ||
854870 "NUM_TASKS" >> construct<OmpClause>(construct<OmpClause::NumTasks>(
855871 parenthesized(Parser<OmpNumTasksClause>{}))) ||
856872 "NUM_TEAMS" >> construct<OmpClause>(construct<OmpClause::NumTeams>(
@@ -1300,6 +1316,24 @@ TYPE_PARSER(startOmpLine >>
13001316 Parser<OpenMPUtilityConstruct>{})) /
13011317 endOmpLine))
13021318
1319+ // Assume Construct
1320+ TYPE_PARSER(sourced(construct<OpenMPAssumeConstruct>(
1321+ verbatim("ASSUME"_tok), Parser<OmpClauseList>{}) /
1322+ endOmpLine))
1323+ // Assumes Construct
1324+ TYPE_PARSER(sourced(construct<OmpAssumesDirective>(
1325+ verbatim("ASSUMES"_tok), Parser<OmpClauseList>{})))
1326+
1327+ TYPE_PARSER(sourced(construct<OmpEndAssumesDirective>(
1328+ verbatim(startOmpLine >> "END ASSUMES"_tok))))
1329+
1330+ TYPE_PARSER(construct<OpenMPAssumesPartConstruct>(block))
1331+
1332+ TYPE_PARSER(sourced(construct<OpenMPAssumesConstruct>(
1333+ maybe("BEGIN"_tok) >> Parser<OmpAssumesDirective>{} / endOmpLine,
1334+ Parser<OpenMPAssumesPartConstruct>{},
1335+ Parser<OmpEndAssumesDirective>{} / endOmpLine)))
1336+
13031337// Block Construct
13041338TYPE_PARSER(construct<OpenMPBlockConstruct>(
13051339 Parser<OmpBeginBlockDirective>{} / endOmpLine, block,
@@ -1347,6 +1381,8 @@ TYPE_CONTEXT_PARSER("OpenMP construct"_en_US,
13471381 construct<OpenMPConstruct>(Parser<OpenMPExecutableAllocate>{}),
13481382 construct<OpenMPConstruct>(Parser<OpenMPAllocatorsConstruct>{}),
13491383 construct<OpenMPConstruct>(Parser<OpenMPDeclarativeAllocate>{}),
1384+ construct<OpenMPConstruct>(Parser<OpenMPAssumesConstruct>{}),
1385+ construct<OpenMPConstruct>(Parser<OpenMPAssumeConstruct>{}),
13501386 construct<OpenMPConstruct>(Parser<OpenMPCriticalConstruct>{}))))
13511387
13521388// END OMP Block directives
0 commit comments