Skip to content

Commit 903656f

Browse files
committed
Address review feedback
1 parent 1eab5f0 commit 903656f

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

clang/include/clang/CIR/Dialect/IR/CIROps.td

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2459,10 +2459,6 @@ def CIR_CopyOp : CIR_Op<"copy",[
24592459
SameTypeOperands,
24602460
DeclareOpInterfaceMethods<PromotableMemOpInterface>
24612461
]> {
2462-
let arguments = (ins
2463-
Arg<CIR_PointerType, "", [MemWrite]>:$dst,
2464-
Arg<CIR_PointerType, "", [MemRead]>:$src
2465-
);
24662462
let summary = "Copies contents from a CIR pointer to another";
24672463
let description = [{
24682464
Given two CIR pointers, `src` and `dst`, `cir.copy` will copy the memory
@@ -2480,6 +2476,11 @@ def CIR_CopyOp : CIR_Op<"copy",[
24802476
```
24812477
}];
24822478

2479+
let arguments = (ins
2480+
Arg<CIR_PointerType, "", [MemWrite]>:$dst,
2481+
Arg<CIR_PointerType, "", [MemRead]>:$src
2482+
);
2483+
24832484
let assemblyFormat = [{$src `to` $dst
24842485
attr-dict `:` qualified(type($dst))
24852486
}];
@@ -2490,9 +2491,9 @@ def CIR_CopyOp : CIR_Op<"copy",[
24902491
cir::PointerType getType() { return getSrc().getType(); }
24912492

24922493
/// Returns the number of bytes to be copied.
2493-
unsigned getLength() {
2494-
return mlir::DataLayout::closest(*this).getTypeSize(getType().getPointee());
2495-
}
2494+
unsigned getLength(const mlir::DataLayout &dt) {
2495+
return dt.getTypeSize(getType().getPointee());
2496+
}
24962497
}];
24972498
}
24982499

clang/lib/CIR/Dialect/IR/CIRMemorySlot.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ bool cir::CopyOp::canUsesBeRemoved(
153153
if (getDst() == getSrc())
154154
return false;
155155

156-
return getLength() == dataLayout.getTypeSize(slot.elemType);
156+
return getLength(dataLayout) == dataLayout.getTypeSize(slot.elemType);
157157
}
158158

159159
//===----------------------------------------------------------------------===//

clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,9 @@ mlir::LLVM::Linkage convertLinkage(cir::GlobalLinkageKind linkage) {
176176
mlir::LogicalResult CIRToLLVMCopyOpLowering::matchAndRewrite(
177177
cir::CopyOp op, OpAdaptor adaptor,
178178
mlir::ConversionPatternRewriter &rewriter) const {
179+
mlir::DataLayout layout(op->getParentOfType<mlir::ModuleOp>());
179180
const mlir::Value length = mlir::LLVM::ConstantOp::create(
180-
rewriter, op.getLoc(), rewriter.getI32Type(), op.getLength());
181+
rewriter, op.getLoc(), rewriter.getI32Type(), op.getLength(layout));
181182
assert(!cir::MissingFeatures::aggValueSlotVolatile());
182183
rewriter.replaceOpWithNewOp<mlir::LLVM::MemcpyOp>(
183184
op, adaptor.getDst(), adaptor.getSrc(), length, /*isVolatile=*/false);

0 commit comments

Comments
 (0)