xref: /llvm-project/llvm/test/CodeGen/ARM/debug-frame-large-stack.ll (revision 571f97bd9055738e88c982564c06ba6d48ac7f9f)
1; RUN: llc -filetype=asm -o - < %s -mtriple arm-arm-none-eabi -disable-fp-elim| FileCheck %s --check-prefix=CHECK-ARM
2; RUN: llc -filetype=asm -o - < %s -mtriple arm-arm-none-eabi | FileCheck %s --check-prefix=CHECK-ARM-FP-ELIM
3
4define void @test1() {
5    %tmp = alloca [ 64 x i32 ] , align 4
6    ret void
7}
8
9!llvm.dbg.cu = !{!0}
10!llvm.module.flags = !{!8, !9}
11!llvm.ident = !{!10}
12
13!0 = metadata !{metadata !"0x11\0012\00clang version 3.5 \000\00\000\00\000", metadata !1, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [/tmp/large.c] [DW_LANG_C99]
14!1 = metadata !{metadata !"large.c", metadata !"/tmp"}
15!2 = metadata !{}
16!3 = metadata !{metadata !4}
17!4 = metadata !{metadata !"0x2e\00test1\00test1\00\001\000\001\000\006\000\000\001", metadata !1, metadata !5, metadata !6, null, void ()* @test1, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 1] [def] [test1]
18!5 = metadata !{metadata !"0x29", metadata !1}          ; [ DW_TAG_file_type ] [/tmp/large.c]
19!6 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
20!7 = metadata !{null}
21!8 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
22!9 = metadata !{i32 1, metadata !"Debug Info Version", i32 2}
23!10 = metadata !{metadata !"clang version 3.5 "}
24!11 = metadata !{i32 2, i32 0, metadata !4, null}
25
26; CHECK-ARM-LABEL: test1:
27; CHECK-ARM: .cfi_startproc
28; CHECK-ARM: sub    sp, sp, #256
29; CHECK-ARM: .cfi_endproc
30
31; CHECK-ARM-FP-ELIM-LABEL: test1:
32; CHECK-ARM-FP-ELIM: .cfi_startproc
33; CHECK-ARM-FP-ELIM: sub    sp, sp, #256
34; CHECK-ARM-FP-ELIM: .cfi_endproc
35
36define void @test2() {
37    %tmp = alloca [ 4168 x i8 ] , align 4
38    ret void
39}
40
41; CHECK-ARM-LABEL: test2:
42; CHECK-ARM: .cfi_startproc
43; CHECK-ARM: push    {r4, r5}
44; CHECK-ARM: .cfi_def_cfa_offset 8
45; CHECK-ARM: .cfi_offset r5, -4
46; CHECK-ARM: .cfi_offset r4, -8
47; CHECK-ARM: sub    sp, sp, #72
48; CHECK-ARM: sub    sp, sp, #4096
49; CHECK-ARM: .cfi_def_cfa_offset 4176
50; CHECK-ARM: .cfi_endproc
51
52; CHECK-ARM-FP_ELIM-LABEL: test2:
53; CHECK-ARM-FP_ELIM: .cfi_startproc
54; CHECK-ARM-FP_ELIM: push    {r4, r5}
55; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 8
56; CHECK-ARM-FP_ELIM: .cfi_offset 54, -4
57; CHECK-ARM-FP_ELIM: .cfi_offset r4, -8
58; CHECK-ARM-FP_ELIM: sub    sp, sp, #72
59; CHECK-ARM-FP_ELIM: sub    sp, sp, #4096
60; CHECK-ARM-FP_ELIM: .cfi_def_cfa_offset 4176
61; CHECK-ARM-FP_ELIM: .cfi_endproc
62
63define i32 @test3() {
64	%retval = alloca i32, align 4
65	%tmp = alloca i32, align 4
66	%a = alloca [805306369 x i8], align 16
67	store i32 0, i32* %tmp
68	%tmp1 = load i32* %tmp
69        ret i32 %tmp1
70}
71
72; CHECK-ARM-LABEL: test3:
73; CHECK-ARM: .cfi_startproc
74; CHECK-ARM: push    {r4, r5, r11}
75; CHECK-ARM: .cfi_def_cfa_offset 12
76; CHECK-ARM: .cfi_offset r11, -4
77; CHECK-ARM: .cfi_offset r5, -8
78; CHECK-ARM: .cfi_offset r4, -12
79; CHECK-ARM: add    r11, sp, #8
80; CHECK-ARM: .cfi_def_cfa r11, 4
81; CHECK-ARM: sub    sp, sp, #20
82; CHECK-ARM: sub    sp, sp, #805306368
83; CHECK-ARM: bic    sp, sp, #15
84; CHECK-ARM: .cfi_endproc
85
86; CHECK-ARM-FP-ELIM-LABEL: test3:
87; CHECK-ARM-FP-ELIM: .cfi_startproc
88; CHECK-ARM-FP-ELIM: push    {r4, r5, r11}
89; CHECK-ARM-FP-ELIM: .cfi_def_cfa_offset 12
90; CHECK-ARM-FP-ELIM: .cfi_offset r11, -4
91; CHECK-ARM-FP-ELIM: .cfi_offset r5, -8
92; CHECK-ARM-FP-ELIM: .cfi_offset r4, -12
93; CHECK-ARM-FP-ELIM: add    r11, sp, #8
94; CHECK-ARM-FP-ELIM: .cfi_def_cfa r11, 4
95; CHECK-ARM-FP-ELIM: sub    sp, sp, #20
96; CHECK-ARM-FP-ELIM: sub    sp, sp, #805306368
97; CHECK-ARM-FP-ELIM: bic    sp, sp, #15
98; CHECK-ARM-FP-ELIM: .cfi_endproc
99
100