Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / MemCpyOpt / lifetime-missing.ll
blob0626f09702f7e21e0abe5a45e59561213b6e09a3
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2 ; RUN: opt < %s -S -passes=memcpyopt -verify-memoryssa | FileCheck %s
4 ; Check that we don't introduce llvm.lifetime.end.
6 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
7 target triple = "x86_64-grtev4-linux-gnu"
9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
10 declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0
11 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)
13 define void @test() {
14 ; CHECK-LABEL: define void @test() {
15 ; CHECK-NEXT:  entry:
16 ; CHECK-NEXT:    [[AGG_TMP_SROA_14:%.*]] = alloca [20 x i8], align 4
17 ; CHECK-NEXT:    [[AGG_TMP_SROA_14_128_SROA_IDX:%.*]] = getelementptr i8, ptr [[AGG_TMP_SROA_14]], i64 4
18 ; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr [[AGG_TMP_SROA_14_128_SROA_IDX]], i8 0, i64 1, i1 false)
19 ; CHECK-NEXT:    [[AGG_TMP3_SROA_35_128_SROA_IDX:%.*]] = getelementptr i8, ptr [[AGG_TMP_SROA_14]], i64 4
20 ; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr inttoptr (i64 4 to ptr), i8 0, i64 1, i1 false)
21 ; CHECK-NEXT:    call void @llvm.memset.p0.i64(ptr null, i8 0, i64 1, i1 false)
22 ; CHECK-NEXT:    ret void
24 entry:
25   %agg.tmp3.sroa.35 = alloca [20 x i8], align 4
26   %agg.tmp.sroa.14 = alloca [20 x i8], align 4
27   %agg.tmp.sroa.14.128.sroa_idx = getelementptr i8, ptr %agg.tmp.sroa.14, i64 4
28   call void @llvm.memset.p0.i64(ptr %agg.tmp.sroa.14.128.sroa_idx, i8 0, i64 1, i1 false)
29   call void @llvm.lifetime.start.p0(i64 20, ptr %agg.tmp3.sroa.35)
30   call void @llvm.memcpy.p0.p0.i64(ptr %agg.tmp3.sroa.35, ptr %agg.tmp.sroa.14, i64 20, i1 false)
31   %agg.tmp3.sroa.35.128.sroa_idx = getelementptr i8, ptr %agg.tmp3.sroa.35, i64 4
32   call void @llvm.memcpy.p0.p0.i64(ptr inttoptr (i64 4 to ptr), ptr %agg.tmp3.sroa.35.128.sroa_idx, i64 1, i1 false)
33   call void @llvm.memcpy.p0.p0.i64(ptr null, ptr inttoptr (i64 4 to ptr), i64 1, i1 false)
34   ret void
37 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
38 declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1
40 ; uselistorder directives
41 uselistorder i64 4, { 2, 0, 1 }
42 uselistorder ptr @llvm.memcpy.p0.p0.i64, { 2, 1, 0 }
44 attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
45 attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }