From 72e9553feda95311b54a0325d1f35cc9575ae41e Mon Sep 17 00:00:00 2001 From: Jaddyen Date: Thu, 11 Sep 2025 14:00:40 +0000 Subject: [PATCH] change dup --- .../MemRefToEmitC/MemRefToEmitC.cpp | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp b/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp index 2b7bdc9a7b7f8..130e1be3a602e 100644 --- a/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp +++ b/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp @@ -153,24 +153,8 @@ struct ConvertAlloc final : public OpConversionPattern { loc, "incompatible memref type for EmitC conversion"); } - Type sizeTType = emitc::SizeTType::get(rewriter.getContext()); - Type elementType = memrefType.getElementType(); - IndexType indexType = rewriter.getIndexType(); - emitc::CallOpaqueOp sizeofElementOp = emitc::CallOpaqueOp::create( - rewriter, loc, sizeTType, rewriter.getStringAttr("sizeof"), - ValueRange{}, - ArrayAttr::get(rewriter.getContext(), {TypeAttr::get(elementType)})); - - int64_t numElements = 1; - for (int64_t dimSize : memrefType.getShape()) { - numElements *= dimSize; - } - Value numElementsValue = emitc::ConstantOp::create( - rewriter, loc, indexType, rewriter.getIndexAttr(numElements)); - Value totalSizeBytes = - emitc::MulOp::create(rewriter, loc, sizeTType, - sizeofElementOp.getResult(0), numElementsValue); + calculateMemrefTotalSizeBytes(loc, memrefType, rewriter); emitc::CallOpaqueOp allocCall; StringAttr allocFunctionName; @@ -179,8 +163,8 @@ struct ConvertAlloc final : public OpConversionPattern { if (allocOp.getAlignment()) { allocFunctionName = rewriter.getStringAttr(alignedAllocFunctionName); alignmentValue = emitc::ConstantOp::create( - rewriter, loc, sizeTType, - rewriter.getIntegerAttr(indexType, + rewriter, loc, emitc::SizeTType::get(rewriter.getContext()), + rewriter.getIntegerAttr(rewriter.getIndexType(), allocOp.getAlignment().value_or(0))); argsVec.push_back(alignmentValue); } else { @@ -196,7 +180,8 @@ struct ConvertAlloc final : public OpConversionPattern { emitc::OpaqueType::get(rewriter.getContext(), "void")), allocFunctionName, args); - emitc::PointerType targetPointerType = emitc::PointerType::get(elementType); + emitc::PointerType targetPointerType = + emitc::PointerType::get(memrefType.getElementType()); emitc::CastOp castOp = emitc::CastOp::create( rewriter, loc, targetPointerType, allocCall.getResult(0));