@@ -674,10 +674,20 @@ From make(const parser::OmpClause::From &inp,
674674// Full: empty
675675
676676Grainsize make (const parser::OmpClause::Grainsize &inp,
677- semantics::SemanticsContext &semaCtx) {
678- // inp.v -> parser::ScalarIntExpr
679- return Grainsize{{/* Prescriptiveness=*/ std::nullopt ,
680- /* GrainSize=*/ makeExpr (inp.v , semaCtx)}};
677+ semantics::SemanticsContext &semaCtx) {
678+ // inp.v -> parser::OmpGrainsizeClause
679+ using wrapped = parser::OmpGrainsizeClause;
680+
681+ CLAUSET_ENUM_CONVERT ( //
682+ convert, parser::OmpGrainsizeClause::Prescriptiveness, Grainsize::Prescriptiveness,
683+ // clang-format off
684+ MS (Strict, Strict)
685+ // clang-format on
686+ );
687+ auto &t0 = std::get<std::optional<wrapped::Prescriptiveness>>(inp.v .t );
688+ auto &t1 = std::get<parser::ScalarIntExpr>(inp.v .t );
689+ return Grainsize{{/* Prescriptiveness=*/ maybeApply (convert, t0),
690+ /* Grainsize=*/ makeExpr (t1, semaCtx)}};
681691}
682692
683693HasDeviceAddr make (const parser::OmpClause::HasDeviceAddr &inp,
@@ -910,9 +920,20 @@ Novariants make(const parser::OmpClause::Novariants &inp,
910920
911921NumTasks make (const parser::OmpClause::NumTasks &inp,
912922 semantics::SemanticsContext &semaCtx) {
913- // inp.v -> parser::ScalarIntExpr
914- return NumTasks{{/* Prescriptiveness=*/ std::nullopt ,
915- /* NumTasks=*/ makeExpr (inp.v , semaCtx)}};
923+ // inp.v -> parser::OmpNumTasksClause
924+ using wrapped = parser::OmpNumTasksClause;
925+
926+ CLAUSET_ENUM_CONVERT ( //
927+ convert, parser::OmpNumTasksClause::Prescriptiveness,
928+ NumTasks::Prescriptiveness,
929+ // clang-format off
930+ MS (Strict, Strict)
931+ // clang-format on
932+ );
933+ auto &t0 = std::get<std::optional<wrapped::Prescriptiveness>>(inp.v .t );
934+ auto &t1 = std::get<parser::ScalarIntExpr>(inp.v .t );
935+ return NumTasks{{/* Prescriptiveness=*/ maybeApply (convert, t0),
936+ /* NumTasks=*/ makeExpr (t1, semaCtx)}};
916937}
917938
918939NumTeams make (const parser::OmpClause::NumTeams &inp,
0 commit comments