Switch lowering: extract jump tables and bit tests before building binary tree (PR22262)
[oota-llvm.git] / test / MC / ARM / eh-directive-multiple-offsets.s
1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2 @ RUN:   | llvm-readobj -s -sd | FileCheck %s
3
4 @ Check for different combination of .setfp, .pad, .save and .vsave.
5
6         .syntax unified
7
8 @-------------------------------------------------------------------------------
9 @ TEST1: Check .pad before .setfp directive.
10 @-------------------------------------------------------------------------------
11         .section        .TEST1
12         .globl  func1
13         .type   func1,%function
14         .align  2
15         .fnstart
16 func1:
17         .pad    #12
18         sub     sp, sp, #12
19         .setfp  fp, sp, #8
20         add     fp, sp, #8
21         sub     sp, fp, #8
22         add     sp, sp, #12
23         bx      lr
24         .personality    __gxx_personality_v0
25         .handlerdata
26         .fnend
27
28 @ CHECK: Section {
29 @ CHECK:   Name: .ARM.extab.TEST1
30 @ CHECK:   SectionData (
31 @ CHECK:     0000: 00000000 B0009B00                    |........|
32 @ CHECK:   )
33 @ CHECK: }
34
35
36
37 @-------------------------------------------------------------------------------
38 @ TEST2: Check .pad after .setfp directive.
39 @-------------------------------------------------------------------------------
40         .section        .TEST2
41         .globl  func2
42         .type   func2,%function
43         .align  2
44         .fnstart
45 func2:
46         .setfp  fp, sp, #8
47         add     fp, sp, #8
48         .pad    #12
49         sub     sp, sp, #12
50         add     sp, sp, #12
51         sub     sp, fp, #8
52         bx      lr
53         .personality    __gxx_personality_v0
54         .handlerdata
55         .fnend
56
57 @ CHECK: Section {
58 @ CHECK:   Name: .ARM.extab.TEST2
59 @ CHECK:   SectionData (
60 @ CHECK:     0000: 00000000 B0419B00                    |.....A..|
61 @ CHECK:   )
62 @ CHECK: }
63
64
65
66 @-------------------------------------------------------------------------------
67 @ TEST3: Check .setfp, .pad, .setfp directive.
68 @-------------------------------------------------------------------------------
69         .section        .TEST3
70         .globl  func3
71         .type   func3,%function
72         .align  2
73         .fnstart
74 func3:
75         @ prologue:
76         .setfp  fp, sp, #4
77         add     fp, sp, #4
78         .pad    #8
79         sub     sp, sp, #8
80         .setfp  fp, sp, #4
81         add     fp, sp, #4
82
83         @ epilogue:
84         add     sp, fp, #4
85         bx      lr
86         .personality    __gxx_personality_v0
87         .handlerdata
88         .fnend
89
90 @ CHECK: Section {
91 @ CHECK:   Name: .ARM.extab.TEST3
92 @ CHECK:   SectionData (
93 @ CHECK:     0000: 00000000 B0009B00                    |........|
94 @ CHECK:   )
95 @ CHECK: }
96
97
98
99 @-------------------------------------------------------------------------------
100 @ TEST4: Check ".setfp fp, sp" and ".setfp fp, fp" directive.
101 @-------------------------------------------------------------------------------
102         .section        .TEST4
103         .globl  func4
104         .type   func4,%function
105         .align  2
106         .fnstart
107 func4:
108         @ prologue:
109         .setfp  fp, sp, #8
110         add     fp, sp, #8
111         .setfp  fp, fp, #8
112         add     fp, fp, #8
113
114         @ epilogue:
115         sub     sp, fp, #16
116         bx      lr
117         .personality    __gxx_personality_v0
118         .handlerdata
119         .fnend
120
121 @ CHECK: Section {
122 @ CHECK:   Name: .ARM.extab.TEST4
123 @ CHECK:   SectionData (
124 @ CHECK:     0000: 00000000 B0439B00                    |.....C..|
125 @ CHECK:   )
126 @ CHECK: }
127
128
129
130 @-------------------------------------------------------------------------------
131 @ TEST5: Check .setfp, .save, .setfp directive.
132 @-------------------------------------------------------------------------------
133         .section        .TEST5
134         .globl  func5
135         .type   func5,%function
136         .align  2
137         .fnstart
138 func5:
139         @ prologue:
140         .setfp  fp, sp, #16
141         add     fp, sp, #16
142         .save   {r4, r5, r6, r7, r8}
143         push    {r4, r5, r6, r7, r8}
144         .pad    #8
145         add     sp, sp, #8
146         .pad    #8
147         sub     sp, sp, #8
148         .save   {r9, r10}
149         push    {r9, r10}
150         .setfp  fp, sp, #24
151         add     fp, sp, #24
152
153         @ epilogue:
154         sub     sp, fp, #24
155         pop     {r9, r10}
156         add     sp, sp, #16
157         pop     {r4, r5, r6, r7, r8}
158         bx      lr
159         .personality    __gxx_personality_v0
160         .handlerdata
161         .fnend
162
163 @ CHECK: Section {
164 @ CHECK:   Name: .ARM.extab.TEST5
165 @ CHECK:   SectionData (
166 @ CHECK:     0000: 00000000 80459B01 B0A40360           |.....E.....`|
167 @ CHECK:   )
168 @ CHECK: }