@@ -3441,18 +3441,20 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
34413441 TODO (converter.getCurrentLocation (), " OpenMPDeclareSimdConstruct" );
34423442}
34433443
3444- static void
3445- genOMP (lower::AbstractConverter &converter, lower::SymMap &symTable ,
3446- semantics::SemanticsContext &semaCtx, lower::pft::Evaluation &eval,
3447- const parser::OpenMPDeclareMapperConstruct &declareMapperConstruct ) {
3448- mlir::Location loc = converter.genLocation (declareMapperConstruct .source );
3444+ static void genOMP (lower::AbstractConverter &converter, lower::SymMap &symTable,
3445+ semantics::SemanticsContext &semaCtx ,
3446+ lower::pft::Evaluation &eval,
3447+ const parser::OpenMPDeclareMapperConstruct &construct ) {
3448+ mlir::Location loc = converter.genLocation (construct .source );
34493449 fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
3450+ const parser::OmpArgumentList &args = construct.v .Arguments ();
3451+ assert (args.v .size () == 1 && " Expecting single argument" );
34503452 lower::StatementContext stmtCtx;
3451- const auto & spec =
3452- std::get<parser::OmpMapperSpecifier>(declareMapperConstruct. t );
3453- const auto &mapperName{std::get<std::string>(spec. t )};
3454- const auto &varType{std::get<parser::TypeSpec>(spec. t )};
3455- const auto &varName{std::get<parser::Name>(spec. t )};
3453+ const auto * spec = std::get_if<parser::OmpMapperSpecifier>(&args. v . front (). u );
3454+ assert (spec && " Expecting mapper specifier " );
3455+ const auto &mapperName{std::get<std::string>(spec-> t )};
3456+ const auto &varType{std::get<parser::TypeSpec>(spec-> t )};
3457+ const auto &varName{std::get<parser::Name>(spec-> t )};
34563458 assert (varType.declTypeSpec ->category () ==
34573459 semantics::DeclTypeSpec::Category::TypeDerived &&
34583460 " Expected derived type" );
@@ -3476,9 +3478,7 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
34763478
34773479 // Populate the declareMapper region with the map information.
34783480 mlir::omp::DeclareMapperInfoOperands clauseOps;
3479- const auto *clauseList{
3480- parser::Unwrap<parser::OmpClauseList>(declareMapperConstruct.t )};
3481- List<Clause> clauses = makeClauses (*clauseList, semaCtx);
3481+ List<Clause> clauses = makeClauses (construct.v .Clauses (), semaCtx);
34823482 ClauseProcessor cp (converter, semaCtx, clauses);
34833483 cp.processMap (loc, stmtCtx, clauseOps);
34843484 mlir::omp::DeclareMapperInfoOp::create (firOpBuilder, loc, clauseOps.mapVars );
0 commit comments