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 |............|