//===------------------------- Memory Use Markers -------------------------===//
//
def int_lifetime_start : Intrinsic<[],
- [llvm_i64_ty, llvm_ptr_ty],
+ [llvm_i64_ty, llvm_anyptr_ty],
[IntrArgMemOnly, NoCapture<1>]>;
def int_lifetime_end : Intrinsic<[],
- [llvm_i64_ty, llvm_ptr_ty],
+ [llvm_i64_ty, llvm_anyptr_ty],
[IntrArgMemOnly, NoCapture<1>]>;
def int_invariant_start : Intrinsic<[llvm_descriptor_ty],
[llvm_i64_ty, llvm_anyptr_ty],
// Coroutine Structure Intrinsics.
-def int_coro_id : Intrinsic<[llvm_token_ty], [llvm_i32_ty, llvm_ptr_ty,
- llvm_ptr_ty, llvm_ptr_ty],
- [IntrArgMemOnly, IntrReadMem,
+def int_coro_id : Intrinsic<[llvm_token_ty], [llvm_i32_ty, llvm_ptr_ty,
+ llvm_ptr_ty, llvm_ptr_ty],
+ [IntrArgMemOnly, IntrReadMem,
ReadNone<1>, ReadOnly<2>, NoCapture<2>]>;
def int_coro_alloc : Intrinsic<[llvm_i1_ty], [llvm_token_ty], []>;
def int_coro_begin : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
[WriteOnly<1>]>;
-def int_coro_free : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
- [IntrReadMem, IntrArgMemOnly, ReadOnly<1>,
+def int_coro_free : Intrinsic<[llvm_ptr_ty], [llvm_token_ty, llvm_ptr_ty],
+ [IntrReadMem, IntrArgMemOnly, ReadOnly<1>,
NoCapture<1>]>;
def int_coro_end : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty, llvm_i1_ty], []>;
}
break;
}
- case 'i': {
- if (Name.startswith("invariant.start")) {
+ case 'i':
+ case 'l': {
+ bool IsLifetimeStart = Name.startswith("lifetime.start");
+ if (IsLifetimeStart || Name.startswith("invariant.start")) {
+ Intrinsic::ID ID = IsLifetimeStart ?
+ Intrinsic::lifetime_start : Intrinsic::invariant_start;
auto Args = F->getFunctionType()->params();
Type* ObjectPtr[1] = {Args[1]};
- if (F->getName() !=
- Intrinsic::getName(Intrinsic::invariant_start, ObjectPtr)) {
+ if (F->getName() != Intrinsic::getName(ID, ObjectPtr)) {
rename(F);
- NewFn = Intrinsic::getDeclaration(
- F->getParent(), Intrinsic::invariant_start, ObjectPtr);
+ NewFn = Intrinsic::getDeclaration(F->getParent(), ID, ObjectPtr);
return true;
}
}
- if (Name.startswith("invariant.end")) {
+
+ bool IsLifetimeEnd = Name.startswith("lifetime.end");
+ if (IsLifetimeEnd || Name.startswith("invariant.end")) {
+ Intrinsic::ID ID = IsLifetimeEnd ?
+ Intrinsic::lifetime_end : Intrinsic::invariant_end;
+
auto Args = F->getFunctionType()->params();
- Type* ObjectPtr[1] = {Args[2]};
- if (F->getName() !=
- Intrinsic::getName(Intrinsic::invariant_end, ObjectPtr)) {
+ Type* ObjectPtr[1] = {Args[IsLifetimeEnd ? 1 : 2]};
+ if (F->getName() != Intrinsic::getName(ID, ObjectPtr)) {
rename(F);
- NewFn = Intrinsic::getDeclaration(F->getParent(),
- Intrinsic::invariant_end, ObjectPtr);
+ NewFn = Intrinsic::getDeclaration(F->getParent(), ID, ObjectPtr);
return true;
}
}
"lifetime.start requires the size to be an i64");
Value *Ops[] = { Size, Ptr };
Module *M = BB->getParent()->getParent();
- Value *TheFn = Intrinsic::getDeclaration(M, Intrinsic::lifetime_start);
+ Value *TheFn = Intrinsic::getDeclaration(M, Intrinsic::lifetime_start,
+ { Ptr->getType() });
return createCallHelper(TheFn, Ops, this);
}
"lifetime.end requires the size to be an i64");
Value *Ops[] = { Size, Ptr };
Module *M = BB->getParent()->getParent();
- Value *TheFn = Intrinsic::getDeclaration(M, Intrinsic::lifetime_end);
+ Value *TheFn = Intrinsic::getDeclaration(M, Intrinsic::lifetime_end,
+ { Ptr->getType() });
return createCallHelper(TheFn, Ops, this);
}
; RUN: opt < %s -basicaa -gvn -dse -S | FileCheck %s
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @external(i32*)
%P2 = getelementptr i8, i8* %P, i32 2
store i8 %Y, i8* %P2 ;; Not read by lifetime.end, should be removed.
; CHECK: store i8 2, i8* %P2
- call void @llvm.lifetime.end(i64 1, i8* %P)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %P)
store i8 2, i8* %P2
; CHECK-NOT: store
ret void
%P2 = getelementptr i8, i8* %P, i32 2
store i8 %Y, i8* %P2
; CHECK-NEXT: call void @llvm.lifetime.end
- call void @llvm.lifetime.end(i64 10, i8* %P)
+ call void @llvm.lifetime.end.p0i8(i64 10, i8* %P)
ret void
; CHECK-NEXT: ret void
}
@.str = private unnamed_addr constant [8 x i8] c"a = %l\0A\00", align 1
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @hoo(i64*)
declare i32 @printf(i8* nocapture readonly, ...)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define void @goo(i32 %N, i64* %b) {
entry:
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- call void @llvm.lifetime.start(i64 8, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %tmp)
call void @hoo(i64* %a.i)
call void @hoo(i64* %c)
%tmp1 = load volatile i64, i64* %a.i, align 8
%call.i = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i64 %tmp1)
- call void @llvm.lifetime.end(i64 8, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %tmp)
%inc = add nsw i32 %i.0, 1
br label %for.cond
ret void
}
+declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind readonly
+declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+
+define void @tests.lifetime.start.end() {
+ ; CHECK-LABEL: @tests.lifetime.start.end(
+ %a = alloca i8
+ call void @llvm.lifetime.start(i64 1, i8* %a)
+ ; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %a)
+ store i8 0, i8* %a
+ call void @llvm.lifetime.end(i64 1, i8* %a)
+ ; CHECK: call void @llvm.lifetime.end.p0i8(i64 1, i8* %a)
+ ret void
+}
+
+
; This is part of @test.objectsize(), since llvm.objectsize declaration gets
; emitted at the end.
; CHECK: declare i32 @llvm.objectsize.i32.p0i8
+
+
+; CHECK: declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+; CHECK: declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
ret float %res
}
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
define void @test_lifetime_intrin() {
; CHECK-LABEL: name: test_lifetime_intrin
; CHECK: RET_ReallyLR
%slot = alloca i8, i32 4
- call void @llvm.lifetime.start(i64 0, i8* %slot)
- call void @llvm.lifetime.end(i64 0, i8* %slot)
+ call void @llvm.lifetime.start.p0i8(i64 0, i8* %slot)
+ call void @llvm.lifetime.end.p0i8(i64 0, i8* %slot)
ret void
}
entry:
%a1 = alloca [256 x i32], align 4
%0 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %0)
%arraydecay = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i64 0, i64 0
call void @foo3(i32* %arraydecay)
call void asm sideeffect "foo2", "~{w0},~{w1},~{w2},~{w3},~{w4},~{w5},~{w6},~{w7},~{w8},~{w9},~{w10},~{w11},~{w12},~{w13},~{w14},~{w15},~{w16},~{w17},~{w18},~{w19},~{w20},~{w21},~{w22},~{w23},~{w24},~{w25},~{w26},~{w27},~{w28},~{w29},~{w30}"()
- call void @llvm.lifetime.end(i64 1024, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %0)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { nounwind sspstrong "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
define amdgpu_kernel void @store_fi_lifetime(i32 addrspace(1)* %out, i32 %in) #0 {
entry:
%b = alloca i8
- call void @llvm.lifetime.start(i64 1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %b)
store volatile i8* %b, i8* addrspace(1)* undef
- call void @llvm.lifetime.end(i64 1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %b)
ret void
}
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind }
attributes #1 = { argmemonly nounwind }
; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-promote-alloca %s | FileCheck -check-prefix=OPT %s
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
; OPT-LABEL: @use_lifetime_promotable_lds(
; OPT-NOT: alloca i32
bb:
%tmp = alloca i32, align 4
%tmp1 = bitcast i32* %tmp to i8*
- call void @llvm.lifetime.start(i64 4, i8* %tmp1)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %tmp1)
%tmp2 = getelementptr inbounds i32, i32 addrspace(1)* %arg, i64 1
%tmp3 = load i32, i32 addrspace(1)* %tmp2
store i32 %tmp3, i32* %tmp
- call void @llvm.lifetime.end(i64 4, i8* %tmp1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %tmp1)
ret void
}
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
declare %class.StaticSocketDataProvider.6.231.281.1306.2331* @_ZN24StaticSocketDataProviderC1EP13MockReadWritejS1_j(%class.StaticSocketDataProvider.6.231.281.1306.2331* returned, %struct.MockReadWrite.7.232.282.1307.2332*, i32, %struct.MockReadWrite.7.232.282.1307.2332*, i32) unnamed_addr
declare %class.AssertHelper.10.235.285.1310.2335* @_ZN12AssertHelperD1Ev(%class.AssertHelper.10.235.285.1310.2335* returned) unnamed_addr
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
declare void @_ZN18ClientSocketHandle5m_fn3IPiEEvRK25Trans_NS___1_basic_stringIciiE13scoped_refptr15RequestPriorityN16ClientSocketPool13RespectLimitsERiT_11BoundNetLog(%class.ClientSocketHandle.14.239.289.1314.2339*, %class.Trans_NS___1_basic_string.18.243.293.1318.2343* dereferenceable(12), %class.scoped_refptr.19.244.294.1319.2344*, i32, i32, i32* dereferenceable(4), i32*, %class.BoundNetLog.20.245.295.1320.2345*)
; CHECK-LABEL: Func1:
define void @Func1() nounwind ssp "no-frame-pointer-elim"="true" {
-entry:
+entry:
; A8: movw [[BASE:r[0-9]+]], :lower16:{{.*}}TestVar{{.*}}
; A8: movt [[BASE]], :upper16:{{.*}}TestVar{{.*}}
; A8: ldrd [[FIELD1:r[0-9]+]], [[FIELD2:r[0-9]+]], {{\[}}[[BASE]], #4]
; A8-NEXT: str [[FIELD1]], {{\[}}[[BASE]]{{\]}}
; CONSERVATIVE-NOT: ldrd
%orig_blocks = alloca [256 x i16], align 2
- %0 = bitcast [256 x i16]* %orig_blocks to i8*call void @llvm.lifetime.start(i64 512, i8* %0) nounwind
+ %0 = bitcast [256 x i16]* %orig_blocks to i8*call void @llvm.lifetime.start.p0i8(i64 512, i8* %0) nounwind
%tmp1 = load i32, i32* getelementptr inbounds (%struct.Test, %struct.Test* @TestVar, i32 0, i32 1), align 4
%tmp2 = load i32, i32* getelementptr inbounds (%struct.Test, %struct.Test* @TestVar, i32 0, i32 2), align 4
%add = add nsw i32 %tmp2, %tmp1
store i32 %add, i32* getelementptr inbounds (%struct.Test, %struct.Test* @TestVar, i32 0, i32 0), align 4
- call void @llvm.lifetime.end(i64 512, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %0) nounwind
ret void
}
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
define i32 @test_stack_guard_remat() #0 {
%a1 = alloca [256 x i32], align 4
%1 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %1)
%2 = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i32 0, i32 0
call void @foo3(i32* %2) #3
call void asm sideeffect "foo2", "~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{sp},~{lr}"()
- call void @llvm.lifetime.end(i64 1024, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %1)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
define void @nowarn() local_unnamed_addr #0 !dbg !6 {
%1 = alloca [504 x i8], align 1
%2 = getelementptr inbounds [504 x i8], [504 x i8]* %1, i64 0, i64 0, !dbg !15
- call void @llvm.lifetime.start(i64 504, i8* nonnull %2) #4, !dbg !15
+ call void @llvm.lifetime.start.p0i8(i64 504, i8* nonnull %2) #4, !dbg !15
tail call void @llvm.dbg.declare(metadata [504 x i8]* %1, metadata !10, metadata !16), !dbg !17
call void @doit(i8* nonnull %2) #4, !dbg !18
- call void @llvm.lifetime.end(i64 504, i8* nonnull %2) #4, !dbg !19
+ call void @llvm.lifetime.end.p0i8(i64 504, i8* nonnull %2) #4, !dbg !19
ret void, !dbg !19
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
declare void @doit(i8*) local_unnamed_addr #3
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; CHECK: error: warn_stack.c
; CHECK: BPF stack limit
define void @warn() local_unnamed_addr #0 !dbg !20 {
%1 = alloca [512 x i8], align 1
%2 = getelementptr inbounds [512 x i8], [512 x i8]* %1, i64 0, i64 0, !dbg !26
- call void @llvm.lifetime.start(i64 512, i8* nonnull %2) #4, !dbg !26
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* nonnull %2) #4, !dbg !26
tail call void @llvm.dbg.declare(metadata [512 x i8]* %1, metadata !22, metadata !16), !dbg !27
call void @doit(i8* nonnull %2) #4, !dbg !28
- call void @llvm.lifetime.end(i64 512, i8* nonnull %2) #4, !dbg !29
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* nonnull %2) #4, !dbg !29
ret void, !dbg !29
}
declare i32 @llvm.hexagon.S2.clbnorm(i32) #2
declare i32 @llvm.hexagon.S2.lsr.r.r(i32, i32) #2
declare i64 @llvm.hexagon.M2.mpyd.ll.s1(i32, i32) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
%array = alloca [100 x i32], align 8
%doublearray = alloca [100 x [100 x i32]], align 8
%0 = bitcast [100 x i32]* %array to i8*
- call void @llvm.lifetime.start(i64 400, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 400, i8* %0) #1
%1 = bitcast [100 x [100 x i32]]* %doublearray to i8*
- call void @llvm.lifetime.start(i64 40000, i8* %1) #1
+ call void @llvm.lifetime.start.p0i8(i64 40000, i8* %1) #1
%arrayidx1 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %doublearray, i32 0, i32 10, i32 10
%arrayidx2.gep = getelementptr [100 x i32], [100 x i32]* %array, i32 0, i32 0
br label %for.body
for.end17:
%3 = load i32, i32* %arrayidx1, align 8
- call void @llvm.lifetime.end(i64 40000, i8* %1) #1
- call void @llvm.lifetime.end(i64 400, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 40000, i8* %1) #1
+ call void @llvm.lifetime.end.p0i8(i64 400, i8* %0) #1
ret i32 %3
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = add nsw i32 %1, 1
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = sub nsw i32 %1, 1
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = or i32 %1, 1
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = and i32 %1, -2
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = add nsw i32 %1, %a
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = sub nsw i32 %1, %a
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = or i32 %1, %a
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
entry:
%x = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3
call void @foo(i32* nonnull %x) #3
%1 = load i32, i32* %x, align 4, !tbaa !1
%inc = and i32 %1, %a
store i32 %inc, i32* %x, align 4, !tbaa !1
call void @foo(i32* nonnull %x) #3
- call void @llvm.lifetime.end(i64 4, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #3
ret void
}
declare void @foo(i32*) #2
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv60" "target-features"="+hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
entry:
%x = alloca i32, align 4
%x.0.x.0..sroa_cast = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %x.0.x.0..sroa_cast)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x.0.x.0..sroa_cast)
store volatile i32 0, i32* %x, align 4
%call = tail call i32 bitcast (i32 (...)* @bar to i32 ()*)() #0
%x.0.x.0. = load volatile i32, i32* %x, align 4
%add = add nsw i32 %x.0.x.0., %a
- call void @llvm.lifetime.end(i64 4, i8* %x.0.x.0..sroa_cast)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x.0.x.0..sroa_cast)
ret i32 %add
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare i32 @bar(...) #0
target triple = "hexagon"
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
declare signext i16 @cat(i16 signext) #1
declare void @danny(i16 signext, i16 signext, i16 signext, i16* nocapture readonly, i16 signext, i16* nocapture) #1
declare void @sammy(i16* nocapture readonly, i16* nocapture readonly, i16* nocapture readonly, i32* nocapture, i16* nocapture, i16 signext, i16 signext, i16 signext) #1
entry:
%arg1 = alloca i32, align 4
%0 = bitcast i32* %arg1 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #2
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #2
store i32 %status, i32* %arg1, align 4, !tbaa !1
%1 = call i32 asm sideeffect "r0 = #$1\0Ar1 = $2\0Ar2 = $4\0Atrap0 (#0)\0A$0 = r0", "=r,i,r,*m,r,~{r0},~{r1},~{r2}"(i32 24, i32* nonnull %arg1, i32* nonnull %arg1, i32 %status) #2, !srcloc !5
- call void @llvm.lifetime.end(i64 4, i8* %0) #2
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #2
ret i32 %1
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv5" "target-features"="-hvx,-hvx-double" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
%struct.0 = type { i32, i16, i8* }
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @fred(i8* readonly %p0, i32* %p1) local_unnamed_addr #0 {
entry:
if.else: ; preds = %lor.lhs.false
%v6 = bitcast i16* %v0 to i8*
- call void @llvm.lifetime.start(i64 2, i8* nonnull %v6) #0
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* nonnull %v6) #0
store i16 0, i16* %v0, align 2
%v7 = call i32 @foo(%struct.0* nonnull %v3, i16* nonnull %v0) #0
%v8 = icmp eq i32* %p1, null
br label %if.end7
if.end7: ; preds = %if.else, %if.then6
- call void @llvm.lifetime.end(i64 2, i8* nonnull %v6) #0
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* nonnull %v6) #0
br label %cleanup
cleanup: ; preds = %if.then3, %if.then,
entry:
%local = alloca [1024 x i32], align 8
%0 = bitcast [1024 x i32]* %local to i8*
- call void @llvm.lifetime.start(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %0) #1
%arraydecay = getelementptr inbounds [1024 x i32], [1024 x i32]* %local, i32 0, i32 0
call void @baz_1(i32* %arraydecay) #3
%arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* %local, i32 0, i32 %n
%1 = load i32, i32* %arrayidx, align 4
- call void @llvm.lifetime.end(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %0) #1
ret i32 %1
}
entry:
%local = alloca [2048 x i32], align 8
%0 = bitcast [2048 x i32]* %local to i8*
- call void @llvm.lifetime.start(i64 8192, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 8192, i8* %0) #1
%arraydecay = getelementptr inbounds [2048 x i32], [2048 x i32]* %local, i32 0, i32 0
call void @baz_2(i32* %y, i32* %arraydecay) #3
%1 = load i32, i32* %y, align 4
%add = add nsw i32 %n, %1
%arrayidx = getelementptr inbounds [2048 x i32], [2048 x i32]* %local, i32 0, i32 %add
%2 = load i32, i32* %arrayidx, align 4
- call void @llvm.lifetime.end(i64 8192, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 8192, i8* %0) #1
ret i32 %2
}
declare void @baz_1(i32*) #2
declare void @baz_2(i32*, i32*) #2
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind optsize "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
entry:
%b = alloca [16 x i32], align 4
%0 = bitcast [16 x i32]* %b to i8*
- call void @llvm.lifetime.start(i64 64, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 64, i8* %0)
%arraydecay = getelementptr inbounds [16 x i32], [16 x i32]* %b, i32 0, i32 0
br label %for.body
br i1 %exitcond, label %for.end, label %for.body
for.end: ; preds = %for.body
- call void @llvm.lifetime.end(i64 64, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %0)
ret i32 %add
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare i32 @foo2(i32, i32*)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
; 16_h: lh ${{[0-9]+}}, [[offset2]](${{[0-9]+}})
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
%4 = add nsw i32 %2, %3
%5 = zext i32 %4 to i64
%6 = bitcast float* %ret_vec.sroa.8.i to i8*
- call void @llvm.lifetime.start(i64 4, i8* %6)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %6)
%7 = and i32 %4, 15
%8 = icmp eq i32 %7, 0
%9 = select i1 %8, float 0.000000e+00, float -1.000000e+00
%10 = fcmp olt float %9, 0.000000e+00
%ret_vec.sroa.8.i.val = load float, float* %ret_vec.sroa.8.i, align 4
%11 = select i1 %10, float 0.000000e+00, float %ret_vec.sroa.8.i.val
- call void @llvm.lifetime.end(i64 4, i8* %6)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %6)
%12 = getelementptr inbounds %class.float3, %class.float3* %dst, i64 %5, i32 0
store float 0.000000e+00, float* %12, align 4
%13 = getelementptr inbounds %class.float3, %class.float3* %dst, i64 %5, i32 1
declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() #1
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #1 = { nounwind readnone }
}
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
declare void @_ZN5clang6format17WhitespaceManager24replaceWhitespaceInTokenERKNS0_11FormatTokenEjjN4llvm9StringRefES6_bjji(%"class.clang::format::WhitespaceManager"*, %"struct.clang::format::FormatToken"* dereferenceable(272), i32 zeroext, i32 zeroext, [2 x i64], [2 x i64], i1 zeroext, i32 zeroext, i32 zeroext, i32 signext) #3
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
attributes #9 = { nounwind }
%x = alloca [2048 x float], align 4
%y = alloca [2048 x float], align 4
%0 = bitcast [2048 x float]* %x to i8*
- call void @llvm.lifetime.start(i64 8192, i8* %0) #2
+ call void @llvm.lifetime.start.p0i8(i64 8192, i8* %0) #2
%1 = bitcast [2048 x float]* %y to i8*
- call void @llvm.lifetime.start(i64 8192, i8* %1) #2
+ call void @llvm.lifetime.start.p0i8(i64 8192, i8* %1) #2
br label %for.body.i
; CHECK-LABEL: @foo
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #2
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #2
declare void @bar(float*, float*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #2
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #2
attributes #0 = { nounwind readonly }
attributes #1 = { nounwind }
@.str.11.98 = external hidden unnamed_addr constant [3 x i8], align 1
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
; Function Attrs: nounwind
declare i8* @halide_string_to_string(i8*, i8*, i8*) #1
%buf = alloca [512 x i8], align 1
store double %arg, double* %arg.addr, align 8, !tbaa !4
%0 = bitcast i64* %bits to i8*
- call void @llvm.lifetime.start(i64 8, i8* %0) #0
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #0
store i64 0, i64* %bits, align 8, !tbaa !8
%1 = bitcast double* %arg.addr to i8*
%call = call i8* @memcpy(i8* %0, i8* %1, i64 8) #2
%integer_exponent.0 = phi i32 [ 0, %if.end.84 ], [ %sub70, %if.end.66 ]
%fractional_part.2 = phi i64 [ %.fractional_part.0, %if.end.84 ], [ 0, %if.end.66 ]
%7 = bitcast [512 x i8]* %buf to i8*
- call void @llvm.lifetime.start(i64 512, i8* %7) #0
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %7) #0
%add.ptr = getelementptr inbounds [512 x i8], [512 x i8]* %buf, i64 0, i64 512
%add.ptr106 = getelementptr inbounds [512 x i8], [512 x i8]* %buf, i64 0, i64 480
%call109 = call i8* @halide_int64_to_string(i8* %add.ptr106, i8* %add.ptr, i64 %integer_part.2, i32 1) #3
%call142 = call i8* @halide_string_to_string(i8* %dst.addr.0, i8* %end, i8* %int_part_ptr.0.lcssa) #3
%call143 = call i8* @halide_string_to_string(i8* %call142, i8* %end, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9.96, i64 0, i64 0)) #3
%call144 = call i8* @halide_int64_to_string(i8* %call143, i8* %end, i64 %fractional_part.2, i32 6) #3
- call void @llvm.lifetime.end(i64 512, i8* %9) #0
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %9) #0
br label %cleanup.148
for.cond.cleanup.115: ; preds = %for.body.116
cleanup.148: ; preds = %for.cond.cleanup, %if.then.64, %if.end.59, %if.else.30, %if.then.28, %if.else.24, %if.then.22, %if.else.13, %if.then.11, %if.else, %if.then.6
%retval.1 = phi i8* [ %call7, %if.then.6 ], [ %call8, %if.else ], [ %call12, %if.then.11 ], [ %call14, %if.else.13 ], [ %call23, %if.then.22 ], [ %call25, %if.else.24 ], [ %call29, %if.then.28 ], [ %call31, %if.else.30 ], [ %call65, %if.then.64 ], [ %call61, %if.end.59 ], [ %call144, %for.cond.cleanup ]
%13 = bitcast i64* %bits to i8*
- call void @llvm.lifetime.end(i64 8, i8* %13) #0
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %13) #0
ret i8* %retval.1
}
%w = alloca [8200 x i32], align 4
%q = alloca [8200 x i32], align 4
%0 = bitcast [8200 x i32]* %v to i8*
- call void @llvm.lifetime.start(i64 32800, i8* %0) #0
+ call void @llvm.lifetime.start.p0i8(i64 32800, i8* %0) #0
%1 = bitcast [8200 x i32]* %w to i8*
- call void @llvm.lifetime.start(i64 32800, i8* %1) #0
+ call void @llvm.lifetime.start.p0i8(i64 32800, i8* %1) #0
%2 = bitcast [8200 x i32]* %q to i8*
- call void @llvm.lifetime.start(i64 32800, i8* %2) #0
+ call void @llvm.lifetime.start.p0i8(i64 32800, i8* %2) #0
%arraydecay = getelementptr inbounds [8200 x i32], [8200 x i32]* %q, i64 0, i64 0
%arraydecay1 = getelementptr inbounds [8200 x i32], [8200 x i32]* %v, i64 0, i64 0
%arraydecay2 = getelementptr inbounds [8200 x i32], [8200 x i32]* %w, i64 0, i64 0
; CHECK: blr
%add = add nsw i32 %4, %3
- call void @llvm.lifetime.end(i64 32800, i8* %2) #0
- call void @llvm.lifetime.end(i64 32800, i8* %1) #0
- call void @llvm.lifetime.end(i64 32800, i8* %0) #0
+ call void @llvm.lifetime.end.p0i8(i64 32800, i8* %2) #0
+ call void @llvm.lifetime.end.p0i8(i64 32800, i8* %1) #0
+ call void @llvm.lifetime.end.p0i8(i64 32800, i8* %0) #0
ret i32 %add
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
declare void @bar(i32*, i32*, i32*)
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
attributes #0 = { nounwind }
top:
%0 = alloca i8, align 2
%1 = bitcast i8* %0 to i8*
- call void @llvm.lifetime.start(i64 2, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %1)
store i8 -1, i8* %0, align 2
%2 = atomicrmw min i8* %0, i8 0 acq_rel
%3 = load atomic i8, i8* %0 acquire, align 8
- call void @llvm.lifetime.end(i64 2, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %1)
ret i8 %3
; CHECK-LABEL: atomic_min_i8
; CHECK: lbarx [[DST:[0-9]+]],
top:
%0 = alloca i16, align 2
%1 = bitcast i16* %0 to i8*
- call void @llvm.lifetime.start(i64 2, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %1)
store i16 -1, i16* %0, align 2
%2 = atomicrmw min i16* %0, i16 0 acq_rel
%3 = load atomic i16, i16* %0 acquire, align 8
- call void @llvm.lifetime.end(i64 2, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %1)
ret i16 %3
; CHECK-LABEL: atomic_min_i16
; CHECK: lharx [[DST:[0-9]+]],
top:
%0 = alloca i8, align 2
%1 = bitcast i8* %0 to i8*
- call void @llvm.lifetime.start(i64 2, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %1)
store i8 -1, i8* %0, align 2
%2 = atomicrmw max i8* %0, i8 0 acq_rel
%3 = load atomic i8, i8* %0 acquire, align 8
- call void @llvm.lifetime.end(i64 2, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %1)
ret i8 %3
; CHECK-LABEL: atomic_max_i8
; CHECK: lbarx [[DST:[0-9]+]],
top:
%0 = alloca i16, align 2
%1 = bitcast i16* %0 to i8*
- call void @llvm.lifetime.start(i64 2, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %1)
store i16 -1, i16* %0, align 2
%2 = atomicrmw max i16* %0, i16 0 acq_rel
%3 = load atomic i16, i16* %0 acquire, align 8
- call void @llvm.lifetime.end(i64 2, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %1)
ret i16 %3
; CHECK-LABEL: atomic_max_i16
; CHECK: lharx [[DST:[0-9]+]],
; CHECK-NEXT: ble 0
}
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
entry:
%x = alloca <2 x i64>, align 16
%0 = bitcast <2 x i64>* %x to i8*
- call void @llvm.lifetime.start(i64 16, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %0)
%arrayidx = getelementptr inbounds <2 x i64>, <2 x i64>* %x, i64 0, i64 0
store <2 x i64> <i64 0, i64 1>, <2 x i64>* %x, align 16
call void @foo(i64* %arrayidx)
- call void @llvm.lifetime.end(i64 16, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %0)
ret void
}
; CHECK: stxvd2x
; CHECK-NOT: xxswapd
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo(i64*)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
target triple = "powerpc64-unknown-linux-gnu"
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
declare void @f1()
declare void @f2()
br label %dup2
dup1: ; preds = %sw.0, %sw.1
- call void @llvm.lifetime.end(i64 8, i8* nonnull undef) #0
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull undef) #0
unreachable
dup2: ; preds = %if.then, %if.else
- call void @llvm.lifetime.end(i64 8, i8* nonnull undef) #0
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull undef) #0
unreachable
}
%10 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %ref.tmp.i.i2.i, i64 0, i32 0
%11 = bitcast %"class.llvm::SMDiagnostic"* %ref.tmp to i8*
call void @llvm.memset.p0i8.i64(i8* %11, i8 0, i64 16, i32 8, i1 false) #3
- call void @llvm.lifetime.start(i64 1, i8* %10) #3
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %10) #3
%tobool.i.i4.i = icmp eq i8* %4, null
br i1 %tobool.i.i4.i, label %if.then.i.i6.i, label %if.end.i.i8.i
br label %_ZNK4llvm9StringRefcvSsEv.exit9.i
_ZNK4llvm9StringRefcvSsEv.exit9.i: ; preds = %if.end.i.i8.i, %if.then.i.i6.i
- call void @llvm.lifetime.end(i64 1, i8* %10) #3
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %10) #3
%LineNo.i = getelementptr inbounds %"class.llvm::SMDiagnostic", %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 3
store i32 -1, i32* %LineNo.i, align 8, !tbaa !14
%ColumnNo.i = getelementptr inbounds %"class.llvm::SMDiagnostic", %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 4
store i32 0, i32* %Kind.i, align 8, !tbaa !22
%Message.i = getelementptr inbounds %"class.llvm::SMDiagnostic", %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 6
%12 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %ref.tmp.i.i.i, i64 0, i32 0
- call void @llvm.lifetime.start(i64 1, i8* %12) #3
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %12) #3
%tobool.i.i.i = icmp eq i8* %8, null
br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i
br label %_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit
_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit: ; preds = %if.then.i.i.i, %if.end.i.i.i
- call void @llvm.lifetime.end(i64 1, i8* %12) #3
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %12) #3
%_M_p.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic", %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 7, i32 0, i32 0
store i8* bitcast (i64* getelementptr inbounds ([0 x i64], [0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE, i64 0, i64 3) to i8*), i8** %_M_p.i.i.i.i.i, align 8, !tbaa !13
%Ranges.i = getelementptr inbounds %"class.llvm::SMDiagnostic", %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 8
%call2.i.i42 = call dereferenceable(48) %"class.llvm::SmallVectorImpl.85"* @_ZN4llvm15SmallVectorImplINS_7SMFixItEEaSEOS2_(%"class.llvm::SmallVectorImpl.85"* %24, %"class.llvm::SmallVectorImpl.85"* dereferenceable(48) %25) #3
call void @_ZN4llvm12SMDiagnosticD2Ev(%"class.llvm::SMDiagnostic"* %ref.tmp) #3
%26 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %ref.tmp.i.i, i64 0, i32 0
- call void @llvm.lifetime.start(i64 1, i8* %26) #3
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %26) #3
%27 = bitcast i8* %arrayidx.i.i.i36 to %"struct.std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep"*
%cmp.i.i.i = icmp eq i8* %arrayidx.i.i.i36, bitcast ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*)
br i1 %cmp.i.i.i, label %_ZNSsD1Ev.exit, label %if.then.i.i.i45, !prof !28
if.then.i.i.i.i: ; preds = %if.then.i.i.i45
%.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast = bitcast i32* %.atomicdst.i.i.i.i.i to i8*
- call void @llvm.lifetime.start(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
%29 = atomicrmw volatile add i32* %28, i32 -1 acq_rel
store i32 %29, i32* %.atomicdst.i.i.i.i.i, align 4
%.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i = load volatile i32, i32* %.atomicdst.i.i.i.i.i, align 4
- call void @llvm.lifetime.end(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i
if.else.i.i.i.i: ; preds = %if.then.i.i.i45
br label %_ZNSsD1Ev.exit
_ZNSsD1Ev.exit: ; preds = %_ZN4llvm12SMDiagnosticaSEOS0_.exit, %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i, %if.then4.i.i.i
- call void @llvm.lifetime.end(i64 1, i8* %26) #3
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %26) #3
%31 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %ref.tmp.i.i47, i64 0, i32 0
- call void @llvm.lifetime.start(i64 1, i8* %31) #3
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %31) #3
%_M_p.i.i.i.i48 = getelementptr inbounds %"class.std::basic_string", %"class.std::basic_string"* %ref.tmp5, i64 0, i32 0, i32 0
%32 = load i8*, i8** %_M_p.i.i.i.i48, align 8, !tbaa !1
%arrayidx.i.i.i49 = getelementptr inbounds i8, i8* %32, i64 -24
if.then.i.i.i.i55: ; preds = %if.then.i.i.i52
%.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast = bitcast i32* %.atomicdst.i.i.i.i.i46 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
%35 = atomicrmw volatile add i32* %34, i32 -1 acq_rel
store i32 %35, i32* %.atomicdst.i.i.i.i.i46, align 4
%.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i54 = load volatile i32, i32* %.atomicdst.i.i.i.i.i46, align 4
- call void @llvm.lifetime.end(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60
if.else.i.i.i.i57: ; preds = %if.then.i.i.i52
br label %_ZNSsD1Ev.exit62
_ZNSsD1Ev.exit62: ; preds = %_ZNSsD1Ev.exit, %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60, %if.then4.i.i.i61
- call void @llvm.lifetime.end(i64 1, i8* %31) #3
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %31) #3
br label %cleanup
cond.false.i.i: ; preds = %_ZNK4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE8getErrorEv.exit
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #3
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #3
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #3
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #3
; Function Attrs: noreturn nounwind
declare void @__assert_fail(i8*, i8*, i32 zeroext, i8*) #4
entry:
%a1 = alloca [256 x i32], align 4
%0 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %0)
%arraydecay = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i64 0, i64 0
call void @foo3(i32* %arraydecay)
- call void @llvm.lifetime.end(i64 1024, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %0)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { sspstrong }
entry:
%c = alloca %struct.C, align 1
%0 = getelementptr inbounds %struct.C, %struct.C* %c, i32 0, i32 0, i32 0
- call void @llvm.lifetime.start(i64 1000, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 1000, i8* %0) #1
call void @use_C(%struct.C* byval %c) #3
- call void @llvm.lifetime.end(i64 1000, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 1000, i8* %0) #1
ret void
}
entry:
%s = alloca %struct.S, align 2
%0 = bitcast %struct.S* %s to i8*
- call void @llvm.lifetime.start(i64 2000, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 2000, i8* %0) #1
call void @use_S(%struct.S* byval %s) #3
- call void @llvm.lifetime.end(i64 2000, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 2000, i8* %0) #1
ret void
}
entry:
%i = alloca %struct.I, align 4
%0 = bitcast %struct.I* %i to i8*
- call void @llvm.lifetime.start(i64 4000, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4000, i8* %0) #1
call void @use_I(%struct.I* byval %i) #3
- call void @llvm.lifetime.end(i64 4000, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4000, i8* %0) #1
ret void
}
declare void @use_S(%struct.S* byval) #2
declare void @use_I(%struct.I* byval) #2
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind optsize "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
%0 = bitcast %deque* %var3 to i8*
%1 = bitcast %iterator* %var1 to i8*
- call void @llvm.lifetime.start(i64 16, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %1) nounwind
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* %0, i32 16, i32 4, i1 false)
- call void @llvm.lifetime.end(i64 16, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %1) nounwind
%2 = bitcast %insert_iterator* %var2 to i8*
- call void @llvm.lifetime.start(i64 20, i8* %2) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 20, i8* %2) nounwind
ret i32 0
}
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
define i32 @test_stack_guard_remat() #0 {
%a1 = alloca [256 x i32], align 4
%1 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %1)
%2 = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i32 0, i32 0
call void @foo3(i32* %2) #3
call void asm sideeffect "foo2", "~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{sp},~{lr}"()
- call void @llvm.lifetime.end(i64 1024, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %1)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
target triple = "thumbv7-unknown-linux-gnueabihf"
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: nounwind
declare void @_ZNSaIcEC2Ev() unnamed_addr #0 align 2
br label %3
; <label>:2: ; preds = %0
- call void @llvm.lifetime.start(i64 1, i8* undef) #0
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* undef) #0
call void @_ZNSaIcEC2Ev() #0
br label %3
define i32 @test_stack_guard_remat() #0 {
%a1 = alloca [256 x i32], align 4
%1 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %1)
%2 = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i32 0, i32 0
call void @foo3(i32* %2) #3
call void asm sideeffect "foo2", "~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{sp},~{lr}"()
- call void @llvm.lifetime.end(i64 1024, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %1)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { nounwind ssp "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
br label %for.body
for.body:
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.start(i64 -1, i8* %x.i) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x.i) nounwind
call void @llvm.dbg.declare(metadata i8* %x.i, metadata !22, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !2)
br label %for.body
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!23}
%a2 = alloca [16 x i8*], align 8
%b = bitcast [17 x i8*]* %a to i8*
%b2 = bitcast [16 x i8*]* %a2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
- call void @llvm.lifetime.end(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b2)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
%a2 = alloca [16 x i8*], align 8
%b = bitcast [17 x i8*]* %a to i8*
%b2 = bitcast [16 x i8*]* %a2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
- call void @llvm.lifetime.end(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b2)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
ret i32 %t7
bb3:
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
ret i32 0
}
%a2 = alloca [16 x i8*], align 8
%b = bitcast [17 x i8*]* %a to i8*
%b2 = bitcast [16 x i8*]* %a2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
- call void @llvm.lifetime.end(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b2)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
%b2 = bitcast [13 x i8*]* %a2 to i8*
%b3 = bitcast [12 x i8*]* %a3 to i8*
%b4 = bitcast [11 x i8*]* %a4 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b4)
- call void @llvm.lifetime.start(i64 -1, i8* %b1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b4)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b1)
%t1 = call i32 @foo(i32 %in, i8* %b1)
%t2 = call i32 @foo(i32 %in, i8* %b1)
- call void @llvm.lifetime.end(i64 -1, i8* %b1)
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t9 = call i32 @foo(i32 %in, i8* %b2)
%t8 = call i32 @foo(i32 %in, i8* %b2)
- call void @llvm.lifetime.end(i64 -1, i8* %b2)
- call void @llvm.lifetime.start(i64 -1, i8* %b3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b3)
%t3 = call i32 @foo(i32 %in, i8* %b3)
%t4 = call i32 @foo(i32 %in, i8* %b3)
- call void @llvm.lifetime.end(i64 -1, i8* %b3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b3)
%t11 = call i32 @foo(i32 %in, i8* %b4)
- call void @llvm.lifetime.end(i64 -1, i8* %b4)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b4)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
%b2 = bitcast [13 x i8*]* %a2 to i8*
%b3 = bitcast [12 x i8*]* %a3 to i8*
%b4 = bitcast [11 x i8*]* %a4 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b1)
%t1 = call i32 @foo(i32 %in, i8* %b1)
%t2 = call i32 @foo(i32 %in, i8* %b1)
- call void @llvm.lifetime.end(i64 -1, i8* %b1)
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t9 = call i32 @foo(i32 %in, i8* %b2)
%t8 = call i32 @foo(i32 %in, i8* %b2)
- call void @llvm.lifetime.end(i64 -1, i8* %b2)
- call void @llvm.lifetime.start(i64 -1, i8* %b3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b3)
%t3 = call i32 @foo(i32 %in, i8* %b3)
%t4 = call i32 @foo(i32 %in, i8* %b3)
- call void @llvm.lifetime.end(i64 -1, i8* %b3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b3)
br i1 undef, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b4)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b4)
%t11 = call i32 @foo(i32 %in, i8* %b4)
- call void @llvm.lifetime.end(i64 -1, i8* %b4)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b4)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
%a2 = alloca [16 x i8*], align 8
%b = bitcast [17 x i8*]* %a to i8*
%b2 = bitcast [16 x i8*]* %a2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
%t5 = add i32 %t1, %t2
%a2 = alloca [16 x i8*], align 8
%b = bitcast [17 x i8*]* %a to i8*
%b2 = bitcast [16 x i8*]* %a2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.end(i64 -1, i8* %b)
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
%t5 = add i32 %t1, %t2
%b2 = bitcast [16 x i8*]* %a2 to i8*
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
%t5 = add i32 %t1, %t2
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1) nounwind
call void @bar([100 x i32]* %A.i, [100 x i32]* %B.i) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1) nounwind
%2 = bitcast [100 x i32]* %A.i1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2) nounwind
%3 = bitcast [100 x i32]* %B.i2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3) nounwind
call void @bar([100 x i32]* %A.i1, [100 x i32]* %B.i2) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %2) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %3) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3) nounwind
ret void
}
%b2 = bitcast [16 x i8*]* %a2 to i8*
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
br i1 %d, label %bb0, label %bb1
bb0:
bb2:
%split = phi i8* [ %I1, %bb0 ], [ %I2, %bb1 ]
- call void @llvm.lifetime.start(i64 -1, i8* %split)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %split)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
%t5 = add i32 %t1, %t2
%t6 = add i32 %t3, %t4
%t7 = add i32 %t5, %t6
- call void @llvm.lifetime.end(i64 -1, i8* %split)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %split)
ret i32 %t7
bb3:
ret i32 0
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind ; <---- start #1
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind ; <---- start #1
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1) nounwind
call void @bar([100 x i32]* %A.i, [100 x i32]* %B.i) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1) nounwind
%2 = bitcast [100 x i32]* %A.i1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2) nounwind
%3 = bitcast [100 x i32]* %B.i2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3) nounwind
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind ; <---- start #2
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind ; <---- start #2
call void @bar([100 x i32]* %A.i1, [100 x i32]* %B.i2) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %2) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %3) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3) nounwind
ret void
}
%b2 = bitcast [16 x i8*]* %a2 to i8*
%t1 = call i32 @foo(i32 %in, i8* %b)
%t2 = call i32 @foo(i32 %in, i8* %b)
- call void @llvm.lifetime.end(i64 -1, i8* %b)
- call void @llvm.lifetime.start(i64 -1, i8* %b)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %b2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b2)
%t3 = call i32 @foo(i32 %in, i8* %b2)
%t4 = call i32 @foo(i32 %in, i8* %b2)
%t5 = add i32 %t1, %t2
%buf1 = alloca i8, i32 100000, align 16
%buf2 = alloca i8, i32 100000, align 16
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.end(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf2)
%result1 = call i32 @foo(i32 0, i8* %buf1)
%result2 = call i32 @foo(i32 0, i8* %buf2)
ret void
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1) nounwind
call void @bar([100 x i32]* %A.i, [100 x i32]* %B.i) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1) nounwind
br label %block2
block2:
%b8 = bitcast [4 x %struct.Klass]* %b.i to i8*
; I am used outside the lifetime zone below:
%z2 = getelementptr inbounds [4 x %struct.Klass], [4 x %struct.Klass]* %a.i, i64 0, i64 0, i32 0
- call void @llvm.lifetime.start(i64 -1, i8* %a8)
- call void @llvm.lifetime.start(i64 -1, i8* %b8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b8)
%z3 = load i32, i32* %z2, align 16
%r = call i32 @foo(i32 %z3, i8* %a8)
%r2 = call i32 @foo(i32 %z3, i8* %b8)
- call void @llvm.lifetime.end(i64 -1, i8* %a8)
- call void @llvm.lifetime.end(i64 -1, i8* %b8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b8)
ret i32 9
}
%b4 = alloca [128 x i32], align 16
%b5 = alloca [128 x i32], align 16
%tmp = bitcast [128 x i32]* %b1 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp)
%tmp1 = bitcast [128 x i32]* %b2 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp1)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp1)
%and = and i32 %x, 1
%tobool = icmp eq i32 %and, 0
br i1 %tobool, label %if.else, label %if.then
if.then: ; preds = %entry
%tmp2 = bitcast [128 x i32]* %b3 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp2)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp2)
%a1 = getelementptr inbounds [128 x i32], [128 x i32]* %b1, i64 0, i64 0
%a2 = getelementptr inbounds [128 x i32], [128 x i32]* %b3, i64 0, i64 0
call void @initb(i32* %a1, i32* %a2, i32* null)
- call void @llvm.lifetime.end(i64 512, i8* %tmp2)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp2)
br label %if.end
if.else: ; preds = %entry
%tmp3 = bitcast [128 x i32]* %b4 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp3)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp3)
%tmp4 = bitcast [128 x i32]* %b5 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp4)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp4)
%a3 = getelementptr inbounds [128 x i32], [128 x i32]* %b2, i64 0, i64 0
%a4 = getelementptr inbounds [128 x i32], [128 x i32]* %b4, i64 0, i64 0
%a5 = getelementptr inbounds [128 x i32], [128 x i32]* %b5, i64 0, i64 0
call void @initb(i32* %a3, i32* %a4, i32* %a5) #3
- call void @llvm.lifetime.end(i64 512, i8* %tmp4)
- call void @llvm.lifetime.end(i64 512, i8* %tmp3)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp4)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp3)
br label %if.end
if.end: ; preds = %if.else, %if.then
- call void @llvm.lifetime.end(i64 512, i8* %tmp1)
- call void @llvm.lifetime.end(i64 512, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp1)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp)
ret i32 0
}
%b2 = alloca [128 x i32], align 16
%b3 = alloca [128 x i32], align 16
%tmp = bitcast [128 x i32]* %b1 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp) #3
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp) #3
%tmp1 = bitcast [128 x i32]* %b2 to i8*
- call void @llvm.lifetime.start(i64 512, i8* %tmp1) #3
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp1) #3
%and = and i32 %x, 1
%tobool = icmp eq i32 %and, 0
br i1 %tobool, label %if.else, label %if.then
while.body: ; preds = %while.body.lr.ph, %while.body
%x.addr.06 = phi i32 [ %x, %while.body.lr.ph ], [ %dec, %while.body ]
%dec = add nsw i32 %x.addr.06, -1
- call void @llvm.lifetime.start(i64 512, i8* %tmp2) #3
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %tmp2) #3
call void @inita(i32* %arraydecay3) #3
- call void @llvm.lifetime.end(i64 512, i8* %tmp2) #3
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp2) #3
%tobool2 = icmp eq i32 %dec, 0
br i1 %tobool2, label %if.end.loopexit, label %while.body
br label %if.end
if.end: ; preds = %if.end.loopexit, %if.else, %if.then
- call void @llvm.lifetime.end(i64 512, i8* %tmp1) #3
- call void @llvm.lifetime.end(i64 512, i8* %tmp) #3
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp1) #3
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %tmp) #3
ret i32 0
}
%buffer.i = alloca [12 x i32], align 16
%abc = alloca [12 x i32], align 16
%tmp = bitcast [12 x i32]* %buffer.i to i8*
- call void @llvm.lifetime.start(i64 48, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 48, i8* %tmp)
%idxprom.i = sext i32 %y to i64
%arrayidx.i = getelementptr inbounds [12 x i32], [12 x i32]* %buffer.i, i64 0, i64 %idxprom.i
call void @inita(i32* %arrayidx.i)
%add.i = add nsw i32 %x, %y
- call void @llvm.lifetime.end(i64 48, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 48, i8* %tmp)
%tobool = icmp eq i32 %y, 0
br i1 %tobool, label %if.end, label %if.then
if.then: ; preds = %entry
%tmp1 = bitcast [12 x i32]* %abc to i8*
- call void @llvm.lifetime.start(i64 48, i8* %tmp1)
+ call void @llvm.lifetime.start.p0i8(i64 48, i8* %tmp1)
%arrayidx = getelementptr inbounds [12 x i32], [12 x i32]* %abc, i64 0, i64 %idxprom.i
call void @inita(i32* %arrayidx)
- call void @llvm.lifetime.start(i64 48, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 48, i8* %tmp)
call void @inita(i32* %arrayidx.i)
%add.i9 = add nsw i32 %add.i, %y
- call void @llvm.lifetime.end(i64 48, i8* %tmp)
- call void @llvm.lifetime.end(i64 48, i8* %tmp1)
+ call void @llvm.lifetime.end.p0i8(i64 48, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 48, i8* %tmp1)
br label %if.end
if.end: ; preds = %if.then, %entry
declare void @bar([100 x i32]* , [100 x i32]*) nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
declare i32 @foo(i32, i8*)
%3 = bitcast <4 x float>* %1 to i8*
%4 = bitcast <4 x float>* %2 to i8*
- call void @llvm.lifetime.start(i64 16, i8* %3)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
call void @gfunc(<4 x float>* %1)
%5 = load <4 x float>, <4 x float>* %1, align 16
- call void @llvm.lifetime.end(i64 16, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
- call void @llvm.lifetime.start(i64 16, i8* %4)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %4)
call void @gfunc(<4 x float>* %2)
%6 = load <4 x float>, <4 x float>* %2, align 16
- call void @llvm.lifetime.end(i64 16, i8* %4)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %4)
%7 = extractelement <4 x float> %5, i32 1
%8 = extractelement <4 x float> %6, i32 1
}
declare void @gfunc(<4 x float>*)
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
%cp = catchpad within %cs [i8* null, i32 0, i8** %alloca1]
store volatile i8* null, i8** %alloca1
%bc1 = bitcast i8** %alloca1 to i8*
- call void @llvm.lifetime.end(i64 4, i8* nonnull %bc1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %bc1)
%bc2 = bitcast i8** %alloca2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %bc2)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %bc2)
store volatile i8* null, i8** %alloca1
unreachable
%cp = catchpad within %cs [i8* null, i32 0, i8** null]
store volatile i8* null, i8** %alloca1
%bc1 = bitcast i8** %alloca1 to i8*
- call void @llvm.lifetime.end(i64 4, i8* nonnull %bc1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %bc1)
%bc2 = bitcast i8** %alloca2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %bc2)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %bc2)
store volatile i8* null, i8** %alloca1
unreachable
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
attributes #0 = { argmemonly nounwind }
entry:
%o = alloca %struct.HasDtor, align 1
%0 = getelementptr inbounds %struct.HasDtor, %struct.HasDtor* %o, i64 0, i32 0
- call void @llvm.lifetime.start(i64 1, i8* %0) #4
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %0) #4
invoke void @"\01?may_throw@@YAXXZ"()
to label %try.cont unwind label %catch.dispatch
try.cont: ; preds = %entry, %catch, %catch.3, %catch.5
call void @"\01??1HasDtor@@QEAA@XZ"(%struct.HasDtor* nonnull %o) #4
- call void @llvm.lifetime.end(i64 1, i8* %0) #4
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %0) #4
ret i32 0
catch.dispatch.1: ; preds = %catch.dispatch
}
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @"\01?may_throw@@YAXXZ"() #2
declare void @"\01??1HasDtor@@QEAA@XZ"(%struct.HasDtor*) #3
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind argmemonly }
declare void @_ZNSt6vectorIN4llvm11MachineMoveESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_(%t10*, %t21* byval align 4, %t13*)
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
; PR10463
; Spilling a virtual register with <undef> uses.
if.end: ; preds = %entry, %if.then
%0 = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var1, i64 0, i32 0, i64 0, !dbg !56
- call void @llvm.lifetime.start(i64 4, i8* %0) #4, !dbg !56
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4, !dbg !56
tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !32, metadata !57), !dbg !58
tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !36, metadata !46), !dbg !59
tail call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !38, metadata !46), !dbg !62
call void @_Z3fooPcjPKc(i8* %0, i32 4, i8* nonnull getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !63
%1 = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var2, i64 0, i32 0, i64 0, !dbg !65
- call void @llvm.lifetime.start(i64 4, i8* %1) #4, !dbg !65
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4, !dbg !65
call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !33, metadata !57), !dbg !66
call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !36, metadata !46), !dbg !67
call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !38, metadata !46), !dbg !69
call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !41, metadata !46), !dbg !82
call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !42, metadata !46), !dbg !84
call void @_Z3fooPcjPKc(i8* %0, i32 4, i8* nonnull getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !85
- call void @llvm.lifetime.end(i64 4, i8* %1) #4, !dbg !86
- call void @llvm.lifetime.end(i64 4, i8* %0) #4, !dbg !87
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %1) #4, !dbg !86
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #4, !dbg !87
ret void, !dbg !86
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare i8* @_Z5i2stri(i32) #2
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare void @_Z3fooPcjPKc(i8*, i32, i8*) #2
target triple = "i386-apple-macosx10.10.0"
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
; Function Attrs: ssp
define void @foo(i1 %cond1, i1 %cond2) #1 {
if.else130: ; preds = %bb1
%tmp = getelementptr inbounds [8192 x i8], [8192 x i8]* %bitmapBuffer, i32 0, i32 0
- call void @llvm.lifetime.start(i64 8192, i8* %tmp) #0
- call void @llvm.lifetime.end(i64 8192, i8* %tmp) #0
+ call void @llvm.lifetime.start.p0i8(i64 8192, i8* %tmp) #0
+ call void @llvm.lifetime.end.p0i8(i64 8192, i8* %tmp) #0
%tmp25 = getelementptr inbounds [8192 x i8], [8192 x i8]* %bitmapBuffer229, i32 0, i32 0
- call void @llvm.lifetime.start(i64 8192, i8* %tmp25) #0
- call void @llvm.lifetime.end(i64 8192, i8* %tmp25) #0
+ call void @llvm.lifetime.start.p0i8(i64 8192, i8* %tmp25) #0
+ call void @llvm.lifetime.end.p0i8(i64 8192, i8* %tmp25) #0
br label %end1
}
%tmp = alloca { <2 x float>, float }, align 8
store i32 0, i32* %retval, align 4
%0 = bitcast %struct.FVector* %v to i8*
- call void @llvm.lifetime.start(i64 12, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 12, i8* %0) nounwind
%x.i = getelementptr inbounds %struct.FVector, %struct.FVector* %v, i64 0, i32 0
store float 1.000000e+00, float* %x.i, align 4
%y.i = getelementptr inbounds %struct.FVector, %struct.FVector* %v, i64 0, i32 1
%5 = bitcast %struct.FVector* %ref.tmp to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 12, i32 4, i1 false)
%6 = bitcast %struct.FVector* %v to i8*
- call void @llvm.lifetime.end(i64 12, i8* %6) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 12, i8* %6) nounwind
ret i32 0
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) argmemonly nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) argmemonly nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) argmemonly nounwind
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
define i64* @life() nounwind {
%a1 = alloca i64*, align 8
%a2 = bitcast i64** %a1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %a2) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a2) nounwind
%a3 = load i64*, i64** %a1, align 8
ret i64* %a3
}
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
; Check that we do not read outside of the chunk of bits of the original loads.
;
%d = alloca i32, align 4
%aaa = alloca [1000 x i32], align 16
%0 = bitcast i32* %f to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #1
%1 = bitcast [30 x i32]* %a to i8*
- call void @llvm.lifetime.start(i64 120, i8* %1) #1
+ call void @llvm.lifetime.start.p0i8(i64 120, i8* %1) #1
%2 = bitcast [1000 x i32]* %aa to i8*
- call void @llvm.lifetime.start(i64 4000, i8* %2) #1
+ call void @llvm.lifetime.start.p0i8(i64 4000, i8* %2) #1
%3 = bitcast i32* %e to i8*
- call void @llvm.lifetime.start(i64 4, i8* %3) #1
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #1
%4 = bitcast [1000 x i32]* %cc to i8*
- call void @llvm.lifetime.start(i64 4000, i8* %4) #1
+ call void @llvm.lifetime.start.p0i8(i64 4000, i8* %4) #1
%5 = bitcast i32* %b to i8*
- call void @llvm.lifetime.start(i64 4, i8* %5) #1
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %5) #1
%6 = bitcast i32* %d to i8*
- call void @llvm.lifetime.start(i64 4, i8* %6) #1
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %6) #1
%7 = bitcast [1000 x i32]* %aaa to i8*
- call void @llvm.lifetime.start(i64 4000, i8* %7) #1
+ call void @llvm.lifetime.start.p0i8(i64 4000, i8* %7) #1
%call = call i32 ([30 x i32]*, ...) bitcast (i32 (...)* @check_a to i32 ([30 x i32]*, ...)*)([30 x i32]* %a)
%call1 = call i32 ([1000 x i32]*, ...) bitcast (i32 (...)* @bar1 to i32 ([1000 x i32]*, ...)*)([1000 x i32]* %aaa)
call void asm sideeffect "", "~{esi},~{edi},~{ebp},~{ebx},~{rbx},~{r12},~{r13},~{r14},~{r15},~{rbp},~{dirflag},~{fpsr},~{flags}"() #1
%call15 = call i32 (i32*, i32*, i32*, ...) bitcast (i32 (...)* @bar3 to i32 (i32*, i32*, i32*, ...)*)(i32* %d, i32* %e, i32* %f)
call void asm sideeffect "", "~{esi},~{edi},~{ebp},~{ebx},~{rbx},~{r12},~{r13},~{r14},~{r15},~{rbp},~{dirflag},~{fpsr},~{flags}"() #1
%call16 = call i32 ([30 x i32]*, ...) bitcast (i32 (...)* @bar1 to i32 ([30 x i32]*, ...)*)([30 x i32]* %a)
- call void @llvm.lifetime.end(i64 4000, i8* %7) #1
- call void @llvm.lifetime.end(i64 4, i8* %6) #1
- call void @llvm.lifetime.end(i64 4, i8* %5) #1
- call void @llvm.lifetime.end(i64 4000, i8* %4) #1
- call void @llvm.lifetime.end(i64 4, i8* %3) #1
- call void @llvm.lifetime.end(i64 4000, i8* %2) #1
- call void @llvm.lifetime.end(i64 120, i8* %1) #1
- call void @llvm.lifetime.end(i64 4, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4000, i8* %7) #1
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #1
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #1
+ call void @llvm.lifetime.end.p0i8(i64 4000, i8* %4) #1
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %3) #1
+ call void @llvm.lifetime.end.p0i8(i64 4000, i8* %2) #1
+ call void @llvm.lifetime.end.p0i8(i64 120, i8* %1) #1
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0) #1
ret void
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare i32 @check_a(...) #2
declare i32 @bar1(...) #2
declare i32 @check_d(...) #2
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
%add.i = fadd fast float %add, %n0
store float %add.i, float* undef, align 4
%n1 = bitcast %struct.A* %i to i8*
- call void @llvm.lifetime.start(i64 16, i8* %n1)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %n1)
%n2 = load <2 x float>, <2 x float>* undef, align 8
%conv = uitofp i1 %tobool to float
%bitcast = extractelement <2 x float> %n2, i32 0
declare void @bar(float)
declare void @foo(%struct.A*)
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
!llvm.dbg.cu = !{!0}
declare void @__assert_fail(i8*, i8*, i32, i8*) #0
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind uwtable
define hidden { %"class.llvm::SDNode.10.610.970.1930.2050.2290.4090"*, i32 } @_ZN4llvm16DAGTypeLegalizer18WidenVecRes_BinaryEPNS_6SDNodeE(%"class.llvm::DAGTypeLegalizer.117.717.1077.2037.2157.2397.4197"* %this, %"class.llvm::SDNode.10.610.970.1930.2050.2290.4090"* %N) #2 align 2 {
%ref.tmp.i = alloca %"struct.std::pair.112.119.719.1079.2039.2159.2399.4199", align 8
%Op.i = alloca %"class.llvm::SDValue.3.603.963.1923.2043.2283.4083", align 8
%0 = bitcast %"struct.std::pair.112.119.719.1079.2039.2159.2399.4199"* %ref.tmp.i to i8*
- call void @llvm.lifetime.start(i64 24, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 24, i8* %0) #1
%retval.sroa.0.0.idx.i36 = getelementptr inbounds %"struct.std::pair.112.119.719.1079.2039.2159.2399.4199", %"struct.std::pair.112.119.719.1079.2039.2159.2399.4199"* %ref.tmp.i, i64 0, i32 1, i32 0, i32 0
%retval.sroa.0.0.copyload.i37 = load i32, i32* %retval.sroa.0.0.idx.i36, align 8
- call void @llvm.lifetime.end(i64 24, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 24, i8* %0) #1
%agg.tmp8.sroa.2.0.copyload = load i32, i32* undef, align 8
%1 = bitcast %"class.llvm::SDValue.3.603.963.1923.2043.2283.4083"* %Op.i to i8*
- call void @llvm.lifetime.start(i64 16, i8* %1) #1
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %1) #1
%2 = getelementptr %"class.llvm::SDValue.3.603.963.1923.2043.2283.4083", %"class.llvm::SDValue.3.603.963.1923.2043.2283.4083"* %Op.i, i64 0, i32 1
store i32 %agg.tmp8.sroa.2.0.copyload, i32* %2, align 8
define x86_stdcallcc void @test5(%struct.sixteen* byval nocapture readonly align 4 %s) #0 {
%d.sroa.0 = alloca [16 x i8], align 1
%1 = getelementptr inbounds [16 x i8], [16 x i8]* %d.sroa.0, i32 0, i32 0
- call void @llvm.lifetime.start(i64 16, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %1)
%2 = getelementptr inbounds %struct.sixteen, %struct.sixteen* %s, i32 0, i32 0, i32 0
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* %2, i32 16, i32 1, i1 true)
- call void @llvm.lifetime.end(i64 16, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %1)
ret void
; CHECK-LABEL: test5:
; CHECK: and
; CHECK-NEXT: movsd
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) argmemonly nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) argmemonly nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) argmemonly nounwind
attributes #0 = { nounwind alignstack=16 "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" }
entry:
%a = alloca [128 x i32], align 16
%0 = bitcast [128 x i32]* %a to i8*
- call void @llvm.lifetime.start(i64 512, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 512, i8* %0)
%arraydecay = getelementptr inbounds [128 x i32], [128 x i32]* %a, i64 0, i64 0
call void @foo2(i32* %arraydecay)
%idxprom = sext i32 %n to i64
%arrayidx = getelementptr inbounds [128 x i32], [128 x i32]* %a, i64 0, i64 %idxprom
%1 = load i32, i32* %arrayidx, align 4
- call void @llvm.lifetime.end(i64 512, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 512, i8* %0)
ret i32 %1
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo2(i32*)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { sspstrong "stack-protector-buffer-size"="8" }
entry:
%a1 = alloca [256 x i32], align 16
%0 = bitcast [256 x i32]* %a1 to i8*
- call void @llvm.lifetime.start(i64 1024, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %0)
%arraydecay = getelementptr inbounds [256 x i32], [256 x i32]* %a1, i64 0, i64 0
call void @foo3(i32* %arraydecay)
call void asm sideeffect "foo2", "~{r12},~{r13},~{r14},~{r15},~{ebx},~{esi},~{edi},~{dirflag},~{fpsr},~{flags}"()
- call void @llvm.lifetime.end(i64 1024, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %0)
ret i32 0
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @foo3(i32*)
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
entry:
%n = alloca [8 x [8 x i32]], align 16
%tmp = bitcast [8 x [8 x i32]]* %n to i8*
- call void @llvm.lifetime.start(i64 256, i8* %tmp) #3
+ call void @llvm.lifetime.start.p0i8(i64 256, i8* %tmp) #3
%tmp1 = bitcast [8 x [8 x i32]]* %n to i8*
%arraydecay.1 = getelementptr inbounds [8 x [8 x i32]], [8 x [8 x i32]]* %n, i64 0, i64 1, i64 0
%tmp2 = bitcast i32* %arraydecay.1 to i8*
for.end75: ; preds = %for.inc73
%m.4.lcssa = phi i32 [ %m.4, %for.inc73 ]
- call void @llvm.lifetime.end(i64 256, i8* %tmp) #3
+ call void @llvm.lifetime.end.p0i8(i64 256, i8* %tmp) #3
ret i32 %m.4.lcssa
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @LumaPrediction4x4(i32, i32, i32, i32, i32, i16 signext, i16 signext) #2
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
attributes #0 = { nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }
store i64 %16, i64* %private_2, align 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 240, i32 8, i1 false)
%17 = bitcast %struct._Unwind_FrameState* %fs.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %17)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %17)
%personality.i = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs.i, i64 0, i32 6
%retaddr_column.i22 = getelementptr inbounds %struct._Unwind_FrameState, %struct._Unwind_FrameState* %fs.i, i64 0, i32 9
br label %while.body.i
br label %while.body.i
do.body19: ; preds = %if.then3.i
- call void @llvm.lifetime.end(i64 -1, i8* %17)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %17)
%call20 = call fastcc i64 @uw_install_context_1(%struct._Unwind_Context* %this_context, %struct._Unwind_Context* %cur_context)
%32 = load i8*, i8** %ra.i, align 8
call void @llvm.eh.return.i64(i64 %call20, i8* %32)
declare fastcc void @uw_update_context_1(%struct._Unwind_Context*, %struct._Unwind_FrameState* nocapture) uwtable
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
entry:
%ap = alloca [1 x %struct.__va_list_tag], align 16
%0 = bitcast [1 x %struct.__va_list_tag]* %ap to i8*
- call void @llvm.lifetime.start(i64 16, i8* %0) #2
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %0) #2
call void @llvm.va_start(i8* %0)
; SSE: subl $72, %esp
; SSE: testb %al, %al
%vaarg.addr = bitcast i8* %vaarg.addr.in to i32*
%4 = load i32, i32* %vaarg.addr, align 4
call void @llvm.va_end(i8* %0)
- call void @llvm.lifetime.end(i64 16, i8* %0) #2
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %0) #2
ret i32 %4
; SSE: movl ([[ADDR]]), %eax
; SSE: retq
}
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
; Function Attrs: nounwind
declare void @llvm.va_start(i8*) nounwind
declare void @llvm.va_end(i8*) nounwind
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
; Poison memory in prologue: F1F1F1F1F8F3F3F3
; CHECK: store i64 -868082052615769615, i64* %{{[0-9]+}}
- call void @llvm.lifetime.start(i64 4, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0)
; CHECK: store i8 4, i8* %{{[0-9]+}}
; CHECK-NEXT: @llvm.lifetime.start
%1 = landingpad { i8*, i32 }
cleanup
call void @_ZN3ABCD2Ev(%struct.ABC* nonnull %x)
- call void @llvm.lifetime.end(i64 4, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: @llvm.lifetime.end
; Poison memory in prologue: F1F1F1F1F8F304F2
; CHECK: store i64 -935355671561244175, i64* %{{[0-9]+}}
- call void @llvm.lifetime.start(i64 4, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0)
; CHECK: store i8 4, i8* %{{[0-9]+}}
; CHECK-NEXT: @llvm.lifetime.start
ehcleanup:
%2 = cleanuppad within none []
call void @"\01??1ABC@@QEAA@XZ"(%struct.ABC* nonnull %x) [ "funclet"(token %2) ]
- call void @llvm.lifetime.end(i64 4, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: @llvm.lifetime.end
declare i32 @__gxx_personality_v0(...)
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @__cxa_throw(i8*, i8*, i8*) local_unnamed_addr
declare i8* @__cxa_allocate_exception(i64) local_unnamed_addr
declare void @_ZN3ABCD2Ev(%struct.ABC* %this) unnamed_addr
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
define i32 @basic_test() sanitize_address {
; CHECK-LABEL: define i32 @basic_test()
; Memory is poisoned in prologue: F1F1F1F104F3F8F2
; CHECK-UAS: store i64 -866676825215864335, i64* %{{[0-9]+}}
- call void @llvm.lifetime.start(i64 1, i8* %c)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %c)
; Memory is unpoisoned at llvm.lifetime.start: 01
; CHECK-UAS: store i8 1, i8* %{{[0-9]+}}
store volatile i32 0, i32* %retval
store volatile i8 0, i8* %c, align 1
- call void @llvm.lifetime.end(i64 1, i8* %c)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %c)
; Memory is poisoned at llvm.lifetime.end: F8
; CHECK-UAS: store i8 -8, i8* %{{[0-9]+}}
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
define void @lifetime_no_size() sanitize_address {
; CHECK-LABEL: define void @lifetime_no_size()
; Poison memory in prologue: F1F1F1F104F3F3F3
; CHECK: store i64 -868083100587789839, i64* %{{[0-9]+}}
- call void @llvm.lifetime.start(i64 -1, i8* %i.ptr)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %i.ptr)
; Check that lifetime with no size are ignored.
; CHECK-NOT: store
; CHECK: call void @llvm.lifetime.start
store volatile i8 0, i8* %i.ptr
; CHECK: store volatile
- call void @llvm.lifetime.end(i64 -1, i8* %i.ptr)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %i.ptr)
; Check that lifetime with no size are ignored.
; CHECK-NOT: store
; CHECK: call void @llvm.lifetime.end
; CHECK: store i64 -868082052615769615, i64* %{{[0-9]+}}
; Memory is unpoisoned at llvm.lifetime.start
- call void @llvm.lifetime.start(i64 3, i8* %i.ptr)
+ call void @llvm.lifetime.start.p0i8(i64 3, i8* %i.ptr)
; CHECK: store i8 4, i8* %{{[0-9]+}}
; CHECK-NEXT: llvm.lifetime.start
store volatile i8 0, i8* %i.ptr
; CHECK: store volatile
- call void @llvm.lifetime.end(i64 4, i8* %i.ptr)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %i.ptr)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: call void @llvm.lifetime.end
; Memory is poisoned at every call to llvm.lifetime.end
- call void @llvm.lifetime.end(i64 2, i8* %i.ptr)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %i.ptr)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: call void @llvm.lifetime.end
%arr = alloca [10 x i32], align 16
%arr.ptr = bitcast [10 x i32]* %arr to i8*
- call void @llvm.lifetime.start(i64 40, i8* %arr.ptr)
+ call void @llvm.lifetime.start.p0i8(i64 40, i8* %arr.ptr)
; CHECK-DEFAULT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
; CHECK-NO-DYNAMIC-NOT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
store volatile i8 0, i8* %arr.ptr
; CHECK: store volatile
- call void @llvm.lifetime.end(i64 40, i8* %arr.ptr)
+ call void @llvm.lifetime.end.p0i8(i64 40, i8* %arr.ptr)
; CHECK-DEFAULT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
; CHECK-NO-DYNAMIC-NOT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
; One more lifetime start/end for the same variable %i.
- call void @llvm.lifetime.start(i64 2, i8* %i.ptr)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %i.ptr)
; CHECK: store i8 4, i8* %{{[0-9]+}}
; CHECK-NEXT: llvm.lifetime.start
store volatile i8 0, i8* %i.ptr
; CHECK: store volatile
- call void @llvm.lifetime.end(i64 4, i8* %i.ptr)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %i.ptr)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: llvm.lifetime.end
; Poison memory in prologue: F1F1F1F1F8F3F3F3
; CHECK: store i64 -868082052615769615, i64* %{{[0-9]+}}
- call void @llvm.lifetime.start(i64 8, i8* %i.ptr)
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %i.ptr)
; CHECK: store i8 0, i8* %{{[0-9]+}}
; CHECK-NEXT: llvm.lifetime.start
bb1:
%i.phi = phi i8* [ %i.ptr, %entry ], [ %i.ptr2, %bb0 ]
- call void @llvm.lifetime.end(i64 8, i8* %i.phi)
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %i.phi)
; CHECK: store i8 -8, i8* %{{[0-9]+}}
; CHECK-NEXT: llvm.lifetime.end
; CHECK: store i64 -868082074056920077, i64* %{{[0-9]+}}
%0 = getelementptr inbounds [1024 x i8], [1024 x i8]* %x, i64 0, i64 0
- call void @llvm.lifetime.start(i64 1024, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1024, i8* %0)
; CHECK: call void @__asan_set_shadow_00(i64 %{{[0-9]+}}, i64 128)
; CHECK-NEXT: call void @llvm.lifetime.start
store i8* %0, i8** %d, align 8
; CHECK: store i8
- call void @llvm.lifetime.end(i64 1024, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1024, i8* %0)
; CHECK: call void @__asan_set_shadow_f8(i64 %{{[0-9]+}}, i64 128)
; CHECK-NEXT: call void @llvm.lifetime.end
store i64 %a, i64* %a.addr, align 8
%0 = bitcast [0 x i8]* %b to i8*
- call void @llvm.lifetime.start(i64 0, i8* %0) #2
+ call void @llvm.lifetime.start.p0i8(i64 0, i8* %0) #2
; CHECK: %{{[0-9]+}} = bitcast
; CHECK-NEXT: call void @llvm.lifetime.start
%1 = bitcast [0 x i8]* %b to i8*
- call void @llvm.lifetime.end(i64 0, i8* %1) #2
+ call void @llvm.lifetime.end.p0i8(i64 0, i8* %1) #2
; CHECK-NEXT: %{{[0-9]+}} = bitcast
; CHECK-NEXT: call void @llvm.lifetime.end
; CHECK-NEXT: %zz = getelementptr inbounds
- call void @llvm.lifetime.start(i64 650, i8* %xx)
+ call void @llvm.lifetime.start.p0i8(i64 650, i8* %xx)
; 0000...
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 4
; ENTRY-UAS-NEXT: call void @__asan_set_shadow_00(i64 [[OFFSET]], i64 81)
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 2, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 650, i8* %xx)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 650, i8* %xx)
call void @Foo(i8* %xx)
; CHECK-NEXT: call void @Foo(i8* %xx)
- call void @llvm.lifetime.end(i64 650, i8* %xx)
+ call void @llvm.lifetime.end.p0i8(i64 650, i8* %xx)
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 4
; ENTRY-UAS-NEXT: call void @__asan_set_shadow_f8(i64 [[OFFSET]], i64 82)
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 650, i8* %xx)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 650, i8* %xx)
- call void @llvm.lifetime.start(i64 13, i8* %yy)
+ call void @llvm.lifetime.start.p0i8(i64 13, i8* %yy)
; 0005
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 102
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i16]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 5, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 13, i8* %yy)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 13, i8* %yy)
call void @Foo(i8* %yy)
; CHECK-NEXT: call void @Foo(i8* %yy)
- call void @llvm.lifetime.end(i64 13, i8* %yy)
+ call void @llvm.lifetime.end.p0i8(i64 13, i8* %yy)
; F8F8
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 102
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i16]]*
; ENTRY-UAS-NEXT: store [[TYPE]] -1800, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 13, i8* %yy)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 13, i8* %yy)
- call void @llvm.lifetime.start(i64 40, i8* %zz)
+ call void @llvm.lifetime.start.p0i8(i64 40, i8* %zz)
; 00000000
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 106
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i32]]*
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 0, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 40, i8* %zz)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 40, i8* %zz)
call void @Foo(i8* %zz)
; CHECK-NEXT: call void @Foo(i8* %zz)
- call void @llvm.lifetime.end(i64 40, i8* %zz)
+ call void @llvm.lifetime.end.p0i8(i64 40, i8* %zz)
; F8F8F8F8
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 106
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i32]]*
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] -8, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 40, i8* %zz)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 40, i8* %zz)
; CHECK-LABEL: <label>
; CHECK: ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
; CHECK-ON: declare void @__asan_set_shadow_00(i64, i64)
; CHECK-ON: declare void @__asan_set_shadow_f1(i64, i64)
; CHECK-NEXT: %zz = getelementptr inbounds
- call void @llvm.lifetime.start(i64 650, i8* %xx)
+ call void @llvm.lifetime.start.p0i8(i64 650, i8* %xx)
; 0000...
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 4
; ENTRY-UAS-NEXT: call void @__asan_set_shadow_00(i64 [[OFFSET]], i64 81)
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 2, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 650, i8* %xx)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 650, i8* %xx)
call void @Foo(i8* %xx)
; CHECK-NEXT: call void @Foo(i8* %xx)
- call void @llvm.lifetime.end(i64 650, i8* %xx)
+ call void @llvm.lifetime.end.p0i8(i64 650, i8* %xx)
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 4
; ENTRY-UAS-NEXT: call void @__asan_set_shadow_f8(i64 [[OFFSET]], i64 82)
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 650, i8* %xx)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 650, i8* %xx)
- call void @llvm.lifetime.start(i64 13, i8* %yy)
+ call void @llvm.lifetime.start.p0i8(i64 13, i8* %yy)
; 0005
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 102
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i16]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 1280, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 13, i8* %yy)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 13, i8* %yy)
call void @Foo(i8* %yy)
; CHECK-NEXT: call void @Foo(i8* %yy)
- call void @llvm.lifetime.end(i64 13, i8* %yy)
+ call void @llvm.lifetime.end.p0i8(i64 13, i8* %yy)
; F8F8
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 102
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i16]]*
; ENTRY-UAS-NEXT: store [[TYPE]] -1800, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 13, i8* %yy)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 13, i8* %yy)
- call void @llvm.lifetime.start(i64 40, i8* %zz)
+ call void @llvm.lifetime.start.p0i8(i64 40, i8* %zz)
; 00000000
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 106
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i32]]*
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] 0, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.start(i64 40, i8* %zz)
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 40, i8* %zz)
call void @Foo(i8* %zz)
; CHECK-NEXT: call void @Foo(i8* %zz)
- call void @llvm.lifetime.end(i64 40, i8* %zz)
+ call void @llvm.lifetime.end.p0i8(i64 40, i8* %zz)
; F8F8F8F8
; ENTRY-UAS-NEXT: [[OFFSET:%[0-9]+]] = add i64 [[SHADOW_BASE]], 106
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i32]]*
; ENTRY-UAS-NEXT: [[PTR:%[0-9]+]] = inttoptr i64 [[OFFSET]] to [[TYPE:i8]]*
; ENTRY-UAS-NEXT: store [[TYPE]] -8, [[TYPE]]* [[PTR]], align 1
- ; CHECK-NEXT: call void @llvm.lifetime.end(i64 40, i8* %zz)
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 40, i8* %zz)
; CHECK-LABEL: <label>
; CHECK: ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
; CHECK-ON: declare void @__asan_set_shadow_00(i64, i64)
; CHECK-ON: declare void @__asan_set_shadow_f1(i64, i64)
target triple = "x86_64-unknown-linux-gnu"
declare void @Use(i8*)
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
; CHECK: private unnamed_addr constant{{.*}}3 32 10 3 XXX 64 20 3 YYY 128 30 3 ZZZ\0
; CHECK: private unnamed_addr constant{{.*}}3 32 5 3 AAA 64 55 3 BBB 160 555 3 CCC\0
%AAA = alloca i32, align 4 ; File is not the same as !11
%BBB = alloca i32, align 4 ; File is the same as !11
%BBB.ptr = bitcast i32* %BBB to i8*
- call void @llvm.lifetime.start(i64 4, i8* nonnull %BBB.ptr), !dbg !12
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %BBB.ptr), !dbg !12
store volatile i32 5, i32* %BBB, align 4
%AAA.ptr = bitcast i32* %AAA to i8*
- call void @llvm.lifetime.start(i64 4, i8* nonnull %AAA.ptr), !dbg !14
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %AAA.ptr), !dbg !14
store volatile i32 3, i32* %AAA, align 4
- call void @llvm.lifetime.end(i64 4, i8* nonnull %AAA.ptr), !dbg !17
- call void @llvm.lifetime.end(i64 4, i8* nonnull %BBB.ptr), !dbg !18
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %AAA.ptr), !dbg !17
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %BBB.ptr), !dbg !18
ret void
}
define i32 @foo(i32 %guard, ...) {
%vl = alloca %struct.__va_list, align 8
%1 = bitcast %struct.__va_list* %vl to i8*
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_start(i8* %1)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
ret i32 0
}
; CHECK: [[STACK:%.*]] = getelementptr inbounds i8, i8* {{%.*}}, i32 192
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{%.*}}, i8* [[STACK]], i64 {{%.*}}, i32 16, i1 false)
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.va_start(i8*) #2
declare void @llvm.va_end(i8*) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @bar() {
%1 = call i32 (i32, ...) @foo(i32 0, i32 1, i32 2, double 3.000000e+00,
define i32 @foo(i32 %guard, ...) {
%vl = alloca i8*, align 8
%1 = bitcast i8** %vl to i8*
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_start(i8* %1)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
ret i32 0
}
; CHECK: [[STACK:%.*]] = bitcast {{.*}} @__msan_va_arg_tls to i8*
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[C]], i8* [[STACK]], i64 [[B]], i32 8, i1 false)
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.va_start(i8*) #2
declare void @llvm.va_end(i8*) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @bar() {
%1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00)
define i32 @foo(i32 %guard, ...) {
%vl = alloca i8*, align 8
%1 = bitcast i8** %vl to i8*
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_start(i8* %1)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
ret i32 0
}
; CHECK: [[STACK:%.*]] = bitcast {{.*}} @__msan_va_arg_tls to i8*
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[C]], i8* [[STACK]], i64 [[B]], i32 8, i1 false)
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.va_start(i8*) #2
declare void @llvm.va_end(i8*) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @bar() {
%1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00)
define i32 @foo(i32 %guard, ...) {
%vl = alloca i8*, align 8
%1 = bitcast i8** %vl to i8*
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_start(i8* %1)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
ret i32 0
}
; CHECK: [[STACK:%.*]] = bitcast {{.*}} @__msan_va_arg_tls to i8*
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[C]], i8* [[STACK]], i64 [[B]], i32 8, i1 false)
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.va_start(i8*) #2
declare void @llvm.va_end(i8*) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @bar() {
%1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00)
define i32 @foo(i32 %guard, ...) {
%vl = alloca i8*, align 8
%1 = bitcast i8** %vl to i8*
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_start(i8* %1)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
ret i32 0
}
; CHECK: [[STACK:%.*]] = bitcast {{.*}} @__msan_va_arg_tls to i8*
; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[C]], i8* [[STACK]], i64 [[B]], i32 8, i1 false)
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.va_start(i8*) #2
declare void @llvm.va_end(i8*) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define i32 @bar() {
%1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00)
; CHECK: call void @_Z3barv(), !dbg ![[CALL0:[0-9]+]]
%a = alloca [100 x i8], align 16
%b = bitcast [100 x i8]* %a to i8*
- call void @llvm.lifetime.start(i64 100, i8* %b), !dbg !11
- call void @llvm.lifetime.end(i64 100, i8* %b), !dbg !11
+ call void @llvm.lifetime.start.p0i8(i64 100, i8* %b), !dbg !11
+ call void @llvm.lifetime.end.p0i8(i64 100, i8* %b), !dbg !11
call void @_Z3barv(), !dbg !11
; CHECK: call void @_Z3barv(), !dbg ![[CALL1:[0-9]+]]
call void @_Z3barv(), !dbg !12
}
declare void @_Z3barv() #1
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind argmemonly
attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
; CHECK: %1 = bitcast i16* %arg to i8*
; CHECK: %2 = alloca i16, align 2
; CHECK: %3 = bitcast i16* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 2, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 2, i8* %3)
; CHECK: store i16 %old, i16* %2, align 2
; CHECK: %4 = call zeroext i1 @__atomic_compare_exchange_2(i8* %1, i8* %3, i16 %new, i32 5, i32 0)
; CHECK: %5 = load i16, i16* %2, align 2
-; CHECK: call void @llvm.lifetime.end(i64 2, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 2, i8* %3)
; CHECK: %6 = insertvalue { i16, i1 } undef, i16 %5, 0
; CHECK: %7 = insertvalue { i16, i1 } %6, i1 %4, 1
; CHECK: %ret = extractvalue { i16, i1 } %7, 0
; CHECK: %1 = bitcast i128* %arg to i8*
; CHECK: %2 = alloca i128, align 8
; CHECK: %3 = bitcast i128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
; CHECK: call void @__atomic_load(i32 16, i8* %1, i8* %3, i32 5)
; CHECK: %4 = load i128, i128* %2, align 8
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
; CHECK: ret i128 %4
define i128 @test_load_i128(i128* %arg) {
%ret = load atomic i128, i128* %arg seq_cst, align 16
; CHECK: %1 = bitcast i128* %arg to i8*
; CHECK: %2 = alloca i128, align 8
; CHECK: %3 = bitcast i128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
; CHECK: store i128 %val, i128* %2, align 8
; CHECK: call void @__atomic_store(i32 16, i8* %1, i8* %3, i32 5)
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
; CHECK: ret void
define void @test_store_i128(i128* %arg, i128 %val) {
store atomic i128 %val, i128* %arg seq_cst, align 16
; CHECK: %1 = bitcast i128* %arg to i8*
; CHECK: %2 = alloca i128, align 8
; CHECK: %3 = bitcast i128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
; CHECK: store i128 %val, i128* %2, align 8
; CHECK: %4 = alloca i128, align 8
; CHECK: %5 = bitcast i128* %4 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
; CHECK: call void @__atomic_exchange(i32 16, i8* %1, i8* %3, i8* %5, i32 5)
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
; CHECK: %6 = load i128, i128* %4, align 8
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %5)
; CHECK: ret i128 %6
define i128 @test_exchange_i128(i128* %arg, i128 %val) {
%ret = atomicrmw xchg i128* %arg, i128 %val seq_cst
; CHECK: %1 = bitcast i128* %arg to i8*
; CHECK: %2 = alloca i128, align 8
; CHECK: %3 = bitcast i128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
; CHECK: store i128 %old, i128* %2, align 8
; CHECK: %4 = alloca i128, align 8
; CHECK: %5 = bitcast i128* %4 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
; CHECK: store i128 %new, i128* %4, align 8
; CHECK: %6 = call zeroext i1 @__atomic_compare_exchange(i32 16, i8* %1, i8* %3, i8* %5, i32 5, i32 0)
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %5)
; CHECK: %7 = load i128, i128* %2, align 8
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
; CHECK: %8 = insertvalue { i128, i1 } undef, i128 %7, 0
; CHECK: %9 = insertvalue { i128, i1 } %8, i1 %6, 1
; CHECK: %ret = extractvalue { i128, i1 } %9, 0
; CHECK: %new = add i128 %loaded, %val
; CHECK: %4 = bitcast i128* %arg to i8*
; CHECK: %5 = bitcast i128* %1 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
; CHECK: store i128 %loaded, i128* %1, align 8
; CHECK: %6 = bitcast i128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %6)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %6)
; CHECK: store i128 %new, i128* %2, align 8
; CHECK: %7 = call zeroext i1 @__atomic_compare_exchange(i32 16, i8* %4, i8* %5, i8* %6, i32 5, i32 5)
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %6)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %6)
; CHECK: %8 = load i128, i128* %1, align 8
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %5)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %5)
; CHECK: %9 = insertvalue { i128, i1 } undef, i128 %8, 0
; CHECK: %10 = insertvalue { i128, i1 } %9, i1 %7, 1
; CHECK: %success = extractvalue { i128, i1 } %10, 1
; CHECK: %1 = bitcast i16** %arg to i8*
; CHECK: %2 = alloca i16*, align 4
; CHECK: %3 = bitcast i16** %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 4, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 4, i8* %3)
; CHECK: store i16* %old, i16** %2, align 4
; CHECK: %4 = ptrtoint i16* %new to i32
; CHECK: %5 = call zeroext i1 @__atomic_compare_exchange_4(i8* %1, i8* %3, i32 %4, i32 5, i32 2)
; CHECK: %6 = load i16*, i16** %2, align 4
-; CHECK: call void @llvm.lifetime.end(i64 4, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 4, i8* %3)
; CHECK: %7 = insertvalue { i16*, i1 } undef, i16* %6, 0
; CHECK: %8 = insertvalue { i16*, i1 } %7, i1 %5, 1
; CHECK: %ret = extractvalue { i16*, i1 } %8, 0
; CHECK: %1 = bitcast fp128* %arg to i8*
; CHECK: %2 = alloca fp128, align 8
; CHECK: %3 = bitcast fp128* %2 to i8*
-; CHECK: call void @llvm.lifetime.start(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 16, i8* %3)
; CHECK: store fp128 %val, fp128* %2, align 8
; CHECK: call void @__atomic_store(i32 16, i8* %1, i8* %3, i32 5)
-; CHECK: call void @llvm.lifetime.end(i64 16, i8* %3)
+; CHECK: call void @llvm.lifetime.end.p0i8(i64 16, i8* %3)
; CHECK: ret void
define void @test_store_fp128(fp128* %arg, fp128 %val) {
store atomic fp128 %val, fp128* %arg seq_cst, align 16
declare void @llvm.lifetime.start(i64, i8* nocapture) #0
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
define void @main_arrayctor.cont([10 x %class.QBezier.15]* %beziers, %class.QBezier.15* %agg.tmp.i, %class.QBezier.15* %agg.tmp55.i, %class.QBezier.15* %agg.tmp56.i) {
newFuncRoot:
call fastcc void @_ZL12printQBezier7QBezier(%class.QBezier.15* byval align 8 %agg.tmp55.i)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %v2, i8* %v3, i64 64, i32 8, i1 false)
call fastcc void @_ZL12printQBezier7QBezier(%class.QBezier.15* byval align 8 %agg.tmp56.i)
- call void @llvm.lifetime.end(i64 64, i8* %v0)
- call void @llvm.lifetime.end(i64 64, i8* %v1)
- call void @llvm.lifetime.end(i64 64, i8* %v2)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %v0)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %v1)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %v2)
br label %arrayctor.cont.ret.exitStub
}
%chararray = alloca [30 x i8], align 16
%chararray2 = alloca [10 x i8], align 1
%0 = getelementptr inbounds [30 x i8], [30 x i8]* %chararray, i64 0, i64 0
- call void @llvm.lifetime.start(i64 30, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 30, i8* %0)
%1 = getelementptr inbounds [10 x i8], [10 x i8]* %chararray2, i64 0, i64 0
- call void @llvm.lifetime.start(i64 10, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 10, i8* %1)
%tobool = icmp eq i32 %flag, 0
%cptr.0 = select i1 %tobool, i8* %0, i8* %1
%2 = call i64 @llvm.objectsize.i64.p0i8(i8* %cptr.0, i1 true)
- call void @llvm.lifetime.end(i64 10, i8* %1)
- call void @llvm.lifetime.end(i64 30, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 10, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 30, i8* %0)
ret i64 %2
; CHECK-LABEL: foo1
; CHECK: ret i64 10
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare i64 @llvm.objectsize.i64.p0i8(i8*, i1)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define i64 @foo2(i32 %n) {
entry:
%Small = alloca [10 x i8], align 1
%Large = alloca [20 x i8], align 16
%0 = getelementptr inbounds [10 x i8], [10 x i8]* %Small, i64 0, i64 0
- call void @llvm.lifetime.start(i64 10, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 10, i8* %0)
%1 = getelementptr inbounds [20 x i8], [20 x i8]* %Large, i64 0, i64 0
- call void @llvm.lifetime.start(i64 20, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 20, i8* %1)
%tobool = icmp ne i32 %n, 0
%add.ptr = getelementptr inbounds [20 x i8], [20 x i8]* %Large, i64 0, i64 19
%cond = select i1 %tobool, i8* %0, i8* %add.ptr
%2 = call i64 @llvm.objectsize.i64.p0i8(i8* %cond, i1 false)
- call void @llvm.lifetime.end(i64 20, i8* %1)
- call void @llvm.lifetime.end(i64 10, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 20, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 10, i8* %0)
ret i64 %2
; CHECK-LABEL: foo2
; CHECK: ret i64 10
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #4
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #4
; Function Attrs: argmemonly nounwind readonly
declare token @llvm.coro.id(i32, i8* readnone, i8* nocapture readonly, i8*) #5
declare i8* @llvm.coro.begin(token, i8* writeonly) #7
declare token @llvm.coro.save(i8*) #7
declare i8 @llvm.coro.suspend(token, i1) #7
-declare void @llvm.lifetime.end(i64, i8* nocapture) #4
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #4
declare i8* @llvm.coro.free(token, i8* nocapture readonly) #5
declare void @free(i8* nocapture) local_unnamed_addr #6
declare i1 @llvm.coro.end(i8*, i1) #7
@.str = private unnamed_addr constant [8 x i8] c"a = %l\0A\00", align 1
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare void @hoo(i64*)
declare i32 @printf(i8* nocapture readonly, ...)
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define void @goo(i32 %N, i64* %b) {
entry:
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
- call void @llvm.lifetime.start(i64 8, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %tmp)
call void @hoo(i64* %a.i)
call void @hoo(i64* %c)
%tmp1 = load volatile i64, i64* %a.i, align 8
%call.i = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i64 %tmp1)
- call void @llvm.lifetime.end(i64 8, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %tmp)
%inc = add nsw i32 %i.0, 1
br label %for.cond
br label %bb3
bb2:
- call void @llvm.lifetime.end(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
br label %bb3
bb3:
call void @bar()
- call void @llvm.lifetime.end(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
br label %bb4
bb4:
}
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
declare void @llvm.memset.p0i8.i8(i8* nocapture, i8, i8, i32, i1) nounwind
define void @test1() {
%A = alloca i8
store i8 0, i8* %A ;; Written to by memset
- call void @llvm.lifetime.end(i64 1, i8* %A)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %A)
; CHECK: lifetime.end
call void @llvm.memset.p0i8.i8(i8* %A, i8 0, i8 -1, i32 0, i1 false)
; CHECK: test2
%Q = getelementptr i32, i32* %P, i32 1
%R = bitcast i32* %Q to i8*
- call void @llvm.lifetime.start(i64 4, i8* %R)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %R)
; CHECK: lifetime.start
store i32 0, i32* %Q ;; This store is dead.
; CHECK-NOT: store
- call void @llvm.lifetime.end(i64 4, i8* %R)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %R)
; CHECK: lifetime.end
ret void
}
entry:
%sv = alloca %"class.llvm::SmallVector", align 16
%0 = bitcast %"class.llvm::SmallVector"* %sv to i8*
- call void @llvm.lifetime.start(i64 64, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 64, i8* %0) #1
%BeginX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", %"class.llvm::SmallVector"* %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
%FirstEl.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", %"class.llvm::SmallVector"* %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 3
%1 = bitcast %"union.llvm::SmallVectorBase::U"* %FirstEl.i.i.i.i.i.i to i8*
br label %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21
_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21: ; preds = %invoke.cont3, %if.then.i.i.i20
- call void @llvm.lifetime.end(i64 64, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %0) #1
ret void
lpad: ; preds = %if.end.i14, %if.end.i, %invoke.cont2
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare i32 @__gxx_personality_v0(...)
declare void @_Z1gRN4llvm11SmallVectorIiLj8EEE(%"class.llvm::SmallVector"*) #2
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare void @_ZN4llvm15SmallVectorBase8grow_podEmm(%"class.llvm::SmallVectorBase"*, i64, i64) #2
; CHECK-NOT: load
; CHECK: lifetime.end
entry:
- call void @llvm.lifetime.start(i64 32, i8* %P)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %P)
%0 = load i8, i8* %P
store i8 1, i8* %P
- call void @llvm.lifetime.end(i64 32, i8* %P)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %P)
%1 = load i8, i8* %P
ret i8 %1
}
-declare void @llvm.lifetime.start(i64 %S, i8* nocapture %P) readonly
-declare void @llvm.lifetime.end(i64 %S, i8* nocapture %P)
+declare void @llvm.lifetime.start.p0i8(i64 %S, i8* nocapture %P) readonly
+declare void @llvm.lifetime.end.p0i8(i64 %S, i8* nocapture %P)
entry:
%mapi = alloca %struct._MUSIC_OP_API_*, align 8
%0 = bitcast %struct._MUSIC_OP_API_** %mapi to i8*
- call void @llvm.lifetime.start(i64 8, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %0)
store %struct._MUSIC_OP_API_* null, %struct._MUSIC_OP_API_** %mapi, align 8, !tbaa !1
%call = call i32 @music_decoder_init(%struct._MUSIC_OP_API_** nonnull %mapi)
br label %while.cond
br label %while.cond2
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare i32 @music_decoder_init(%struct._MUSIC_OP_API_**)
declare i32 @music_play_api(%struct._MUSIC_OP_API_*, i32, i32, i32, i8*)
declare i32 @printf(i8* nocapture readonly, ...)
; CHECK-NOT: udiv
declare void @_Z3mixRjj(i32* dereferenceable(4), i32)
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define i32 @_Z3fooPKcjj(i8* nocapture readonly %s, i32 %len, i32 %c) {
entry:
%a = alloca i32, align 4
%tmp = bitcast i32* %a to i8*
- call void @llvm.lifetime.start(i64 4, i8* %tmp)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %tmp)
store i32 -1640531527, i32* %a, align 4
%cmp8 = icmp ugt i32 %len, 11
br i1 %cmp8, label %while.body.lr.ph, label %while.end
%keylen.0.lcssa = phi i32 [ %sub.lcssa, %while.cond.while.end_crit_edge ], [ %len, %entry ]
call void @_Z3mixRjj(i32* dereferenceable(4) %a, i32 %keylen.0.lcssa)
%tmp4 = load i32, i32* %a, align 4
- call void @llvm.lifetime.end(i64 4, i8* %tmp)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %tmp)
ret i32 %tmp4
}
target datalayout = "p:32:32"
-declare void @llvm.lifetime.start(i64 %size, i8* nocapture %ptr)
+declare void @llvm.lifetime.start.p0i8(i64 %size, i8* nocapture %ptr)
@glbl = external global i32
%D = getelementptr inbounds i32, i32* %ptr, i32 1
%E = bitcast i32* %ptr to i8*
%F = select i1 false, i32* %ptr, i32* @glbl
- call void @llvm.lifetime.start(i64 0, i8* %E)
+ call void @llvm.lifetime.start.p0i8(i64 0, i8* %E)
call void @extern()
ret void
}
%D = getelementptr inbounds i32, i32* %ptr, i32 %A
%E = bitcast i32* %ptr to i8*
%F = select i1 false, i32* %ptr, i32* @glbl
- call void @llvm.lifetime.start(i64 0, i8* %E)
+ call void @llvm.lifetime.start.p0i8(i64 0, i8* %E)
call void @extern()
ret void
}
%D = getelementptr inbounds i32, i32* %ptr, i32 %A
%E = bitcast i32* %ptr to i8*
%F = select i1 false, i32* %ptr, i32* @glbl
- call void @llvm.lifetime.start(i64 0, i8* %E)
+ call void @llvm.lifetime.start.p0i8(i64 0, i8* %E)
ret void
exit:
; CHECK-LABEL: define i32 @caller1(
; CHECK: [[ALLOCA:%[a-z0-9\.]+]] = alloca i8
-; CHECK-NOT: call void @llvm.lifetime.start(
+; CHECK-NOT: call void @llvm.lifetime.start.p0i8(
; CHECK: call i32 @callee2(i8* [[ALLOCA]])
-; CHECK-NOT: call void @llvm.lifetime.end(
+; CHECK-NOT: call void @llvm.lifetime.end.p0i8(
define i32 @caller1(i32 %count) {
%call0 = call i32 @callee1(i32 0)
define void @test() {
; CHECK-LABEL: @test(
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 1
+; CHECK: llvm.lifetime.start.p0i8(i64 1
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 1
+; CHECK: llvm.lifetime.end.p0i8(i64 1
call void @helper()
; CHECK-NOT: lifetime
; CHECK: ret void
; RUN: opt -passes='cgscc(inline)' -S < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
define void @helper_both_markers() {
%a = alloca i8
; Size in llvm.lifetime.start / llvm.lifetime.end differs from
; allocation size. We should use the former.
- call void @llvm.lifetime.start(i64 2, i8* %a)
- call void @llvm.lifetime.end(i64 2, i8* %a)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %a)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %a)
ret void
}
define void @test_both_markers() {
; CHECK-LABEL: @test_both_markers(
-; CHECK: llvm.lifetime.start(i64 2
-; CHECK-NEXT: llvm.lifetime.end(i64 2
+; CHECK: llvm.lifetime.start.p0i8(i64 2
+; CHECK-NEXT: llvm.lifetime.end.p0i8(i64 2
call void @helper_both_markers()
-; CHECK-NEXT: llvm.lifetime.start(i64 2
-; CHECK-NEXT: llvm.lifetime.end(i64 2
+; CHECK-NEXT: llvm.lifetime.start.p0i8(i64 2
+; CHECK-NEXT: llvm.lifetime.end.p0i8(i64 2
call void @helper_both_markers()
; CHECK-NEXT: ret void
ret void
define void @test_no_marker() {
; CHECK-LABEL: @test_no_marker(
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 1
+; CHECK: llvm.lifetime.start.p0i8(i64 1
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 1
+; CHECK: llvm.lifetime.end.p0i8(i64 1
call void @helper_no_markers()
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 1
+; CHECK: llvm.lifetime.start.p0i8(i64 1
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 1
+; CHECK: llvm.lifetime.end.p0i8(i64 1
call void @helper_no_markers()
; CHECK-NOT: lifetime
; CHECK: ret void
define void @helper_two_casts() {
%a = alloca i32
%b = bitcast i32* %a to i8*
- call void @llvm.lifetime.start(i64 4, i8* %b)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %b)
%c = bitcast i32* %a to i8*
- call void @llvm.lifetime.end(i64 4, i8* %c)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %c)
ret void
}
define void @test_two_casts() {
; CHECK-LABEL: @test_two_casts(
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 4
+; CHECK: llvm.lifetime.start.p0i8(i64 4
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 4
+; CHECK: llvm.lifetime.end.p0i8(i64 4
call void @helper_two_casts()
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 4
+; CHECK: llvm.lifetime.start.p0i8(i64 4
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 4
+; CHECK: llvm.lifetime.end.p0i8(i64 4
call void @helper_two_casts()
; CHECK-NOT: lifetime
; CHECK: ret void
define void @test_arrays_alloca() {
; CHECK-LABEL: @test_arrays_alloca(
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.start(i64 40,
+; CHECK: llvm.lifetime.start.p0i8(i64 40,
; CHECK-NOT: lifetime
-; CHECK: llvm.lifetime.end(i64 40,
+; CHECK: llvm.lifetime.end.p0i8(i64 40,
call void @helper_arrays_alloca()
; CHECK-NOT: lifetime
; CHECK: ret void
%Big = alloca [20 x i8], align 16
%Small = alloca [10 x i8], align 1
%0 = getelementptr inbounds [20 x i8], [20 x i8]* %Big, i64 0, i64 0
- call void @llvm.lifetime.start(i64 20, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 20, i8* %0)
%1 = getelementptr inbounds [10 x i8], [10 x i8]* %Small, i64 0, i64 0
- call void @llvm.lifetime.start(i64 10, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 10, i8* %1)
%tobool = icmp ne i32 %N, 0
%add.ptr = getelementptr inbounds [20 x i8], [20 x i8]* %Big, i64 0, i64 10
%cond = select i1 %tobool, i8* %add.ptr, i8* %1
%2 = call i64 @llvm.objectsize.i64.p0i8(i8* %cond, i1 false)
%conv = trunc i64 %2 to i32
- call void @llvm.lifetime.end(i64 10, i8* %1)
- call void @llvm.lifetime.end(i64 20, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 10, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 20, i8* %0)
ret i32 %conv
; CHECK: ret i32 10
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare i64 @llvm.objectsize.i64.p0i8(i8*, i1)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define void @foo() {
entry:
entry:
%var = alloca %struct.V, align 4
%0 = bitcast %struct.V* %var to i8*
- call void @llvm.lifetime.start(i64 28, i8* %0) #3
+ call void @llvm.lifetime.start.p0i8(i64 28, i8* %0) #3
%buf1 = getelementptr inbounds %struct.V, %struct.V* %var, i32 0, i32 0
%arrayidx = getelementptr inbounds [10 x i8], [10 x i8]* %buf1, i64 0, i64 1
%1 = call i64 @llvm.objectsize.i64.p0i8(i8* %arrayidx, i1 false)
%conv = trunc i64 %1 to i32
- call void @llvm.lifetime.end(i64 28, i8* %0) #3
+ call void @llvm.lifetime.end.p0i8(i64 28, i8* %0) #3
ret i32 %conv
; CHECK: ret i32 27
; CHECK-NOT: ret i32 -1
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare i64 @llvm.objectsize.i64.p0i8(i8*, i1) #2
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; CHECK: ret i1 %cmp
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define i1 @alloca_argument_compare_benign_instrs(i8* %arg) {
%alloc = alloca i8
- call void @llvm.lifetime.start(i64 1, i8* %alloc)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %alloc)
%cmp = icmp eq i8* %arg, %alloc
%x = load i8, i8* %arg
store i8 %x, i8* %alloc
- call void @llvm.lifetime.end(i64 1, i8* %alloc)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %alloc)
ret i1 %cmp
; CHECK-LABEL: alloca_argument_compare_benign_instrs
; CHECK: ret i1 false
declare i8* @llvm.stacksave()
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
define void @test3() {
- call void @llvm.lifetime.start(i64 -1, i8* undef)
- call void @llvm.lifetime.end(i64 -1, i8* undef)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* undef)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* undef)
ret void
}
; RUN: opt < %s -instcombine -S | FileCheck %s
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @foo(i8* nocapture)
define void @asan() sanitize_address {
; CHECK-LABEL: @asan(
%text = alloca i8, align 1
- call void @llvm.lifetime.start(i64 1, i8* %text)
- call void @llvm.lifetime.end(i64 1, i8* %text)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %text)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %text)
; CHECK: call void @llvm.lifetime.start
; CHECK-NEXT: call void @llvm.lifetime.end
; CHECK-LABEL: @no_asan(
%text = alloca i8, align 1
- call void @llvm.lifetime.start(i64 1, i8* %text)
- call void @llvm.lifetime.end(i64 1, i8* %text)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %text)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %text)
; CHECK-NO: call void @llvm.lifetime
call void @foo(i8* %text) ; Keep alloca alive
; RUN: opt < %s -instcombine -S | FileCheck %s
declare void @llvm.dbg.declare(metadata, metadata, metadata)
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @foo(i8* nocapture, i8* nocapture)
define void @bar(i1 %flag) !dbg !4 {
; CHECK: bb3:
; CHECK-NEXT: call void @llvm.dbg.declare
; CHECK-NEXT: br label %fin
-; CHECK: call void @llvm.lifetime.start(i64 1, i8* %[[T]])
-; CHECK-NEXT: call void @llvm.lifetime.start(i64 1, i8* %[[B]])
+; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %[[T]])
+; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 1, i8* %[[B]])
; CHECK-NEXT: call void @foo(i8* %[[B]], i8* %[[T]])
-; CHECK-NEXT: call void @llvm.lifetime.end(i64 1, i8* %[[B]])
-; CHECK-NEXT: call void @llvm.lifetime.end(i64 1, i8* %[[T]])
+; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 1, i8* %[[B]])
+; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 1, i8* %[[T]])
%text = alloca [1 x i8], align 1
%buff = alloca [1 x i8], align 1
%0 = getelementptr inbounds [1 x i8], [1 x i8]* %text, i64 0, i64 0
br i1 %flag, label %if, label %else
if:
- call void @llvm.lifetime.start(i64 1, i8* %0)
- call void @llvm.lifetime.start(i64 1, i8* %1)
- call void @llvm.lifetime.end(i64 1, i8* %1)
- call void @llvm.lifetime.end(i64 1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %0)
br label %bb2
bb2:
- call void @llvm.lifetime.start(i64 1, i8* %0)
- call void @llvm.lifetime.start(i64 1, i8* %1)
- call void @llvm.lifetime.end(i64 1, i8* %0)
- call void @llvm.lifetime.end(i64 1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %1)
br label %bb3
bb3:
- call void @llvm.lifetime.start(i64 1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %0)
call void @llvm.dbg.declare(metadata [1 x i8]* %text, metadata !14, metadata !25), !dbg !26
- call void @llvm.lifetime.end(i64 1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %0)
br label %fin
else:
- call void @llvm.lifetime.start(i64 1, i8* %0)
- call void @llvm.lifetime.start(i64 1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* %1)
call void @foo(i8* %1, i8* %0)
- call void @llvm.lifetime.end(i64 1, i8* %1)
- call void @llvm.lifetime.end(i64 1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* %0)
br label %fin
fin:
ret i1 %z
}
-declare void @llvm.lifetime.start(i64, i8*)
-declare void @llvm.lifetime.end(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
+declare void @llvm.lifetime.end.p0i8(i64, i8*)
declare i64 @llvm.objectsize.i64(i8*, i1)
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
; CHECK-LABEL: @test3(
; CHECK-NEXT: ret void
%a = call noalias i8* @malloc(i32 10)
- call void @llvm.lifetime.start(i64 10, i8* %a)
- call void @llvm.lifetime.end(i64 10, i8* %a)
+ call void @llvm.lifetime.start.p0i8(i64 10, i8* %a)
+ call void @llvm.lifetime.end.p0i8(i64 10, i8* %a)
%size = call i64 @llvm.objectsize.i64(i8* %a, i1 true)
store i8 42, i8* %a
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %a, i8* %src, i32 32, i32 1, i1 false)
ret void
}
-declare void @llvm.lifetime.start(i64, i8*)
+declare void @llvm.lifetime.start.p0i8(i64, i8*)
define void @test5() {
%A = alloca %T
%a = bitcast %T* %A to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %a)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* bitcast (%T* @G to i8*), i64 124, i32 4, i1 false)
call void @baz(i8* byval %a)
; CHECK-LABEL: @test5(
%struct.__va_list = type { i8*, i8*, i8*, i32, i32 }
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @llvm.va_start(i8*)
declare void @llvm.va_end(i8*)
declare void @llvm.va_copy(i8*, i8*)
%va1 = alloca %struct.__va_list, align 8
%0 = bitcast %struct.__va_list* %va0 to i8*
%1 = bitcast %struct.__va_list* %va1 to i8*
- call void @llvm.lifetime.start(i64 32, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %0)
call void @llvm.va_start(i8* %0)
- call void @llvm.lifetime.start(i64 32, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %1)
call void @llvm.va_copy(i8* %1, i8* %0)
call void @llvm.va_end(i8* %1)
- call void @llvm.lifetime.end(i64 32, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %1)
call void @llvm.va_end(i8* %0)
- call void @llvm.lifetime.end(i64 32, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %0)
ret i32 0
}
entry:
%arr = alloca [1024 x i32], align 16
%0 = bitcast [1024 x i32]* %arr to i8*
- call void @llvm.lifetime.start(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %0) #1
br label %for.body
for.body:
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
- call void @llvm.lifetime.end(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %0) #1
%arrayidx = getelementptr inbounds i32, i32* %d, i64 %indvars.iv
%1 = load i32, i32* %arrayidx, align 8
store i32 100, i32* %arrayidx, align 8
- call void @llvm.lifetime.start(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %0) #1
%indvars.iv.next = add i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp ne i32 %lftr.wideiv, 128
br i1 %exitcond, label %for.body, label %for.end
for.end:
- call void @llvm.lifetime.end(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %0) #1
ret void
}
entry:
%arr = alloca [1024 x i32], align 16
%0 = bitcast [1024 x i32]* %arr to i8*
- call void @llvm.lifetime.start(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %0) #1
br label %for.body
for.body:
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
%1 = bitcast [1024 x i32]* %arr to i8*
- call void @llvm.lifetime.end(i64 4096, i8* %1) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %1) #1
%arrayidx = getelementptr inbounds i32, i32* %d, i64 %indvars.iv
%2 = load i32, i32* %arrayidx, align 8
store i32 100, i32* %arrayidx, align 8
- call void @llvm.lifetime.start(i64 4096, i8* %1) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %1) #1
%indvars.iv.next = add i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp ne i32 %lftr.wideiv, 128
br i1 %exitcond, label %for.body, label %for.end
for.end:
- call void @llvm.lifetime.end(i64 4096, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %0) #1
ret void
}
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
%0 = getelementptr [1024 x i32], [1024 x i32]* %arr, i32 0, i64 %indvars.iv
%1 = bitcast [1024 x i32]* %arr to i8*
- call void @llvm.lifetime.end(i64 4096, i8* %1) #1
+ call void @llvm.lifetime.end.p0i8(i64 4096, i8* %1) #1
%arrayidx = getelementptr inbounds i32, i32* %d, i64 %indvars.iv
%2 = load i32, i32* %arrayidx, align 8
store i32 100, i32* %arrayidx, align 8
- call void @llvm.lifetime.start(i64 4096, i8* %1) #1
+ call void @llvm.lifetime.start.p0i8(i64 4096, i8* %1) #1
%indvars.iv.next = add i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp ne i32 %lftr.wideiv, 128
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; RUN: opt -mem2reg -S -o - < %s | FileCheck %s
-declare void @llvm.lifetime.start(i64 %size, i8* nocapture %ptr)
-declare void @llvm.lifetime.end(i64 %size, i8* nocapture %ptr)
+declare void @llvm.lifetime.start.p0i8(i64 %size, i8* nocapture %ptr)
+declare void @llvm.lifetime.end.p0i8(i64 %size, i8* nocapture %ptr)
define void @test1() {
; CHECK: test1
; CHECK-NOT: alloca
%A = alloca i32
%B = bitcast i32* %A to i8*
- call void @llvm.lifetime.start(i64 2, i8* %B)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %B)
store i32 1, i32* %A
- call void @llvm.lifetime.end(i64 2, i8* %B)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %B)
ret void
}
; CHECK-NOT: alloca
%A = alloca {i8, i16}
%B = getelementptr {i8, i16}, {i8, i16}* %A, i32 0, i32 0
- call void @llvm.lifetime.start(i64 2, i8* %B)
+ call void @llvm.lifetime.start.p0i8(i64 2, i8* %B)
store {i8, i16} zeroinitializer, {i8, i16}* %A
- call void @llvm.lifetime.end(i64 2, i8* %B)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %B)
ret void
}
; @llvm.lifetime.start and @llvm.memcpy.
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
define void @_ZN4CordC2EOS_(i8* nocapture dereferenceable(16) %arg1) {
bb:
; CHECK: ret void
%tmp = alloca [8 x i8], align 8
%tmp5 = bitcast [8 x i8]* %tmp to i8*
- call void @llvm.lifetime.start(i64 16, i8* %tmp5)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %tmp5)
%tmp10 = getelementptr inbounds i8, i8* %tmp5, i64 7
store i8 0, i8* %tmp10, align 1
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg1, i8* %tmp5, i64 16, i32 8, i1 false)
- call void @llvm.lifetime.end(i64 16, i8* %tmp5)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %tmp5)
ret void
}
entry-block:
%a = alloca [8 x i64], align 8
%a.cast = bitcast [8 x i64]* %a to i8*
- call void @llvm.lifetime.start(i64 64, i8* %a.cast)
+ call void @llvm.lifetime.start.p0i8(i64 64, i8* %a.cast)
call void @llvm.memset.p0i8.i64(i8* %a.cast, i8 0, i64 64, i32 8, i1 false)
%sret.cast = bitcast [8 x i64]* %sret to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %sret.cast, i8* %a.cast, i64 64, i32 8, i1 false)
- call void @llvm.lifetime.end(i64 64, i8* %a.cast)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %a.cast)
ret void
; CHECK-LABEL: @foo(
entry-block:
%a = alloca [8 x i64], align 8
%a.cast = bitcast [8 x i64]* %a to i8*
- call void @llvm.lifetime.start(i64 64, i8* %a.cast)
+ call void @llvm.lifetime.start.p0i8(i64 64, i8* %a.cast)
call void @llvm.memset.p0i8.i64(i8* %a.cast, i8 0, i64 64, i32 8, i1 false)
%sret.cast = bitcast [8 x i64]* %sret to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %sret.cast, i8* %a.cast, i64 64, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %a.cast, i8 42, i64 32, i32 8, i1 false)
%out.cast = bitcast [8 x i64]* %out to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out.cast, i8* %a.cast, i64 64, i32 8, i1 false)
- call void @llvm.lifetime.end(i64 64, i8* %a.cast)
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %a.cast)
ret void
; CHECK-LABEL: @bar(
; CHECK: ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
}
define void @test2(i8* sret noalias nocapture %out, i8* %in) nounwind noinline ssp uwtable {
- call void @llvm.lifetime.start(i64 8, i8* %in)
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %in)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out, i8* %in, i64 8, i32 1, i1 false)
ret void
}
define void @test3(i8* sret noalias nocapture %out, i8* %in) nounwind noinline ssp uwtable {
- call void @llvm.lifetime.start(i64 4, i8* %in)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %in)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out, i8* %in, i64 8, i32 1, i1 false)
ret void
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
%0 = bitcast [2048 x i64]* %tmp0 to i8*
%tmp2 = alloca %Foo, align 8
%x.sroa.0.0..sroa_cast6 = bitcast [2048 x i64]* %x.sroa.0 to i8*
- call void @llvm.lifetime.start(i64 16384, i8* %x.sroa.0.0..sroa_cast6)
- call void @llvm.lifetime.start(i64 16384, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 16384, i8* %x.sroa.0.0..sroa_cast6)
+ call void @llvm.lifetime.start.p0i8(i64 16384, i8* %0)
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 16384, i32 8, i1 false)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %x.sroa.0.0..sroa_cast6, i8* %0, i64 16384, i32 8, i1 false)
- call void @llvm.lifetime.end(i64 16384, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 16384, i8* %0)
%1 = bitcast %Foo* %tmp2 to i8*
- call void @llvm.lifetime.start(i64 16384, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 16384, i8* %1)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* %x.sroa.0.0..sroa_cast6, i64 16384, i32 8, i1 false)
call void @bar(%Foo* noalias nocapture nonnull dereferenceable(16384) %tmp2)
- call void @llvm.lifetime.end(i64 16384, i8* %1)
- call void @llvm.lifetime.end(i64 16384, i8* %x.sroa.0.0..sroa_cast6)
+ call void @llvm.lifetime.end.p0i8(i64 16384, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 16384, i8* %x.sroa.0.0..sroa_cast6)
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare void @bar(%Foo* noalias nocapture readonly dereferenceable(16384)) unnamed_addr #0
entry:
%sv = alloca %"class.llvm::SmallVector", align 16
%0 = bitcast %"class.llvm::SmallVector"* %sv to i8*
- call void @llvm.lifetime.start(i64 64, i8* %0) #1
+ call void @llvm.lifetime.start.p0i8(i64 64, i8* %0) #1
%BeginX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", %"class.llvm::SmallVector"* %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
%FirstEl.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", %"class.llvm::SmallVector"* %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 3
%1 = bitcast %"union.llvm::SmallVectorBase::U"* %FirstEl.i.i.i.i.i.i to i8*
br label %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21
_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21: ; preds = %invoke.cont3, %if.then.i.i.i20
- call void @llvm.lifetime.end(i64 64, i8* %0) #1
+ call void @llvm.lifetime.end.p0i8(i64 64, i8* %0) #1
ret void
lpad: ; preds = %if.end.i14, %if.end.i, %invoke.cont2
}
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare i32 @__gxx_personality_v0(...)
declare void @_Z1gRN4llvm11SmallVectorIiLj8EEE(%"class.llvm::SmallVector"*) #2
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
declare void @_ZN4llvm15SmallVectorBase8grow_podEmm(%"class.llvm::SmallVectorBase"*, i64, i64) #2
; CHECK-NOT: load
; CHECK: lifetime.end
entry:
- call void @llvm.lifetime.start(i64 32, i8* %P)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %P)
%0 = load i8, i8* %P
store i8 1, i8* %P
- call void @llvm.lifetime.end(i64 32, i8* %P)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %P)
%1 = load i8, i8* %P
ret i8 %1
}
-declare void @llvm.lifetime.start(i64 %S, i8* nocapture %P) readonly
-declare void @llvm.lifetime.end(i64 %S, i8* nocapture %P)
+declare void @llvm.lifetime.start.p0i8(i64 %S, i8* nocapture %P) readonly
+declare void @llvm.lifetime.end.p0i8(i64 %S, i8* nocapture %P)
target datalayout = "e-p:64:64:64-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n8:16:32:64"
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define i32 @test0() {
; CHECK-LABEL: @test0(
%a2 = alloca float
%a1.i8 = bitcast i32* %a1 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %a1.i8)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %a1.i8)
store i32 0, i32* %a1
%v1 = load i32, i32* %a1
- call void @llvm.lifetime.end(i64 4, i8* %a1.i8)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %a1.i8)
%a2.i8 = bitcast float* %a2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %a2.i8)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %a2.i8)
store float 0.0, float* %a2
%v2 = load float , float * %a2
%v2.int = bitcast float %v2 to i32
%sum1 = add i32 %v1, %v2.int
- call void @llvm.lifetime.end(i64 4, i8* %a2.i8)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %a2.i8)
ret i32 %sum1
}
entry:
%X.sroa.0.i = alloca double, align 8
%0 = bitcast double* %X.sroa.0.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0)
; Store to the low 32-bits...
%X.sroa.0.0.cast2.i = bitcast double* %X.sroa.0.i to i32*
%accum.real.i = load double, double* %d, align 8
%add.r.i = fadd double %accum.real.i, %X.sroa.0.0.load1.i
store double %add.r.i, double* %d, align 8
- call void @llvm.lifetime.end(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
ret void
}
entry:
%tmpData = alloca %struct.STest, align 8
%0 = bitcast %struct.STest* %tmpData to i8*
- call void @llvm.lifetime.start(i64 16, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %0)
%x = getelementptr inbounds %struct.STest, %struct.STest* %tmpData, i64 0, i32 0, i32 0
store float 1.230000e+02, float* %x, align 8
%y = getelementptr inbounds %struct.STest, %struct.STest* %tmpData, i64 0, i32 0, i32 1
store i64 %3, i64* %2, align 8
%4 = bitcast %struct.STest* %outData to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %0, i64 16, i32 4, i1 false)
- call void @llvm.lifetime.end(i64 16, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %0)
ret void
}
entry-block:
%0 = alloca [2 x i64], align 8
%1 = bitcast [2 x i64]* %0 to i8*
- call void @llvm.lifetime.start(i64 16, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %1)
%2 = getelementptr inbounds [2 x i64], [2 x i64]* %0, i32 0, i32 1
%3 = bitcast i64* %2 to i8*
- call void @llvm.lifetime.end(i64 8, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %3)
ret void
}
%e.7.sroa.6.i = alloca i32, align 1
%e.7.sroa.6.0.load81.i = load i32, i32* %e.7.sroa.6.i, align 1
%0 = bitcast i32* %e.7.sroa.6.i to i8*
- call void @llvm.lifetime.end(i64 2, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 2, i8* %0)
ret void
}
define void @fn1() {
%a = alloca [1073741825 x i32], align 16
%t0 = bitcast [1073741825 x i32]* %a to i8*
- call void @llvm.lifetime.end(i64 4294967300, i8* %t0)
+ call void @llvm.lifetime.end.p0i8(i64 4294967300, i8* %t0)
ret void
}
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
target datalayout = "e-p:64:32-i64:32-v32:32-n32-S64"
; Function Attrs: nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #0
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #0
; Function Attrs: nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #0
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #0
; CHECK: @wombat
; CHECK-NOT: alloca
bb:
%tmp = alloca <4 x float>, align 16
%tmp8 = bitcast <4 x float>* %tmp to i8*
- call void @llvm.lifetime.start(i64 16, i8* %tmp8)
+ call void @llvm.lifetime.start.p0i8(i64 16, i8* %tmp8)
store <4 x float> %arg1, <4 x float>* %tmp, align 16
%tmp17 = bitcast <4 x float>* %tmp to <3 x float>*
%tmp18 = load <3 x float>, <3 x float>* %tmp17
%tmp20 = bitcast <4 x float>* %tmp to i8*
- call void @llvm.lifetime.end(i64 16, i8* %tmp20)
+ call void @llvm.lifetime.end.p0i8(i64 16, i8* %tmp20)
call void @wombat3(<3 x float> %tmp18)
ret void
}
entry:
%q = alloca [100 x i8], align 16
%0 = bitcast [100 x i8]* %q to i8*
- call void @llvm.lifetime.start(i64 100, i8* %0)
- call void @llvm.lifetime.end(i64 100, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 100, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 100, i8* %0)
ret void
}
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind argmemonly
%x0 = bitcast i64* %x to i8*
%y0 = bitcast i64* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture64(i64* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture64(i64* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture64(i64*)
%x1 = alloca i32, align 4
%x2 = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0)
; CHECK: %[[A1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[A2:.*]] = bitcast i8* %[[A1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[A2]])
call void @capture(i32* nonnull %x)
- call void @llvm.lifetime.end(i64 4, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0)
%1 = bitcast i32* %x1 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %1)
; CHECK: %[[B1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[B2:.*]] = bitcast i8* %[[B1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[B2]])
call void @capture(i32* nonnull %x1)
- call void @llvm.lifetime.end(i64 4, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %1)
%2 = bitcast i32* %x2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %2)
; CHECK: %[[C1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[C2:.*]] = bitcast i8* %[[C1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[C2]])
call void @capture(i32* nonnull %x2)
- call void @llvm.lifetime.end(i64 4, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %2)
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture(i32*)
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i32* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %y)
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture64(i64* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture32(i32* %x)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture64(i64* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
%z1 = alloca i64, align 8
%z2 = alloca i64, align 8
%0 = bitcast i64* %x1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0)
%1 = bitcast i64* %x2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %x1)
if.then: ; preds = %entry
%2 = bitcast i64* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -24
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y)
if.then3: ; preds = %if.then
%3 = bitcast i64* %y1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y1)
- call void @llvm.lifetime.end(i64 -1, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3)
br label %if.end
if.else: ; preds = %if.then
%4 = bitcast i64* %y2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %4)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %4)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y2)
- call void @llvm.lifetime.end(i64 -1, i8* %4)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %4)
br label %if.end
if.end: ; preds = %if.else, %if.then3
- call void @llvm.lifetime.end(i64 -1, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2)
br label %if.end9
if.else4: ; preds = %entry
%5 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %5)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %5)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -24
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z)
if.then6: ; preds = %if.else4
%6 = bitcast i64* %z1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %6)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %6)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z1)
- call void @llvm.lifetime.end(i64 -1, i8* %6)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %6)
br label %if.end8
if.else7: ; preds = %if.else4
%7 = bitcast i64* %z2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %7)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %7)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z2)
- call void @llvm.lifetime.end(i64 -1, i8* %7)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %7)
br label %if.end8
if.end8: ; preds = %if.else7, %if.then6
- call void @llvm.lifetime.end(i64 -1, i8* %5)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %5)
br label %if.end9
if.end9: ; preds = %if.end8, %if.end
- call void @llvm.lifetime.end(i64 -1, i8* %1)
- call void @llvm.lifetime.end(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
ret void
}
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture32(
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
ret void
bb3:
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
ret void
}
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
ret void
bb3:
ret void
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture32(
call void @capture32(i32* %y)
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0)
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -400
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %A.i)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -800
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %B.i)
- call void @llvm.lifetime.end(i64 -1, i8* %0)
- call void @llvm.lifetime.end(i64 -1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1)
%2 = bitcast [100 x i32]* %A.i1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2)
%3 = bitcast [100 x i32]* %B.i2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -400
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %A.i1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -800
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %B.i2)
- call void @llvm.lifetime.end(i64 -1, i8* %2)
- call void @llvm.lifetime.end(i64 -1, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3)
ret void
}
%buf1 = alloca i8, i32 100000, align 16
%buf2 = alloca i8, i32 100000, align 16
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.end(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf2)
call void @capture8(i8* %buf1)
call void @capture8(i8* %buf2)
ret void
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1) nounwind
call void @capture100x32([100 x i32]* %A.i)
call void @capture100x32([100 x i32]* %B.i)
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1) nounwind
br label %block2
block2:
%b8 = bitcast [4 x %struct.Klass]* %b.i to i8*
; I am used outside the lifetime zone below:
%z2 = getelementptr inbounds [4 x %struct.Klass], [4 x %struct.Klass]* %a.i, i64 0, i64 0, i32 0
- call void @llvm.lifetime.start(i64 -1, i8* %a8)
- call void @llvm.lifetime.start(i64 -1, i8* %b8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b8)
call void @capture8(i8* %a8)
call void @capture8(i8* %b8)
%z3 = load i32, i32* %z2, align 16
- call void @llvm.lifetime.end(i64 -1, i8* %a8)
- call void @llvm.lifetime.end(i64 -1, i8* %b8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b8)
ret i32 %z3
}
; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr
; CHECK-NEXT: getelementptr i8, i8* %[[USP]], i32 -16
%x = alloca i8, align 4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
br label %l2
l2:
call void @capture8(i8* %x)
- call void @llvm.lifetime.end(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x) nounwind
br label %l2
}
; CHECK-NEXT: getelementptr i8, i8* %[[USP]], i32 -16
%x = alloca i8, align 4
%y = alloca i8, align 4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
br label %l2
l2:
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
- call void @llvm.lifetime.start(i64 4, i8* %y) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %y) nounwind
call void @capture8(i8* %y)
- call void @llvm.lifetime.end(i64 4, i8* %y) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %y) nounwind
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
call void @capture8(i8* %x)
br label %l2
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture8(i8*)
declare void @capture32(i32*)
declare void @capture64(i64*)
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @capture(i32*) #2
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3
%x0a = bitcast i64* %x0 to i8*
%x2a = bitcast i64* %x2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %x0a)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x0a)
call void @capture64(i64* %x0)
- call void @llvm.lifetime.end(i64 4, i8* %x0a)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x0a)
- call void @llvm.lifetime.start(i64 4, i8* %x1)
- call void @llvm.lifetime.start(i64 4, i8* %x2a)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x1)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x2a)
call void @capture8(i8* %x1)
call void @capture64(i64* %x2)
- call void @llvm.lifetime.end(i64 4, i8* %x1)
- call void @llvm.lifetime.end(i64 4, i8* %x2a)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x2a)
; Test that i64 allocas share space.
; CHECK: getelementptr i8, i8* %unsafe_stack_ptr, i32 -8
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture8(i8*)
declare void @capture64(i64*)
%sum = alloca i64, align 8
%i = alloca i32, align 4
%0 = bitcast i64* %sum to i8*, !dbg !19
- call void @llvm.lifetime.start(i64 8, i8* %0) #4, !dbg !19
+ call void @llvm.lifetime.start.p0i8(i64 8, i8* %0) #4, !dbg !19
call void @llvm.dbg.declare(metadata i64* %sum, metadata !9, metadata !20), !dbg !21
store i64 0, i64* %sum, align 8, !dbg !21, !tbaa !22
%1 = bitcast i32* %i to i8*, !dbg !26
- call void @llvm.lifetime.start(i64 4, i8* %1) #4, !dbg !26
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4, !dbg !26
call void @llvm.dbg.declare(metadata i32* %i, metadata !10, metadata !20), !dbg !27
store i32 0, i32* %i, align 4, !dbg !27, !tbaa !28
br label %for.cond, !dbg !26
for.cond.cleanup: ; preds = %for.cond
%3 = bitcast i32* %i to i8*, !dbg !36
- call void @llvm.lifetime.end(i64 4, i8* %3) #4, !dbg !36
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %3) #4, !dbg !36
br label %for.end
for.body: ; preds = %for.cond
for.end: ; preds = %for.cond.cleanup
%10 = load i64, i64* %sum, align 8, !dbg !53, !tbaa !22
%11 = bitcast i64* %sum to i8*, !dbg !54
- call void @llvm.lifetime.end(i64 8, i8* %11) #4, !dbg !54
+ call void @llvm.lifetime.end.p0i8(i64 8, i8* %11) #4, !dbg !54
ret i64 %10, !dbg !55
}
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #2
declare i32 @rand() #3
; Function Attrs: nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind uwtable
define i32 @main() #0 !dbg !13 {
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
declare i32 @_ZNK1F5beginEv(%class.F*)
declare void @_ZN1B6appendEv(%class.B*)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare i1 @llvm.type.test(i8*, metadata)
define i32 @f9() personality i32 (...)* @__CxxFrameHandler3 {
entry:
%s = alloca i8, align 1
- call void @llvm.lifetime.start(i64 1, i8* nonnull %s)
+ call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %s)
%bc = bitcast i8* %s to %struct.S2*
invoke void @"\01??1S2@@QEAA@XZ"(%struct.S2* %bc)
to label %try.cont unwind label %ehcleanup
ehcleanup:
%cleanup.pad = cleanuppad within none []
- call void @llvm.lifetime.end(i64 1, i8* nonnull %s)
+ call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %s)
cleanupret from %cleanup.pad unwind label %catch.dispatch
catch.dispatch:
declare i32 @__CxxFrameHandler3(...)
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
define void @foo(i1 %x) {
entry:
%a = alloca i8
- call void @llvm.lifetime.start(i64 -1, i8* %a) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a) nounwind
br i1 %x, label %bb0, label %bb1
bb0:
- call void @llvm.lifetime.end(i64 -1, i8* %a) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %a) nounwind
br label %bb1
bb1:
declare void @f()
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind
define i8 @test(i8* %P, i8* %Q) {
entry:
; CHECK: 1 = MemoryDef(liveOnEntry)
-; CHECK-NEXT: call void @llvm.lifetime.start(i64 32, i8* %P)
- call void @llvm.lifetime.start(i64 32, i8* %P)
+; CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 32, i8* %P)
+ call void @llvm.lifetime.start.p0i8(i64 32, i8* %P)
; CHECK: MemoryUse(1)
; CHECK-NEXT: %0 = load i8, i8* %P
%0 = load i8, i8* %P
; CHECK-NEXT: store i8 1, i8* %P
store i8 1, i8* %P
; CHECK: 3 = MemoryDef(2)
-; CHECK-NEXT: call void @llvm.lifetime.end(i64 32, i8* %P)
- call void @llvm.lifetime.end(i64 32, i8* %P)
+; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 32, i8* %P)
+ call void @llvm.lifetime.end.p0i8(i64 32, i8* %P)
; CHECK: MemoryUse(liveOnEntry)
; CHECK-NEXT: %1 = load i8, i8* %P
%1 = load i8, i8* %P
%2 = load i8, i8* %Q
ret i8 %1
}
-declare void @llvm.lifetime.start(i64 %S, i8* nocapture %P) readonly
-declare void @llvm.lifetime.end(i64 %S, i8* nocapture %P)
+declare void @llvm.lifetime.start.p0i8(i64 %S, i8* nocapture %P) readonly
+declare void @llvm.lifetime.end.p0i8(i64 %S, i8* nocapture %P)