]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/ARM/ltorg.s
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / MC / ARM / ltorg.s
1 @ This test has a partner (ltorg-darwin.s) that contains matching
2 @ tests for the .ltorg on darwin targets. We need separate files
3 @ because the syntax for switching sections and temporary labels differs
4 @ between darwin and linux. Any tests added here should have a matching
5 @ test added there.
6
7 @RUN: llvm-mc -triple   armv7-unknown-linux-gnueabi %s | FileCheck %s
8 @RUN: llvm-mc -triple thumbv5-unknown-linux-gnueabi %s | FileCheck %s
9 @RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck %s
10
11 @ check that ltorg dumps the constant pool at the current location
12 .section a,"ax",%progbits
13 @ CHECK-LABEL: f2:
14 f2:
15   ldr r0, =0x10002
16 @ CHECK: ldr r0, .Ltmp[[TMP0:[0-9+]]]
17   adds r0, r0, #1
18   adds r0, r0, #1
19   b f3
20 .ltorg
21 @ constant pool
22 @ CHECK: .p2align 2
23 @ CHECK: .Ltmp[[TMP0]]
24 @ CHECK: .long 65538
25
26 @ CHECK-LABEL: f3:
27 f3:
28   adds r0, r0, #1
29   adds r0, r0, #1
30
31 @ check that ltorg clears the constant pool after dumping it
32 .section b,"ax",%progbits
33 @ CHECK-LABEL: f4:
34 f4:
35   ldr r0, =0x10003
36 @ CHECK: ldr r0, .Ltmp[[TMP1:[0-9+]]]
37   adds r0, r0, #1
38   adds r0, r0, #1
39   b f5
40 .ltorg
41 @ constant pool
42 @ CHECK: .p2align 2
43 @ CHECK: .Ltmp[[TMP1]]
44 @ CHECK: .long 65539
45
46 @ CHECK-LABEL: f5:
47 f5:
48   adds r0, r0, #1
49   adds r0, r0, #1
50   ldr r0, =0x10004
51 @ CHECK: ldr r0, .Ltmp[[TMP2:[0-9+]]]
52   adds r0, r0, #1
53   b f6
54 .ltorg
55 @ constant pool
56 @ CHECK: .p2align 2
57 @ CHECK: .Ltmp[[TMP2]]
58 @ CHECK: .long 65540
59
60 @ CHECK-LABEL: f6:
61 f6:
62   adds r0, r0, #1
63   adds r0, r0, #1
64
65 @ check that ltorg does not issue an error if there is no constant pool
66 .section c,"ax",%progbits
67 @ CHECK-LABEL: f7:
68 f7:
69   adds r0, r0, #1
70   b f8
71   .ltorg
72 f8:
73   adds r0, r0, #1
74
75 @ check that ltorg works for labels
76 .section d,"ax",%progbits
77 @ CHECK-LABEL: f9:
78 f9:
79   adds r0, r0, #1
80   adds r0, r0, #1
81   ldr r0, =bar
82 @ CHECK: ldr r0, .Ltmp[[TMP3:[0-9+]]]
83   adds r0, r0, #1
84   adds r0, r0, #1
85   adds r0, r0, #1
86   b f10
87 .ltorg
88 @ constant pool
89 @ CHECK: .p2align 2
90 @ CHECK: .Ltmp[[TMP3]]
91 @ CHECK: .long bar
92
93 @ CHECK-LABEL: f10:
94 f10:
95   adds r0, r0, #1
96   adds r0, r0, #1
97
98 @ check that use of ltorg does not prevent dumping non-empty constant pools at end of section
99 .section e,"ax",%progbits
100 @ CHECK-LABEL: f11:
101 f11:
102   adds r0, r0, #1
103   adds r0, r0, #1
104   ldr r0, =0x10005
105 @ CHECK: ldr r0, .Ltmp[[TMP4:[0-9+]]]
106   b f12
107   .ltorg
108 @ constant pool
109 @ CHECK: .p2align 2
110 @ CHECK: .Ltmp[[TMP4]]
111 @ CHECK: .long 65541
112 @ CHECK-LABEL: f12:
113 f12:
114   adds r0, r0, #1
115   ldr r0, =0x10006
116 @ CHECK: ldr r0, .Ltmp[[TMP5:[0-9+]]]
117
118 .section f,"ax",%progbits
119 @ CHECK-LABEL: f13
120 f13:
121   adds r0, r0, #1
122   adds r0, r0, #1
123
124 @ should not have a constant pool at end of section with empty constant pools
125 @ CHECK-NOT: .section a,"ax",%progbits
126 @ CHECK-NOT: .section b,"ax",%progbits
127 @ CHECK-NOT: .section c,"ax",%progbits
128 @ CHECK-NOT: .section d,"ax",%progbits
129
130 @ should have a non-empty constant pool at end of this section
131 @ CHECK: .section e,"ax",%progbits
132 @ constant pool
133 @ CHECK: .p2align 2
134 @ CHECK: .Ltmp[[TMP5]]
135 @ CHECK: .long 65542
136
137 @ should not have a constant pool at end of section with empty constant pools
138 @ CHECK-NOT: .section f,"ax",%progbits