[llvm-readobj] - Simplify stack-sizes.test test case.
[llvm-complete.git] / test / MC / ARM / eh-directive-integrated-test.s
blobd69d43a26250f0de48c0f226fa30f3d2c3e84272
1 @ Integrated test for ARM unwind directive parser and assembler.
3 @ This is a simplified real world test case generated from this C++ code
4 @ (with and without -fomit-frame-pointer)
6 @ extern void print(int, int, int, int, int);
7 @ extern void print(double, double, double, double, double);
9 @ void test(int a, int b, int c, int d, int e,
10 @ double m, double n, double p, double q, double r) {
11 @ try {
12 @ print(a, b, c, d, e);
13 @ } catch (...) {
14 @ print(m, n, p, q, r);
15 @ }
16 @ }
18 @ This test case should check the unwind opcode to adjust the opcode and
19 @ restore the general-purpose and VFP registers.
22 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
23 @ RUN: | llvm-readobj -S --sd | FileCheck %s
26 @-------------------------------------------------------------------------------
27 @ Assembly without frame pointer elimination
28 @-------------------------------------------------------------------------------
29 .syntax unified
30 .section .TEST1
31 .globl func1
32 .align 2
33 .type func1,%function
34 func1:
35 .fnstart
36 .save {r4, r11, lr}
37 push {r4, r11, lr}
38 .setfp r11, sp, #4
39 add r11, sp, #4
40 .vsave {d8, d9, d10, d11, d12}
41 vpush {d8, d9, d10, d11, d12}
42 .pad #28
43 sub sp, sp, #28
44 sub sp, r11, #44
45 vpop {d8, d9, d10, d11, d12}
46 pop {r4, r11, pc}
47 .Ltmp1:
48 .size func1, .Ltmp1-func1
49 .globl __gxx_personality_v0
50 .personality __gxx_personality_v0
51 .handlerdata
52 .fnend
54 @ CHECK: Section {
55 @ CHECK: Name: .ARM.extab.TEST1
56 @ CHECK: SectionData (
57 @ CHECK: 0000: 00000000 C94A9B01 B0818484 |.....J......|
58 @ CHECK: )
59 @ CHECK: }
63 @-------------------------------------------------------------------------------
64 @ Assembly with frame pointer elimination
65 @-------------------------------------------------------------------------------
66 .section .TEST2
67 .globl func2
68 .align 2
69 .type func2,%function
70 func2:
71 .fnstart
72 .save {r4, lr}
73 push {r4, lr}
74 .vsave {d8, d9, d10, d11, d12}
75 vpush {d8, d9, d10, d11, d12}
76 .pad #24
77 sub sp, sp, #24
78 add sp, sp, #24
79 vpop {d8, d9, d10, d11, d12}
80 pop {r4, pc}
81 .Ltmp2:
82 .size func2, .Ltmp2-func2
83 .globl __gxx_personality_v0
84 .personality __gxx_personality_v0
85 .handlerdata
86 .fnend
88 @ CHECK: Section {
89 @ CHECK: Name: .ARM.extab.TEST2
90 @ CHECK: SectionData (
91 @ CHECK: 0000: 00000000 84C90501 B0B0B0A8 |............|
92 @ CHECK: )
93 @ CHECK: }