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
) {
12 @ print
(a, b, c
, d
, e
);
14 @ print
(m
, n
, p
, q
, r
);
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 @
-------------------------------------------------------------------------------
40 .vsave {d8, d9, d10, d11, d12}
41 vpush
{d8
, d9
, d10
, d11
, d12
}
45 vpop
{d8
, d9
, d10
, d11
, d12
}
48 .size func1, .Ltmp1-func1
49 .globl __gxx_personality_v0
50 .personality __gxx_personality_v0
55 @ CHECK
: Name
: .ARM.extab.TEST1
56 @ CHECK
: SectionData
(
57 @ CHECK
: 0000: 00000000 C94A9B01 B0818484 |
.....J......|
63 @
-------------------------------------------------------------------------------
64 @ Assembly with frame pointer elimination
65 @
-------------------------------------------------------------------------------
74 .vsave {d8, d9, d10, d11, d12}
75 vpush
{d8
, d9
, d10
, d11
, d12
}
79 vpop
{d8
, d9
, d10
, d11
, d12
}
82 .size func2, .Ltmp2-func2
83 .globl __gxx_personality_v0
84 .personality __gxx_personality_v0
89 @ CHECK
: Name
: .ARM.extab.TEST2
90 @ CHECK
: SectionData
(
91 @ CHECK
: 0000: 00000000 84C90501 B0B0B0A8 |
............|