1; RUN: llc -mtriple=x86_64-unknown-linux-gnu -o - %s | FileCheck %s 2 3; A lifetime end intrinsic should not prevent a call from being tail call 4; optimized. 5 6define void @foobar() { 7; CHECK-LABEL: foobar 8; CHECK: pushq %rax 9; CHECK: leaq 4(%rsp), %rdi 10; CHECK: callq foo 11; CHECK: popq %rax 12; CHECK: jmp bar 13entry: 14 %i = alloca i32 15 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i) 16 call void @foo(ptr nonnull %i) 17 tail call void @bar() 18 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i) 19 ret void 20} 21 22declare void @foo(ptr nocapture %p) 23declare void @bar() 24 25declare void @llvm.lifetime.start.p0(i64, ptr nocapture) 26declare void @llvm.lifetime.end.p0(i64, ptr nocapture) 27