================ @@ -2612,7 +2612,54 @@ static void genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable, semantics::SemanticsContext &semaCtx, lower::pft::Evaluation &eval, const parser::OpenMPDeclareMapperConstruct &declareMapperConstruct) { - TODO(converter.getCurrentLocation(), "OpenMPDeclareMapperConstruct"); + mlir::Location loc = converter.genLocation(declareMapperConstruct.source); + fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder(); + lower::StatementContext stmtCtx; + const auto &spec = + std::get<parser::OmpDeclareMapperSpecifier>(declareMapperConstruct.t); + const auto &mapperName{std::get<std::optional<parser::Name>>(spec.t)}; + const auto &varType{std::get<parser::TypeSpec>(spec.t)}; + const auto &varName{std::get<parser::Name>(spec.t)}; + assert(varType.declTypeSpec->category() == + semantics::DeclTypeSpec::Category::TypeDerived && + "Expected derived type"); + + std::string mapperNameStr; + if (mapperName.has_value()) { + mapperNameStr = mapperName->ToString(); + mapperNameStr = + converter.mangleName(mapperNameStr, mapperName->symbol->owner()); + } else { + mapperNameStr = + varType.declTypeSpec->derivedTypeSpec().name().ToString() + ".default"; + mapperNameStr = converter.mangleName( + mapperNameStr, *varType.declTypeSpec->derivedTypeSpec().GetScope()); + } + + // Save insert point just after the DeclMapperOp. + mlir::OpBuilder::InsertPoint insPt = firOpBuilder.saveInsertionPoint(); ---------------- tblah wrote:
```suggestion // Save current insertion point before moving to the module scope to create the DeclareMapperOp mlir::OpBuilder::InsertionGuard guard(builder); ``` I don't think it makes sense to say the insert point is before or after the DeclMapperOp because the DeclMapperOp will be at module scope. I've also changed to use the insertion point guard because it is less error prone if a conditional early return is added later. https://github.com/llvm/llvm-project/pull/117046 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits