[llvm] 6ee9de7 - [test][MemCpyOpt] Regression test for D153453

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 2 13:48:43 PDT 2023


Author: Vitaly Buka
Date: 2023-08-02T13:48:27-07:00
New Revision: 6ee9de7a676a22e8ee5254a91c9a14fdcb8b7f94

URL: https://github.com/llvm/llvm-project/commit/6ee9de7a676a22e8ee5254a91c9a14fdcb8b7f94
DIFF: https://github.com/llvm/llvm-project/commit/6ee9de7a676a22e8ee5254a91c9a14fdcb8b7f94.diff

LOG: [test][MemCpyOpt] Regression test for D153453

Added: 
    llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll b/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll
new file mode 100644
index 00000000000000..dda4d8ee5f6e6e
--- /dev/null
+++ b/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll
@@ -0,0 +1,40 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
+; RUN: opt < %s -S -passes=memcpyopt | FileCheck %s
+
+; Check that we don't introduce llvm.lifetime for AGG_TMP_SROA_14.
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-grtev4-linux-gnu"
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0
+
+define void @test() {
+; CHECK-LABEL: define void @test() {
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[AGG_TMP3_SROA_35:%.*]] = alloca [20 x i8], align 4
+; CHECK-NEXT:    [[AGG_TMP_SROA_14:%.*]] = alloca [20 x i8], align 4
+; CHECK-NEXT:    [[AGG_TMP_SROA_14_128_SROA_IDX:%.*]] = getelementptr i8, ptr [[AGG_TMP_SROA_14]], i64 4
+; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[AGG_TMP_SROA_14]], ptr null, i64 1, i1 false)
+; CHECK-NEXT:    call void @llvm.lifetime.start.p0(i64 20, ptr [[AGG_TMP3_SROA_35]])
+; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr [[AGG_TMP3_SROA_35]], ptr [[AGG_TMP_SROA_14]], i64 20, i1 false)
+; CHECK-NEXT:    ret void
+;
+entry:
+  %agg.tmp3.sroa.35 = alloca [20 x i8], align 4
+  %agg.tmp.sroa.14 = alloca [20 x i8], align 4
+  %agg.tmp.sroa.14.128.sroa_idx = getelementptr i8, ptr %agg.tmp.sroa.14, i64 4
+  call void @llvm.memcpy.p0.p0.i64(ptr %agg.tmp.sroa.14, ptr null, i64 1, i1 false)
+  call void @llvm.lifetime.start.p0(i64 20, ptr %agg.tmp3.sroa.35)
+  call void @llvm.memcpy.p0.p0.i64(ptr %agg.tmp3.sroa.35, ptr %agg.tmp.sroa.14, i64 20, i1 false)
+  ret void
+}
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1
+
+; uselistorder directives
+uselistorder ptr @llvm.memcpy.p0.p0.i64, { 1, 0 }
+
+attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }


        


More information about the llvm-commits mailing list