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
5 %tmp = alloca [ 64 x i32 ] , align 4
10 !llvm.module.flags = !{!8, !9}
13 !0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !""} ; [ DW_TAG_compile_unit ] [/tmp/large.c] [DW_LANG_C99]
14 !1 = metadata !{metadata !"large.c", metadata !"/tmp"}
16 !3 = metadata !{metadata !4}
17 !4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"test1", metadata !"test1", metadata !"", i32 1, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 0, i1 false, void ()* @test1, null, null, metadata !2, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [test1]
18 !5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/tmp/large.c]
19 !6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
21 !8 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
22 !9 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
23 !10 = metadata !{metadata !"clang version 3.5 "}
24 !11 = metadata !{i32 2, i32 0, metadata !4, null}
26 ; CHECK-ARM-LABEL: test1:
27 ; CHECK-ARM: .cfi_startproc
28 ; CHECK-ARM: sub sp, sp, #256
29 ; CHECK-ARM: .cfi_endproc
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
36 define void @test2() {
37 %tmp = alloca [ 4168 x i8 ] , align 4
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
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
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
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
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