[llvm] [MemCpyOpt] allow some undef contents overread in processMemCpyMemCpyDependence (PR #143745)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 01:46:12 PDT 2025
================
@@ -214,6 +215,24 @@ define void @pr98675(ptr noalias %p1, ptr noalias %p2) {
ret void
}
+define void @over_offset_cpy(ptr %src) {
+; CHECK-LABEL: define void @over_offset_cpy(
+; CHECK-SAME: ptr [[SRC:%.*]]) {
+; CHECK-NEXT: [[TMP:%.*]] = alloca i8, i64 2, align 1
+; CHECK-NEXT: [[DST:%.*]] = alloca i8, i64 1, align 1
+; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP]], ptr align 8 [[SRC]], i64 1, i1 false)
+; CHECK-NEXT: [[TMP_OFFSET:%.*]] = getelementptr inbounds i8, ptr [[TMP]], i64 1
+; CHECK-NEXT: ret void
+;
+ %tmp = alloca i8, i64 2
+ %dst = alloca i8, i64 1
----------------
nikic wrote:
```suggestion
%tmp = alloca [2 x i8]
%dst = alloca i8
```
Do not use alloca size argument for non-dynamic alloca.
https://github.com/llvm/llvm-project/pull/143745
More information about the llvm-commits
mailing list