@@ -3441,18 +3441,20 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
3441
3441
TODO (converter.getCurrentLocation (), " OpenMPDeclareSimdConstruct" );
3442
3442
}
3443
3443
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 );
3449
3449
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
3450
+ const parser::OmpArgumentList &args = construct.v .Arguments ();
3451
+ assert (args.v .size () == 1 && " Expecting single argument" );
3450
3452
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 )};
3456
3458
assert (varType.declTypeSpec ->category () ==
3457
3459
semantics::DeclTypeSpec::Category::TypeDerived &&
3458
3460
" Expected derived type" );
@@ -3476,9 +3478,7 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
3476
3478
3477
3479
// Populate the declareMapper region with the map information.
3478
3480
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);
3482
3482
ClauseProcessor cp (converter, semaCtx, clauses);
3483
3483
cp.processMap (loc, stmtCtx, clauseOps);
3484
3484
mlir::omp::DeclareMapperInfoOp::create (firOpBuilder, loc, clauseOps.mapVars );
0 commit comments