xref: /llvm-project/llvm/test/CodeGen/X86/tailcc-dwarf.ll (revision 6e83c0a1cbfdb0c0f13c282312c47c7945970f55)
1; RUN: llc -mtriple=x86_64-unknown-linux-gnu -O0 --frame-pointer=non-leaf %s -o - | FileCheck %s
2
3%block = type { %blockheader, [0 x ptr] }
4%blockheader = type { i64 }
5
6define void @scanStackRoots(i32) {
7  ret void
8}
9
10define i32 @main(i32 %argc, ptr %argv) {
11entry:
12  %0 = call tailcc ptr @apply_rule_6870(ptr null, ptr null)
13  ret i32 0
14}
15
16define internal tailcc ptr @apply_rule_6870(ptr %0, ptr %1) {
17entry:
18  %2 = tail call tailcc ptr @sender12(ptr %0, ptr %1)
19  ret ptr null
20}
21
22define internal tailcc ptr @sender12(ptr %0, ptr %1) {
23; CHECK-LABEL: sender12:
24; CHECK: .cfi_startproc
25; CHECK: subq $8160, %rsp
26; CHECK: pushq %rbp
27; CHECK: .cfi_def_cfa_offset 8176
28; CHECK: .cfi_offset %rbp, -8176
29entry:
30  %a = alloca [1024 x i32]
31  %b = load [1024 x i32], ptr %a
32  call void @scanStackRoots(i32 1)
33  %2 = tail call tailcc ptr @apply_rule_6300(ptr %0, ptr %1, [1024 x i32] %b)
34  ret ptr %2
35}
36
37define internal tailcc ptr @apply_rule_6300(ptr %0, ptr %1, [1024 x i32] %2) {
38entry:
39  %3 = tail call tailcc ptr @sender4(ptr %0, ptr %1)
40  ret ptr %3
41}
42
43define internal tailcc ptr @sender4(ptr %0, ptr %1) {
44entry:
45  call void @scanStackRoots(i32 2)
46  ret ptr null
47}
48