102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S < %s | FileCheck %s3 4define void @strip_bitcast() {5; CHECK-LABEL: define void @strip_bitcast() {6; CHECK-NEXT: [[A:%.*]] = alloca i8, align 17; CHECK-NEXT: [[B:%.*]] = bitcast ptr [[A]] to ptr8; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]])9; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]])10; CHECK-NEXT: ret void11;12 %a = alloca i813 %b = bitcast ptr %a to ptr14 call void @llvm.lifetime.start.p0(i64 1, ptr %b)15 call void @llvm.lifetime.end.p0(i64 1, ptr %b)16 ret void17}18 19define void @strip_addrspacecast() {20; CHECK-LABEL: define void @strip_addrspacecast() {21; CHECK-NEXT: [[A:%.*]] = alloca i8, align 122; CHECK-NEXT: [[B:%.*]] = addrspacecast ptr [[A]] to ptr addrspace(1)23; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]])24; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]])25; CHECK-NEXT: ret void26;27 %a = alloca i828 %b = addrspacecast ptr %a to ptr addrspace(1)29 call void @llvm.lifetime.start.p1(i64 1, ptr addrspace(1) %b)30 call void @llvm.lifetime.end.p1(i64 1, ptr addrspace(1) %b)31 ret void32}33 34define void @strip_gep() {35; CHECK-LABEL: define void @strip_gep() {36; CHECK-NEXT: [[A:%.*]] = alloca [2 x i8], align 137; CHECK-NEXT: [[B:%.*]] = getelementptr [2 x i8], ptr [[A]], i64 0, i64 038; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]])39; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]])40; CHECK-NEXT: ret void41;42 %a = alloca [2 x i8]43 %b = getelementptr [2 x i8], ptr %a, i64 0, i64 044 call void @llvm.lifetime.start.p0(i64 1, ptr %b)45 call void @llvm.lifetime.end.p0(i64 1, ptr %b)46 ret void47}48 49define void @remove_unanalyzable(ptr %p) {50; CHECK-LABEL: define void @remove_unanalyzable(51; CHECK-SAME: ptr [[P:%.*]]) {52; CHECK-NEXT: ret void53;54 call void @llvm.lifetime.start.p0(i64 1, ptr %p)55 call void @llvm.lifetime.end.p0(i64 1, ptr %p)56 ret void57}58 59define void @no_declaration() {60; CHECK-LABEL: define void @no_declaration() {61; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1, addrspace(2)62; CHECK-NEXT: call void @llvm.lifetime.start.p2(ptr addrspace(2) [[A]])63; CHECK-NEXT: call void @llvm.lifetime.end.p2(ptr addrspace(2) [[A]])64; CHECK-NEXT: ret void65;66 %a = alloca i8, addrspace(2)67 call void @llvm.lifetime.start.p2(i64 1, ptr addrspace(2) %a)68 call void @llvm.lifetime.end.p2(i64 1, ptr addrspace(2) %a)69 ret void70}71 72define void @no_suffix1() {73; CHECK-LABEL: define void @no_suffix1() {74; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1, addrspace(3)75; CHECK-NEXT: call void @llvm.lifetime.start.p3(ptr addrspace(3) [[A]])76; CHECK-NEXT: call void @llvm.lifetime.end.p3(ptr addrspace(3) [[A]])77; CHECK-NEXT: ret void78;79 %a = alloca i8, addrspace(3)80 call void @llvm.lifetime.start(i64 1, ptr addrspace(3) %a)81 call void @llvm.lifetime.end(i64 1, ptr addrspace(3) %a)82 ret void83}84 85define void @no_suffix2() {86; CHECK-LABEL: define void @no_suffix2() {87; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1, addrspace(4)88; CHECK-NEXT: call void @llvm.lifetime.start.p4(ptr addrspace(4) [[A]])89; CHECK-NEXT: call void @llvm.lifetime.end.p4(ptr addrspace(4) [[A]])90; CHECK-NEXT: ret void91;92 %a = alloca i8, addrspace(4)93 call void @llvm.lifetime.start(i64 1, ptr addrspace(4) %a)94 call void @llvm.lifetime.end(i64 1, ptr addrspace(4) %a)95 ret void96}97 98declare void @llvm.lifetime.start.p0(i64, ptr)99declare void @llvm.lifetime.end.p0(i64, ptr)100declare void @llvm.lifetime.start.p1(i64, ptr addrspace(1))101declare void @llvm.lifetime.end.p1(i64, ptr addrspace(1))102