@@ -263,7 +263,8 @@ struct AllocaOpConversion : public fir::FIROpConversion<fir::AllocaOp> {
263263 << scalarType << " with type parameters" ;
264264 }
265265 }
266- if (auto scaleSize = fir::genAllocationScaleSize (alloc, ity, rewriter))
266+ if (auto scaleSize = fir::genAllocationScaleSize (
267+ alloc.getLoc (), alloc.getInType (), ity, rewriter))
267268 size =
268269 rewriter.createOrFold <mlir::LLVM::MulOp>(loc, ity, size, scaleSize);
269270 if (alloc.hasShapeOperands ()) {
@@ -1063,7 +1064,8 @@ struct AllocMemOpConversion : public fir::FIROpConversion<fir::AllocMemOp> {
10631064 if (fir::isRecordWithTypeParameters (fir::unwrapSequenceType (dataTy)))
10641065 TODO (loc, " fir.allocmem codegen of derived type with length parameters" );
10651066 mlir::Value size = genTypeSizeInBytes (loc, ity, rewriter, llvmObjectTy);
1066- if (auto scaleSize = fir::genAllocationScaleSize (heap, ity, rewriter))
1067+ if (auto scaleSize =
1068+ fir::genAllocationScaleSize (loc, heap.getInType (), ity, rewriter))
10671069 size = rewriter.create <mlir::LLVM::MulOp>(loc, ity, size, scaleSize);
10681070 for (mlir::Value opnd : adaptor.getOperands ())
10691071 size = rewriter.create <mlir::LLVM::MulOp>(
@@ -4289,20 +4291,22 @@ void fir::populateFIRToLLVMConversionPatterns(
42894291 BoxTypeCodeOpConversion, BoxTypeDescOpConversion, CallOpConversion,
42904292 CmpcOpConversion, VolatileCastOpConversion, ConvertOpConversion,
42914293 CoordinateOpConversion, CopyOpConversion, DTEntryOpConversion,
4292- DeclareOpConversion, DivcOpConversion, EmboxOpConversion,
4293- EmboxCharOpConversion, EmboxProcOpConversion, ExtractValueOpConversion,
4294- FieldIndexOpConversion, FirEndOpConversion, FreeMemOpConversion,
4295- GlobalLenOpConversion, GlobalOpConversion, InsertOnRangeOpConversion,
4296- IsPresentOpConversion, LenParamIndexOpConversion, LoadOpConversion,
4297- LocalitySpecifierOpConversion, MulcOpConversion, NegcOpConversion,
4298- NoReassocOpConversion, SelectCaseOpConversion, SelectOpConversion,
4299- SelectRankOpConversion, SelectTypeOpConversion, ShapeOpConversion,
4300- ShapeShiftOpConversion, ShiftOpConversion, SliceOpConversion,
4301- StoreOpConversion, StringLitOpConversion, SubcOpConversion,
4302- TypeDescOpConversion, TypeInfoOpConversion, UnboxCharOpConversion,
4303- UnboxProcOpConversion, UndefOpConversion, UnreachableOpConversion,
4304- XArrayCoorOpConversion, XEmboxOpConversion, XReboxOpConversion,
4305- ZeroOpConversion>(converter, options);
4294+ DeclareOpConversion,
4295+ DoConcurrentSpecifierOpConversion<fir::LocalitySpecifierOp>,
4296+ DoConcurrentSpecifierOpConversion<fir::DeclareReductionOp>,
4297+ DivcOpConversion, EmboxOpConversion, EmboxCharOpConversion,
4298+ EmboxProcOpConversion, ExtractValueOpConversion, FieldIndexOpConversion,
4299+ FirEndOpConversion, FreeMemOpConversion, GlobalLenOpConversion,
4300+ GlobalOpConversion, InsertOnRangeOpConversion, IsPresentOpConversion,
4301+ LenParamIndexOpConversion, LoadOpConversion, MulcOpConversion,
4302+ NegcOpConversion, NoReassocOpConversion, SelectCaseOpConversion,
4303+ SelectOpConversion, SelectRankOpConversion, SelectTypeOpConversion,
4304+ ShapeOpConversion, ShapeShiftOpConversion, ShiftOpConversion,
4305+ SliceOpConversion, StoreOpConversion, StringLitOpConversion,
4306+ SubcOpConversion, TypeDescOpConversion, TypeInfoOpConversion,
4307+ UnboxCharOpConversion, UnboxProcOpConversion, UndefOpConversion,
4308+ UnreachableOpConversion, XArrayCoorOpConversion, XEmboxOpConversion,
4309+ XReboxOpConversion, ZeroOpConversion>(converter, options);
43064310
43074311 // Patterns that are populated without a type converter do not trigger
43084312 // target materializations for the operands of the root op.
0 commit comments