39
39
#include " mlir/Transforms/RegionUtils.h"
40
40
#include " llvm/ADT/STLExtras.h"
41
41
#include " llvm/Frontend/OpenMP/OMPConstants.h"
42
- #include < string>
43
42
44
43
using namespace Fortran ::lower::omp;
45
44
@@ -2709,13 +2708,16 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
2709
2708
const auto &mapperName{std::get<std::optional<parser::Name>>(spec.t )};
2710
2709
const auto &varType{std::get<parser::TypeSpec>(spec.t )};
2711
2710
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 ();
2719
2721
2720
2722
mlir::OpBuilder::InsertPoint insPt = firOpBuilder.saveInsertionPoint ();
2721
2723
firOpBuilder.setInsertionPointToStart (converter.getModuleOp ().getBody ());
@@ -2731,7 +2733,7 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
2731
2733
ClauseProcessor cp (converter, semaCtx, clauses);
2732
2734
cp.processMap (converter.getCurrentLocation (), stmtCtx, clauseOps);
2733
2735
auto declMapperOp = firOpBuilder.create <mlir::omp::DeclareMapperOp>(
2734
- converter.getCurrentLocation (), mapperNameStr. str () , varVal, mlirType,
2736
+ converter.getCurrentLocation (), mapperNameStr, varVal, mlirType,
2735
2737
clauseOps.mapVars );
2736
2738
converter.getMLIRSymbolTable ()->insert (declMapperOp.getOperation ());
2737
2739
firOpBuilder.restoreInsertionPoint (insPt);
0 commit comments