[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