Index: include/llvm/IR/Intrinsics.td =================================================================== --- include/llvm/IR/Intrinsics.td +++ include/llvm/IR/Intrinsics.td @@ -601,10 +601,10 @@ //===------------------------- 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], @@ -655,16 +655,16 @@ // 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], []>; Index: lib/IR/AutoUpgrade.cpp =================================================================== --- lib/IR/AutoUpgrade.cpp +++ lib/IR/AutoUpgrade.cpp @@ -411,26 +411,31 @@ } 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; } } Index: lib/IR/IRBuilder.cpp =================================================================== --- lib/IR/IRBuilder.cpp +++ lib/IR/IRBuilder.cpp @@ -172,7 +172,8 @@ "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); } @@ -187,7 +188,8 @@ "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); } Index: test/Analysis/BasicAA/modref.ll =================================================================== --- test/Analysis/BasicAA/modref.ll +++ test/Analysis/BasicAA/modref.ll @@ -1,7 +1,7 @@ ; 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*) @@ -67,7 +67,7 @@ %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 @@ -81,7 +81,7 @@ %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 } Index: test/Analysis/LazyValueAnalysis/invalidation.ll =================================================================== --- test/Analysis/LazyValueAnalysis/invalidation.ll +++ test/Analysis/LazyValueAnalysis/invalidation.ll @@ -29,13 +29,13 @@ @.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: @@ -50,12 +50,12 @@ 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 Index: test/Assembler/auto_upgrade_intrinsics.ll =================================================================== --- test/Assembler/auto_upgrade_intrinsics.ll +++ test/Assembler/auto_upgrade_intrinsics.ll @@ -101,6 +101,25 @@ 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) Index: test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll =================================================================== --- test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll +++ test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll @@ -1222,14 +1222,14 @@ 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 } Index: test/CodeGen/AArch64/stack_guard_remat.ll =================================================================== --- test/CodeGen/AArch64/stack_guard_remat.ll +++ test/CodeGen/AArch64/stack_guard_remat.ll @@ -29,20 +29,20 @@ 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" } Index: test/CodeGen/AMDGPU/captured-frame-index.ll =================================================================== --- test/CodeGen/AMDGPU/captured-frame-index.ll +++ test/CodeGen/AMDGPU/captured-frame-index.ll @@ -6,9 +6,9 @@ define 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 } @@ -196,8 +196,8 @@ 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 } Index: test/CodeGen/AMDGPU/promote-alloca-lifetime.ll =================================================================== --- test/CodeGen/AMDGPU/promote-alloca-lifetime.ll +++ test/CodeGen/AMDGPU/promote-alloca-lifetime.ll @@ -1,7 +1,7 @@ ; 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 @@ -11,11 +11,11 @@ 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 } Index: test/CodeGen/ARM/interval-update-remat.ll =================================================================== --- test/CodeGen/ARM/interval-update-remat.ll +++ test/CodeGen/ARM/interval-update-remat.ll @@ -109,7 +109,7 @@ } ; 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 @@ -130,7 +130,7 @@ 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*) Index: test/CodeGen/ARM/ldrd.ll =================================================================== --- test/CodeGen/ARM/ldrd.ll +++ test/CodeGen/ARM/ldrd.ll @@ -88,12 +88,12 @@ ; 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 } @@ -189,5 +189,5 @@ ret i32* %p1 } -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 Index: test/CodeGen/ARM/stack_guard_remat.ll =================================================================== --- test/CodeGen/ARM/stack_guard_remat.ll +++ test/CodeGen/ARM/stack_guard_remat.ll @@ -51,20 +51,20 @@ 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" } Index: test/CodeGen/BPF/warn-stack.ll =================================================================== --- test/CodeGen/BPF/warn-stack.ll +++ test/CodeGen/BPF/warn-stack.ll @@ -4,15 +4,15 @@ 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 @@ -20,17 +20,17 @@ 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 } Index: test/CodeGen/Hexagon/bit-rie.ll =================================================================== --- test/CodeGen/Hexagon/bit-rie.ll +++ test/CodeGen/Hexagon/bit-rie.ll @@ -187,8 +187,8 @@ 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 } Index: test/CodeGen/Hexagon/hwloop-loop1.ll =================================================================== --- test/CodeGen/Hexagon/hwloop-loop1.ll +++ test/CodeGen/Hexagon/hwloop-loop1.ll @@ -12,9 +12,9 @@ %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 @@ -56,11 +56,11 @@ 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 Index: test/CodeGen/Hexagon/memops-stack.ll =================================================================== --- test/CodeGen/Hexagon/memops-stack.ll +++ test/CodeGen/Hexagon/memops-stack.ll @@ -9,13 +9,13 @@ 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 } @@ -25,13 +25,13 @@ 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 } @@ -41,13 +41,13 @@ 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 } @@ -57,13 +57,13 @@ 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 } @@ -73,13 +73,13 @@ 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 } @@ -89,13 +89,13 @@ 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 } @@ -105,13 +105,13 @@ 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 } @@ -121,20 +121,20 @@ 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 } Index: test/CodeGen/Hexagon/opt-spill-volatile.ll =================================================================== --- test/CodeGen/Hexagon/opt-spill-volatile.ll +++ test/CodeGen/Hexagon/opt-spill-volatile.ll @@ -11,17 +11,17 @@ 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 Index: test/CodeGen/Hexagon/rdf-copy-undef2.ll =================================================================== --- test/CodeGen/Hexagon/rdf-copy-undef2.ll +++ test/CodeGen/Hexagon/rdf-copy-undef2.ll @@ -3,8 +3,8 @@ 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 Index: test/CodeGen/Hexagon/rdf-inline-asm-fixed.ll =================================================================== --- test/CodeGen/Hexagon/rdf-inline-asm-fixed.ll +++ test/CodeGen/Hexagon/rdf-inline-asm-fixed.ll @@ -13,18 +13,18 @@ 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 } Index: test/CodeGen/Hexagon/rdf-phi-up.ll =================================================================== --- test/CodeGen/Hexagon/rdf-phi-up.ll +++ test/CodeGen/Hexagon/rdf-phi-up.ll @@ -7,8 +7,8 @@ %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: @@ -32,7 +32,7 @@ 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 @@ -45,7 +45,7 @@ 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, Index: test/CodeGen/Hexagon/runtime-stkchk.ll =================================================================== --- test/CodeGen/Hexagon/runtime-stkchk.ll +++ test/CodeGen/Hexagon/runtime-stkchk.ll @@ -6,12 +6,12 @@ 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 } @@ -21,21 +21,21 @@ 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 } Index: test/CodeGen/Mips/stackcoloring.ll =================================================================== --- test/CodeGen/Mips/stackcoloring.ll +++ test/CodeGen/Mips/stackcoloring.ll @@ -11,7 +11,7 @@ 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 @@ -28,12 +28,12 @@ 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) Index: test/CodeGen/Mips/stchar.ll =================================================================== --- test/CodeGen/Mips/stchar.ll +++ test/CodeGen/Mips/stchar.ll @@ -34,7 +34,7 @@ ; 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 Index: test/CodeGen/NVPTX/bug22322.ll =================================================================== --- test/CodeGen/NVPTX/bug22322.ll +++ test/CodeGen/NVPTX/bug22322.ll @@ -17,7 +17,7 @@ %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 @@ -26,7 +26,7 @@ %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 @@ -46,10 +46,10 @@ 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 } Index: test/CodeGen/PowerPC/BreakableToken-reduced.ll =================================================================== --- test/CodeGen/PowerPC/BreakableToken-reduced.ll +++ test/CodeGen/PowerPC/BreakableToken-reduced.ll @@ -265,12 +265,12 @@ } ; 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 } Index: test/CodeGen/PowerPC/addi-licm.ll =================================================================== --- test/CodeGen/PowerPC/addi-licm.ll +++ test/CodeGen/PowerPC/addi-licm.ll @@ -9,9 +9,9 @@ %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 @@ -50,12 +50,12 @@ } ; 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 } Index: test/CodeGen/PowerPC/ctrloop-intrin.ll =================================================================== --- test/CodeGen/PowerPC/ctrloop-intrin.ll +++ test/CodeGen/PowerPC/ctrloop-intrin.ll @@ -17,10 +17,10 @@ @.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 @@ -36,7 +36,7 @@ %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 @@ -245,7 +245,7 @@ %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 @@ -272,7 +272,7 @@ %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 @@ -315,7 +315,7 @@ 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 } Index: test/CodeGen/PowerPC/lsa.ll =================================================================== --- test/CodeGen/PowerPC/lsa.ll +++ test/CodeGen/PowerPC/lsa.ll @@ -8,11 +8,11 @@ %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 @@ -28,16 +28,16 @@ ; 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 } Index: test/CodeGen/PowerPC/pr30451.ll =================================================================== --- test/CodeGen/PowerPC/pr30451.ll +++ test/CodeGen/PowerPC/pr30451.ll @@ -3,11 +3,11 @@ 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]+]], @@ -19,11 +19,11 @@ 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]+]], @@ -36,11 +36,11 @@ 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]+]], @@ -52,11 +52,11 @@ 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]+]], @@ -65,5 +65,5 @@ ; 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*) Index: test/CodeGen/PowerPC/swaps-le-4.ll =================================================================== --- test/CodeGen/PowerPC/swaps-le-4.ll +++ test/CodeGen/PowerPC/swaps-le-4.ll @@ -8,11 +8,11 @@ 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> , <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 } @@ -21,7 +21,7 @@ ; 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) Index: test/CodeGen/PowerPC/tail-dup-branch-to-fallthrough.ll =================================================================== --- test/CodeGen/PowerPC/tail-dup-branch-to-fallthrough.ll +++ test/CodeGen/PowerPC/tail-dup-branch-to-fallthrough.ll @@ -3,7 +3,7 @@ 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() @@ -54,11 +54,11 @@ 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 } Index: test/CodeGen/PowerPC/toc-load-sched-bug.ll =================================================================== --- test/CodeGen/PowerPC/toc-load-sched-bug.ll +++ test/CodeGen/PowerPC/toc-load-sched-bug.ll @@ -223,7 +223,7 @@ %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 @@ -237,7 +237,7 @@ 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 @@ -246,7 +246,7 @@ 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 @@ -260,7 +260,7 @@ 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 @@ -320,7 +320,7 @@ %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, std::allocator >::_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 @@ -332,11 +332,11 @@ 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 @@ -355,9 +355,9 @@ 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 @@ -372,11 +372,11 @@ 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 @@ -395,7 +395,7 @@ 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 @@ -438,10 +438,10 @@ } ; 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 Index: test/CodeGen/SystemZ/stack-guard.ll =================================================================== --- test/CodeGen/SystemZ/stack-guard.ll +++ test/CodeGen/SystemZ/stack-guard.ll @@ -17,19 +17,19 @@ 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 } Index: test/CodeGen/Thumb/PR17309.ll =================================================================== --- test/CodeGen/Thumb/PR17309.ll +++ test/CodeGen/Thumb/PR17309.ll @@ -11,9 +11,9 @@ 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 } @@ -24,9 +24,9 @@ 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 } @@ -37,9 +37,9 @@ 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 } @@ -47,8 +47,8 @@ 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" } Index: test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll =================================================================== --- test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll +++ test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll @@ -12,18 +12,18 @@ %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 Index: test/CodeGen/Thumb/stack_guard_remat.ll =================================================================== --- test/CodeGen/Thumb/stack_guard_remat.ll +++ test/CodeGen/Thumb/stack_guard_remat.ll @@ -27,20 +27,20 @@ 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" } Index: test/CodeGen/Thumb2/ifcvt-rescan-bug-2016-08-22.ll =================================================================== --- test/CodeGen/Thumb2/ifcvt-rescan-bug-2016-08-22.ll +++ test/CodeGen/Thumb2/ifcvt-rescan-bug-2016-08-22.ll @@ -3,7 +3,7 @@ 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 @@ -25,7 +25,7 @@ br label %3 ;