3939#include " mlir/Transforms/RegionUtils.h"
4040#include " llvm/ADT/STLExtras.h"
4141#include " llvm/Frontend/OpenMP/OMPConstants.h"
42- #include < string>
4342
4443using namespace Fortran ::lower::omp;
4544
@@ -2709,13 +2708,16 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
27092708 const auto &mapperName{std::get<std::optional<parser::Name>>(spec.t )};
27102709 const auto &varType{std::get<parser::TypeSpec>(spec.t )};
27112710 const auto &varName{std::get<parser::Name>(spec.t )};
2712- std::stringstream mapperNameStr;
2713- if (mapperName.has_value ()) {
2714- mapperNameStr << mapperName->ToString ();
2715- } else {
2716- mapperNameStr << " default_"
2717- << varType.declTypeSpec ->derivedTypeSpec ().name ().ToString ();
2718- }
2711+ assert (varType.declTypeSpec ->category () ==
2712+ semantics::DeclTypeSpec::Category::TypeDerived &&
2713+ " Expected derived type" );
2714+
2715+ std::string mapperNameStr;
2716+ if (mapperName.has_value ())
2717+ mapperNameStr = mapperName->ToString ();
2718+ else
2719+ mapperNameStr =
2720+ " default_" + varType.declTypeSpec ->derivedTypeSpec ().name ().ToString ();
27192721
27202722 mlir::OpBuilder::InsertPoint insPt = firOpBuilder.saveInsertionPoint ();
27212723 firOpBuilder.setInsertionPointToStart (converter.getModuleOp ().getBody ());
@@ -2731,7 +2733,7 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
27312733 ClauseProcessor cp (converter, semaCtx, clauses);
27322734 cp.processMap (converter.getCurrentLocation (), stmtCtx, clauseOps);
27332735 auto declMapperOp = firOpBuilder.create <mlir::omp::DeclareMapperOp>(
2734- converter.getCurrentLocation (), mapperNameStr. str () , varVal, mlirType,
2736+ converter.getCurrentLocation (), mapperNameStr, varVal, mlirType,
27352737 clauseOps.mapVars );
27362738 converter.getMLIRSymbolTable ()->insert (declMapperOp.getOperation ());
27372739 firOpBuilder.restoreInsertionPoint (insPt);
0 commit comments