xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/debug-frame.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; ARM EHABI integrated test
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; This test case checks whether the ARM DWARF stack frame directives
4*9880d681SAndroid Build Coastguard Worker; are properly generated or not.
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; We have to check several cases:
7*9880d681SAndroid Build Coastguard Worker; (1) arm with -disable-fp-elim
8*9880d681SAndroid Build Coastguard Worker; (2) arm without -disable-fp-elim
9*9880d681SAndroid Build Coastguard Worker; (3) armv7 with -disable-fp-elim
10*9880d681SAndroid Build Coastguard Worker; (4) armv7 without -disable-fp-elim
11*9880d681SAndroid Build Coastguard Worker; (5) thumb with -disable-fp-elim
12*9880d681SAndroid Build Coastguard Worker; (6) thumb without -disable-fp-elim
13*9880d681SAndroid Build Coastguard Worker; (7) thumbv7 with -disable-fp-elim
14*9880d681SAndroid Build Coastguard Worker; (8) thumbv7 without -disable-fp-elim
15*9880d681SAndroid Build Coastguard Worker; (9) thumbv7 with -no-integrated-as
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple arm-unknown-linux-gnueabi \
18*9880d681SAndroid Build Coastguard Worker; RUN:     -disable-fp-elim -filetype=asm -o - %s \
19*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-FP
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple arm-unknown-linux-gnueabi \
22*9880d681SAndroid Build Coastguard Worker; RUN:     -filetype=asm -o - %s \
23*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-FP-ELIM
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple armv7-unknown-linux-gnueabi \
26*9880d681SAndroid Build Coastguard Worker; RUN:     -disable-fp-elim -filetype=asm -o - %s \
27*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-V7-FP
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple armv7-unknown-linux-gnueabi \
30*9880d681SAndroid Build Coastguard Worker; RUN:     -filetype=asm -o - %s \
31*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-V7-FP-ELIM
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple thumbv5-unknown-linux-gnueabi \
34*9880d681SAndroid Build Coastguard Worker; RUN:     -disable-fp-elim -filetype=asm -o - %s \
35*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-FP
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple thumbv5-unknown-linux-gnueabi \
38*9880d681SAndroid Build Coastguard Worker; RUN:     -filetype=asm -o - %s \
39*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-FP-ELIM
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \
42*9880d681SAndroid Build Coastguard Worker; RUN:     -disable-fp-elim -filetype=asm -o - %s \
43*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \
46*9880d681SAndroid Build Coastguard Worker; RUN:     -filetype=asm -o - %s \
47*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-ELIM
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple thumbv7-unknown-linux-gnueabi \
50*9880d681SAndroid Build Coastguard Worker; RUN:     -disable-fp-elim -no-integrated-as -filetype=asm -o - %s \
51*9880d681SAndroid Build Coastguard Worker; RUN:   | FileCheck %s --check-prefix=CHECK-THUMB-V7-FP-NOIAS
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
54*9880d681SAndroid Build Coastguard Worker; Test 1
55*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
56*9880d681SAndroid Build Coastguard Worker; This is the LLVM assembly generated from following C++ code:
57*9880d681SAndroid Build Coastguard Worker;
58*9880d681SAndroid Build Coastguard Worker;   extern void print(int, int, int, int, int);
59*9880d681SAndroid Build Coastguard Worker;   extern void print(double, double, double, double, double);
60*9880d681SAndroid Build Coastguard Worker;
61*9880d681SAndroid Build Coastguard Worker;   void test(int a, int b, int c, int d, int e,
62*9880d681SAndroid Build Coastguard Worker;             double m, double n, double p, double q, double r) {
63*9880d681SAndroid Build Coastguard Worker;     try {
64*9880d681SAndroid Build Coastguard Worker;       print(a, b, c, d, e);
65*9880d681SAndroid Build Coastguard Worker;     } catch (...) {
66*9880d681SAndroid Build Coastguard Worker;       print(m, n, p, q, r);
67*9880d681SAndroid Build Coastguard Worker;     }
68*9880d681SAndroid Build Coastguard Worker;   }
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdeclare void @_Z5printiiiii(i32, i32, i32, i32, i32)
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Workerdeclare void @_Z5printddddd(double, double, double, double, double)
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdefine void @_Z4testiiiiiddddd(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e,
75*9880d681SAndroid Build Coastguard Worker                               double %m, double %n, double %p,
76*9880d681SAndroid Build Coastguard Worker                               double %q, double %r) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
77*9880d681SAndroid Build Coastguard Workerentry:
78*9880d681SAndroid Build Coastguard Worker  invoke void @_Z5printiiiii(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e)
79*9880d681SAndroid Build Coastguard Worker          to label %try.cont unwind label %lpad
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Workerlpad:
82*9880d681SAndroid Build Coastguard Worker  %0 = landingpad { i8*, i32 }
83*9880d681SAndroid Build Coastguard Worker          catch i8* null
84*9880d681SAndroid Build Coastguard Worker  %1 = extractvalue { i8*, i32 } %0, 0
85*9880d681SAndroid Build Coastguard Worker  %2 = tail call i8* @__cxa_begin_catch(i8* %1)
86*9880d681SAndroid Build Coastguard Worker  invoke void @_Z5printddddd(double %m, double %n, double %p,
87*9880d681SAndroid Build Coastguard Worker                             double %q, double %r)
88*9880d681SAndroid Build Coastguard Worker          to label %invoke.cont2 unwind label %lpad1
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workerinvoke.cont2:
91*9880d681SAndroid Build Coastguard Worker  tail call void @__cxa_end_catch()
92*9880d681SAndroid Build Coastguard Worker  br label %try.cont
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workertry.cont:
95*9880d681SAndroid Build Coastguard Worker  ret void
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerlpad1:
98*9880d681SAndroid Build Coastguard Worker  %3 = landingpad { i8*, i32 }
99*9880d681SAndroid Build Coastguard Worker          cleanup
100*9880d681SAndroid Build Coastguard Worker  invoke void @__cxa_end_catch()
101*9880d681SAndroid Build Coastguard Worker          to label %eh.resume unwind label %terminate.lpad
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workereh.resume:
104*9880d681SAndroid Build Coastguard Worker  resume { i8*, i32 } %3
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerterminate.lpad:
107*9880d681SAndroid Build Coastguard Worker  %4 = landingpad { i8*, i32 }
108*9880d681SAndroid Build Coastguard Worker          catch i8* null
109*9880d681SAndroid Build Coastguard Worker  %5 = extractvalue { i8*, i32 } %4, 0
110*9880d681SAndroid Build Coastguard Worker  tail call void @__clang_call_terminate(i8* %5)
111*9880d681SAndroid Build Coastguard Worker  unreachable
112*9880d681SAndroid Build Coastguard Worker}
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Workerdeclare void @__clang_call_terminate(i8*)
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdeclare i32 @__gxx_personality_v0(...)
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdeclare i8* @__cxa_begin_catch(i8*)
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Workerdeclare void @__cxa_end_catch()
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdeclare void @_ZSt9terminatev()
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!0}
125*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!10, !11}
126*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!12}
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Worker!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
129*9880d681SAndroid Build Coastguard Worker!1 = !DIFile(filename: "exp.cpp", directory: "/tmp")
130*9880d681SAndroid Build Coastguard Worker!2 = !{}
131*9880d681SAndroid Build Coastguard Worker!4 = distinct !DISubprogram(name: "test", linkageName: "_Z4testiiiiiddddd", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
132*9880d681SAndroid Build Coastguard Worker!5 = !DIFile(filename: "exp.cpp", directory: "/tmp")
133*9880d681SAndroid Build Coastguard Worker!6 = !DISubroutineType(types: !7)
134*9880d681SAndroid Build Coastguard Worker!7 = !{null, !8, !8, !8, !8, !8, !9, !9, !9, !9, !9}
135*9880d681SAndroid Build Coastguard Worker!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
136*9880d681SAndroid Build Coastguard Worker!9 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)
137*9880d681SAndroid Build Coastguard Worker!10 = !{i32 2, !"Dwarf Version", i32 4}
138*9880d681SAndroid Build Coastguard Worker!11 = !{i32 1, !"Debug Info Version", i32 3}
139*9880d681SAndroid Build Coastguard Worker!12 = !{!"clang version 3.5 "}
140*9880d681SAndroid Build Coastguard Worker!13 = !DILocalVariable(name: "a", line: 4, arg: 1, scope: !4, file: !5, type: !8)
141*9880d681SAndroid Build Coastguard Worker!14 = !DILocation(line: 4, scope: !4)
142*9880d681SAndroid Build Coastguard Worker!15 = !DILocalVariable(name: "b", line: 4, arg: 2, scope: !4, file: !5, type: !8)
143*9880d681SAndroid Build Coastguard Worker!16 = !DILocalVariable(name: "c", line: 4, arg: 3, scope: !4, file: !5, type: !8)
144*9880d681SAndroid Build Coastguard Worker!17 = !DILocalVariable(name: "d", line: 4, arg: 4, scope: !4, file: !5, type: !8)
145*9880d681SAndroid Build Coastguard Worker!18 = !DILocalVariable(name: "e", line: 4, arg: 5, scope: !4, file: !5, type: !8)
146*9880d681SAndroid Build Coastguard Worker!19 = !DILocalVariable(name: "m", line: 5, arg: 6, scope: !4, file: !5, type: !9)
147*9880d681SAndroid Build Coastguard Worker!20 = !DILocation(line: 5, scope: !4)
148*9880d681SAndroid Build Coastguard Worker!21 = !DILocalVariable(name: "n", line: 5, arg: 7, scope: !4, file: !5, type: !9)
149*9880d681SAndroid Build Coastguard Worker!22 = !DILocalVariable(name: "p", line: 5, arg: 8, scope: !4, file: !5, type: !9)
150*9880d681SAndroid Build Coastguard Worker!23 = !DILocalVariable(name: "q", line: 5, arg: 9, scope: !4, file: !5, type: !9)
151*9880d681SAndroid Build Coastguard Worker!24 = !DILocalVariable(name: "r", line: 5, arg: 10, scope: !4, file: !5, type: !9)
152*9880d681SAndroid Build Coastguard Worker!25 = !DILocation(line: 7, scope: !26)
153*9880d681SAndroid Build Coastguard Worker!26 = distinct !DILexicalBlock(line: 6, column: 0, file: !1, scope: !4)
154*9880d681SAndroid Build Coastguard Worker!27 = !DILocation(line: 8, scope: !26)
155*9880d681SAndroid Build Coastguard Worker!28 = !DILocation(line: 11, scope: !26)
156*9880d681SAndroid Build Coastguard Worker!29 = !DILocation(line: 9, scope: !30)
157*9880d681SAndroid Build Coastguard Worker!30 = distinct !DILexicalBlock(line: 8, column: 0, file: !1, scope: !4)
158*9880d681SAndroid Build Coastguard Worker!31 = !DILocation(line: 10, scope: !30)
159*9880d681SAndroid Build Coastguard Worker!32 = !DILocation(line: 10, scope: !4)
160*9880d681SAndroid Build Coastguard Worker!33 = !DILocation(line: 11, scope: !4)
161*9880d681SAndroid Build Coastguard Worker!34 = !DILocation(line: 11, scope: !30)
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Worker; CHECK-FP-LABEL: _Z4testiiiiiddddd:
164*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_startproc
165*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   push   {r4, r5, r6, r7, r8, r9, r10, r11, lr}
166*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa_offset 36
167*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset lr, -4
168*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r11, -8
169*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r10, -12
170*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r9, -16
171*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r8, -20
172*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r7, -24
173*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r6, -28
174*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r5, -32
175*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r4, -36
176*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   add    r11, sp, #28
177*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa r11, 8
178*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   sub    sp, sp, #44
179*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_endproc
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM-LABEL: _Z4testiiiiiddddd:
182*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_startproc
183*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   push  {r4, r5, r6, r7, r8, r9, r10, r11, lr}
184*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_def_cfa_offset 36
185*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset lr, -4
186*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r11, -8
187*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r10, -12
188*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r9, -16
189*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r8, -20
190*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r7, -24
191*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r6, -28
192*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r5, -32
193*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r4, -36
194*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   sub   sp, sp, #36
195*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_def_cfa_offset 72
196*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_endproc
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-LABEL: _Z4testiiiiiddddd:
199*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_startproc
200*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   push   {r4, r10, r11, lr}
201*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa_offset 16
202*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset lr, -4
203*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r11, -8
204*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r10, -12
205*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r4, -16
206*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   add    r11, sp, #8
207*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa r11, 8
208*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   vpush  {d8, d9, d10, d11, d12}
209*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset d12, -24
210*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset d11, -32
211*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset d10, -40
212*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset d9, -48
213*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset d8, -56
214*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   sub    sp, sp, #24
215*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_endproc
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd:
218*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_startproc
219*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   push   {r4, lr}
220*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8
221*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4
222*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset r4, -8
223*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12}
224*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 48
225*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset d12, -16
226*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset d11, -24
227*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset d10, -32
228*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset d9, -40
229*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset d8, -48
230*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   sub    sp, sp, #24
231*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 72
232*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_endproc
233*9880d681SAndroid Build Coastguard Worker
234*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-LABEL: _Z4testiiiiiddddd:
235*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_startproc
236*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   push   {r4, r5, r6, r7, lr}
237*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa_offset 20
238*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset lr, -4
239*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r7, -8
240*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r6, -12
241*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r5, -16
242*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r4, -20
243*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   add    r7, sp, #12
244*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8
245*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   sub    sp, #60
246*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_endproc
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM-LABEL: _Z4testiiiiiddddd:
249*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_startproc
250*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   push   {r4, r5, r6, r7, lr}
251*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 20
252*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4
253*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8
254*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r6, -12
255*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -16
256*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -20
257*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   sub    sp, #60
258*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 80
259*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_endproc
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-LABEL: _Z4testiiiiiddddd:
262*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_startproc
263*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   push   {r4, r6, r7, lr}
264*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 16
265*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4
266*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8
267*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r6, -12
268*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r4, -16
269*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   add    r7, sp, #8
270*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa r7, 8
271*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   vpush  {d8, d9, d10, d11, d12}
272*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset d12, -24
273*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset d11, -32
274*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset d10, -40
275*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset d9, -48
276*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset d8, -56
277*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   sub    sp, #24
278*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_endproc
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM-LABEL: _Z4testiiiiiddddd:
281*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc
282*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   push   {r4, lr}
283*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8
284*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4
285*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r4, -8
286*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   vpush  {d8, d9, d10, d11, d12}
287*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 48
288*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d12, -16
289*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d11, -24
290*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d10, -32
291*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d9, -40
292*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset d8, -48
293*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   sub    sp, #24
294*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 72
295*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc
296*9880d681SAndroid Build Coastguard Worker
297*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS-LABEL: _Z4testiiiiiddddd:
298*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_startproc
299*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   push   {r4, r6, r7, lr}
300*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_def_cfa_offset 16
301*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 14, -4
302*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 7, -8
303*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 6, -12
304*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 4, -16
305*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   add    r7, sp, #8
306*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_def_cfa 7, 8
307*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   vpush  {d8, d9, d10, d11, d12}
308*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 268, -24
309*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 267, -32
310*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 266, -40
311*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 265, -48
312*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_offset 264, -56
313*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   sub    sp, #24
314*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOIAS:   .cfi_endproc
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
317*9880d681SAndroid Build Coastguard Worker; Test 2
318*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Workerdeclare void @throw_exception_2()
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Workerdefine void @test2() {
323*9880d681SAndroid Build Coastguard Workerentry:
324*9880d681SAndroid Build Coastguard Worker  call void @throw_exception_2()
325*9880d681SAndroid Build Coastguard Worker  ret void
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Worker; CHECK-FP-LABEL: test2:
329*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_startproc
330*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   push   {r11, lr}
331*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa_offset 8
332*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset lr, -4
333*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r11, -8
334*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   mov    r11, sp
335*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa_register r11
336*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   pop    {r11, lr}
337*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   mov    pc, lr
338*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_endproc
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM-LABEL: test2:
341*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_startproc
342*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   push  {r11, lr}
343*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_def_cfa_offset 8
344*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset lr, -4
345*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r11, -8
346*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   pop   {r11, lr}
347*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   mov   pc, lr
348*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_endproc
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-LABEL: test2:
351*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_startproc
352*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   push   {r11, lr}
353*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa_offset 8
354*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset lr, -4
355*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r11, -8
356*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   mov    r11, sp
357*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa_register r11
358*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   pop    {r11, pc}
359*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_endproc
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM-LABEL: test2:
362*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_startproc
363*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   push  {r11, lr}
364*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 8
365*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4
366*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8
367*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   pop   {r11, pc}
368*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_endproc
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-LABEL: test2:
371*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_startproc
372*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   push   {r7, lr}
373*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa_offset 8
374*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset lr, -4
375*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r7, -8
376*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   add    r7, sp, #0
377*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa_register r7
378*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   pop    {r7, pc}
379*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_endproc
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM-LABEL: test2:
382*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_startproc
383*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   push  {r7, lr}
384*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 8
385*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4
386*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8
387*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   pop   {r7, pc}
388*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_endproc
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-LABEL: test2:
391*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_startproc
392*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   push   {r7, lr}
393*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 8
394*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4
395*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8
396*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   mov    r7, sp
397*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa_register r7
398*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   pop    {r7, pc}
399*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_endproc
400*9880d681SAndroid Build Coastguard Worker
401*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM-LABEL: test2:
402*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc
403*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   push  {r7, lr}
404*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 8
405*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4
406*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r7, -8
407*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   pop   {r7, pc}
408*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc
409*9880d681SAndroid Build Coastguard Worker
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
412*9880d681SAndroid Build Coastguard Worker; Test 3
413*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
414*9880d681SAndroid Build Coastguard Worker
415*9880d681SAndroid Build Coastguard Workerdeclare void @throw_exception_3(i32)
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdefine i32 @test3(i32 %a, i32 %b, i32 %c, i32 %d,
418*9880d681SAndroid Build Coastguard Worker                  i32 %e, i32 %f, i32 %g, i32 %h) {
419*9880d681SAndroid Build Coastguard Workerentry:
420*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %b, %a
421*9880d681SAndroid Build Coastguard Worker  %add1 = add nsw i32 %add, %c
422*9880d681SAndroid Build Coastguard Worker  %add2 = add nsw i32 %add1, %d
423*9880d681SAndroid Build Coastguard Worker  tail call void @throw_exception_3(i32 %add2)
424*9880d681SAndroid Build Coastguard Worker  %add3 = add nsw i32 %f, %e
425*9880d681SAndroid Build Coastguard Worker  %add4 = add nsw i32 %add3, %g
426*9880d681SAndroid Build Coastguard Worker  %add5 = add nsw i32 %add4, %h
427*9880d681SAndroid Build Coastguard Worker  tail call void @throw_exception_3(i32 %add5)
428*9880d681SAndroid Build Coastguard Worker  %add6 = add nsw i32 %add5, %add2
429*9880d681SAndroid Build Coastguard Worker  ret i32 %add6
430*9880d681SAndroid Build Coastguard Worker}
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Worker; CHECK-FP-LABEL: test3:
433*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_startproc
434*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   push   {r4, r5, r11, lr}
435*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa_offset 16
436*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset lr, -4
437*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r11, -8
438*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r5, -12
439*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_offset r4, -16
440*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   add    r11, sp, #8
441*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_def_cfa r11, 8
442*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   pop    {r4, r5, r11, lr}
443*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   mov    pc, lr
444*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   .cfi_endproc
445*9880d681SAndroid Build Coastguard Worker
446*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM-LABEL: test3:
447*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_startproc
448*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   push  {r4, r5, r11, lr}
449*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_def_cfa_offset 16
450*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset lr, -4
451*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r11, -8
452*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r5, -12
453*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_offset r4, -16
454*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   pop   {r4, r5, r11, lr}
455*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   mov   pc, lr
456*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   .cfi_endproc
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-LABEL: test3:
459*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_startproc
460*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   push   {r4, r5, r11, lr}
461*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa_offset 16
462*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset lr, -4
463*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r11, -8
464*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r5, -12
465*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_offset r4, -16
466*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   add    r11, sp, #8
467*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_def_cfa r11, 8
468*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   pop    {r4, r5, r11, pc}
469*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   .cfi_endproc
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM-LABEL: test3:
472*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_startproc
473*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   push  {r4, r5, r11, lr}
474*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_def_cfa_offset 16
475*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset lr, -4
476*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset r11, -8
477*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset r5, -12
478*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_offset r4, -16
479*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   pop   {r4, r5, r11, pc}
480*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   .cfi_endproc
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-LABEL: test3:
483*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_startproc
484*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   push   {r4, r5, r7, lr}
485*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa_offset 16
486*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset lr, -4
487*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r7, -8
488*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r5, -12
489*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_offset r4, -16
490*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   add    r7, sp, #8
491*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_def_cfa r7, 8
492*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   pop    {r4, r5, r7, pc}
493*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   .cfi_endproc
494*9880d681SAndroid Build Coastguard Worker
495*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM-LABEL: test3:
496*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_startproc
497*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   push  {r4, r5, r7, lr}
498*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_def_cfa_offset 16
499*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset lr, -4
500*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r7, -8
501*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r5, -12
502*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_offset r4, -16
503*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   pop   {r4, r5, r7, pc}
504*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   .cfi_endproc
505*9880d681SAndroid Build Coastguard Worker
506*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-LABEL: test3:
507*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_startproc
508*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   push   {r4, r5, r7, lr}
509*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa_offset 16
510*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset lr, -4
511*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r7, -8
512*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r5, -12
513*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_offset r4, -16
514*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   add    r7, sp, #8
515*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_def_cfa r7, 8
516*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   pop    {r4, r5, r7, pc}
517*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   .cfi_endproc
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM-LABEL: test3:
520*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_startproc
521*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   push  {r4, r5, r7, lr}
522*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_def_cfa_offset 16
523*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset lr, -4
524*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r7, -8
525*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r5, -12
526*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_offset r4, -16
527*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   pop   {r4, r5, r7, pc}
528*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   .cfi_endproc
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Worker
531*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
532*9880d681SAndroid Build Coastguard Worker; Test 4
533*9880d681SAndroid Build Coastguard Worker;-------------------------------------------------------------------------------
534*9880d681SAndroid Build Coastguard Worker
535*9880d681SAndroid Build Coastguard Workerdefine void @test4() nounwind {
536*9880d681SAndroid Build Coastguard Workerentry:
537*9880d681SAndroid Build Coastguard Worker  ret void
538*9880d681SAndroid Build Coastguard Worker}
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Worker; CHECK-FP-LABEL: test4:
541*9880d681SAndroid Build Coastguard Worker; CHECK-FP:   mov pc, lr
542*9880d681SAndroid Build Coastguard Worker; CHECK-FP-NOT:   .cfi_def_cfa_offset
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM-LABEL: test4:
545*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM:   mov pc, lr
546*9880d681SAndroid Build Coastguard Worker; CHECK-FP-ELIM-NOT:   .cfi_def_cfa_offset
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-LABEL: test4:
549*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP:   bx lr
550*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-NOT:   .cfi_def_cfa_offset
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM-LABEL: test4:
553*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM:   bx lr
554*9880d681SAndroid Build Coastguard Worker; CHECK-V7-FP-ELIM-NOT:   .cfi_def_cfa_offset
555*9880d681SAndroid Build Coastguard Worker
556*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-LABEL: test4:
557*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP:   bx lr
558*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-NOT:   .cfi_def_cfa_offset
559*9880d681SAndroid Build Coastguard Worker
560*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM-LABEL: test4:
561*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM:   bx lr
562*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-FP-ELIM-NOT:   .cfi_def_cfa_offset
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-LABEL: test4:
565*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP:   bx lr
566*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-NOT:   .cfi_def_cfa_offset
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM-LABEL: test4:
569*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM:   bx lr
570*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB-V7-FP-ELIM-NOT:   .cfi_def_cfa_offset
571*9880d681SAndroid Build Coastguard Worker
572