Revert "Revert "DI: Fold constant arguments into a single MDString""
[oota-llvm.git] / test / MC / ARM / eh-directive-integrated-test.s
1 @ Integrated test for ARM unwind directive parser and assembler.
2
3 @ This is a simplified real world test case generated from this C++ code
4 @ (with and without -fomit-frame-pointer)
5 @
6 @   extern void print(int, int, int, int, int);
7 @   extern void print(double, double, double, double, double);
8 @
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 @   }
17 @
18 @ This test case should check the unwind opcode to adjust the opcode and
19 @ restore the general-purpose and VFP registers.
20
21
22 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
23 @ RUN:   | llvm-readobj -s -sd | FileCheck %s
24
25
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
53
54 @ CHECK: Section {
55 @ CHECK:   Name: .ARM.extab.TEST1
56 @ CHECK:   SectionData (
57 @ CHECK:     0000: 00000000 C94A9B01 B0818484           |.....J......|
58 @ CHECK:   )
59 @ CHECK: }
60
61
62
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
87
88 @ CHECK: Section {
89 @ CHECK:   Name: .ARM.extab.TEST2
90 @ CHECK:   SectionData (
91 @ CHECK:     0000: 00000000 84C90501 B0B0B0A8           |............|
92 @ CHECK:   )
93 @ CHECK: }