diff --git a/flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp b/flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp index 5675237f992a9..fbe4029ff5c09 100644 --- a/flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp +++ b/flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp @@ -221,7 +221,8 @@ class BoxedProcedurePass : public BoxedProcedurePassBase { if (embox.getHost()) { // Create the thunk. auto module = embox->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); auto loc = embox.getLoc(); mlir::Type i8Ty = builder.getI8Type(); mlir::Type i8Ptr = builder.getRefType(i8Ty); diff --git a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp index 24448a519ace6..1fbcf262a9e90 100644 --- a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp +++ b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp @@ -294,7 +294,8 @@ class TargetRewrite : public fir::TargetRewriteBase { } mlir::Type funcPointerType = tuple.getType(0); mlir::Type lenType = tuple.getType(1); - fir::FirOpBuilder builder(*rewriter, fir::getKindMapping(module)); + fir::KindMapping kindMap = fir::getKindMapping(module); + fir::FirOpBuilder builder(*rewriter, kindMap); auto [funcPointer, len] = fir::factory::extractCharacterProcedureTuple(builder, loc, oper); @@ -697,8 +698,8 @@ class TargetRewrite : public fir::TargetRewriteBase { func.front().addArgument(trailingTys[fixup.second], loc); auto tupleType = oldArgTys[fixup.index - offset]; rewriter->setInsertionPointToStart(&func.front()); - fir::FirOpBuilder builder(*rewriter, - fir::getKindMapping(getModule())); + fir::KindMapping kindMap = fir::getKindMapping(getModule()); + fir::FirOpBuilder builder(*rewriter, kindMap); auto tuple = fir::factory::createCharacterProcedureTuple( builder, loc, tupleType, newProcPointerArg, newLenArg); func.getArgument(fixup.index + 1).replaceAllUsesWith(tuple); diff --git a/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp b/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp index 1f57a2f15a86d..65b7121cc6c4c 100644 --- a/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp +++ b/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp @@ -809,7 +809,8 @@ static bool getAdjustedExtents(mlir::Location loc, auto triples = sliceOp.getTriples(); const std::size_t tripleSize = triples.size(); auto module = arrLoad->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); size = builder.genExtentFromTriplet(loc, triples[tripleSize - 3], triples[tripleSize - 2], triples[tripleSize - 1], idxTy); @@ -895,7 +896,8 @@ static mlir::Value genCoorOp(mlir::PatternRewriter &rewriter, assert(seqTy && seqTy.isa()); const auto dimension = seqTy.cast().getDimension(); auto module = load->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); auto typeparams = getTypeParamsIfRawData(loc, builder, load, alloc.getType()); mlir::Value result = rewriter.create( loc, eleTy, alloc, shape, slice, @@ -959,7 +961,8 @@ void genArrayCopy(mlir::Location loc, mlir::PatternRewriter &rewriter, // Reverse the indices so they are in column-major order. std::reverse(indices.begin(), indices.end()); auto module = arrLoad->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); auto fromAddr = rewriter.create( loc, getEleTy(src.getType()), src, shapeOp, CopyIn && copyUsingSlice ? sliceOp : mlir::Value{}, @@ -997,7 +1000,8 @@ genArrayLoadTypeParameters(mlir::Location loc, mlir::PatternRewriter &rewriter, if (auto charTy = eleTy.dyn_cast()) { assert(load.getMemref().getType().isa()); auto module = load->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); return {getCharacterLen(loc, builder, load, charTy)}; } TODO(loc, "unhandled dynamic type parameters"); @@ -1049,12 +1053,14 @@ allocateArrayTemp(mlir::Location loc, mlir::PatternRewriter &rewriter, loc, fir::BoxType::get(baseType), allocmem, shape, /*slice=*/mlir::Value{}, typeParams); auto module = load->getParentOfType(); - FirOpBuilder builder(rewriter, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(rewriter, kindMap); runtime::genDerivedTypeInitialize(builder, loc, box); // Any allocatable component that may have been allocated must be // deallocated during the clean-up. auto cleanup = [=](mlir::PatternRewriter &r) { - FirOpBuilder builder(r, getKindMapping(module)); + fir::KindMapping kindMap = getKindMapping(module); + FirOpBuilder builder(r, kindMap); runtime::genDerivedTypeDestroy(builder, loc, box); r.create(loc, allocmem); };