[llvm] [DSE] Split memory intrinsics if they are dead in the middle (PR #75478)

Björn Pettersson via llvm-commits llvm-commits at lists.llvm.org
Fri May 3 08:07:06 PDT 2024


================
@@ -246,7 +246,9 @@ define i32 @test5(i32 %x) nounwind ssp {
 ; CHECK-LABEL: @test5(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    [[Y:%.*]] = alloca [[STRUCT_S:%.*]], align 16
-; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[Y]], ptr align 16 @sS, i64 32, i1 false)
+; CHECK-NEXT:    [[TMP0:%.*]] = getelementptr inbounds i8, ptr [[Y]], i64 16
+; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 16 dereferenceable(16) [[TMP0]], ptr align 16 @sS, i64 16, i1 false)
----------------
bjope wrote:

This also looks weird. Splitting up the memset in two, but we still write 16+16=32 bytes.

https://github.com/llvm/llvm-project/pull/75478


More information about the llvm-commits mailing list