1;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
2;; RUN:   -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
3;; RUN:   llvm-readobj -t | FileCheck -check-prefix=ARM %s
4
5;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
6;; RUN:   -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
7;; RUN:   llvm-readobj -t | FileCheck -check-prefix=TMB %s
8
9;; Ensure that if a jump table is generated that it has Mapping Symbols
10;; marking the data-in-code region.
11
12define void @foo(i32* %ptr) nounwind ssp {
13  %tmp = load i32* %ptr, align 4
14  switch i32 %tmp, label %default [
15    i32 11, label %bb0
16    i32 10, label %bb1
17    i32 8, label %bb2
18    i32 4, label %bb3
19    i32 2, label %bb4
20    i32 6, label %bb5
21    i32 9, label %bb6
22    i32 15, label %bb7
23    i32 1, label %bb8
24    i32 3, label %bb9
25    i32 5, label %bb10
26    i32 30, label %bb11
27    i32 31, label %bb12
28    i32 13, label %bb13
29    i32 14, label %bb14
30    i32 20, label %bb15
31    i32 19, label %bb16
32    i32 17, label %bb17
33    i32 18, label %bb18
34    i32 21, label %bb19
35    i32 22, label %bb20
36    i32 16, label %bb21
37    i32 24, label %bb22
38    i32 25, label %bb23
39    i32 26, label %bb24
40    i32 27, label %bb25
41    i32 28, label %bb26
42    i32 23, label %bb27
43    i32 12, label %bb28
44  ]
45
46default:
47  br label %exit
48bb0:
49  br label %exit
50bb1:
51  br label %exit
52bb2:
53  br label %exit
54bb3:
55  br label %exit
56bb4:
57  br label %exit
58bb5:
59  br label %exit
60bb6:
61  br label %exit
62bb7:
63  br label %exit
64bb8:
65  br label %exit
66bb9:
67  br label %exit
68bb10:
69  br label %exit
70bb11:
71  br label %exit
72bb12:
73  br label %exit
74bb13:
75  br label %exit
76bb14:
77  br label %exit
78bb15:
79  br label %exit
80bb16:
81  br label %exit
82bb17:
83  br label %exit
84bb18:
85  br label %exit
86bb19:
87  br label %exit
88bb20:
89  br label %exit
90bb21:
91  br label %exit
92bb22:
93  br label %exit
94bb23:
95  br label %exit
96bb24:
97  br label %exit
98bb25:
99  br label %exit
100bb26:
101  br label %exit
102bb27:
103  br label %exit
104bb28:
105  br label %exit
106
107
108exit:
109
110  ret void
111}
112
113;; ARM:        Symbol {
114;; ARM:          Name: $a
115;; ARM-NEXT:     Value: 0x0
116;; ARM-NEXT:     Size: 0
117;; ARM-NEXT:     Binding: Local
118;; ARM-NEXT:     Type: None
119;; ARM-NEXT:     Other:
120;; ARM-NEXT:     Section: [[MIXED_SECT:[^ ]+]]
121
122;; ARM:        Symbol {
123;; ARM:          Name: $a
124;; ARM-NEXT:     Value: 0x{{[0-9A-F]+}}
125;; ARM-NEXT:     Size: 0
126;; ARM-NEXT:     Binding: Local
127;; ARM-NEXT:     Type: None
128;; ARM-NEXT:     Other:
129;; ARM-NEXT:     Section: [[MIXED_SECT]]
130
131;; ARM:        Symbol {
132;; ARM:          Name: $d
133;; ARM-NEXT:     Value: 0
134;; ARM-NEXT:     Size: 0
135;; ARM-NEXT:     Binding: Local
136;; ARM-NEXT:     Type: None
137
138;; ARM:        Symbol {
139;; ARM:          Name: $d
140;; ARM-NEXT:     Value: 0x{{[0-9A-F]+}}
141;; ARM-NEXT:     Size: 0
142;; ARM-NEXT:     Binding: Local
143;; ARM-NEXT:     Type: None
144;; ARM-NEXT:     Other:
145;; ARM-NEXT:     Section: [[MIXED_SECT]]
146
147;; ARM:        Symbol {
148;; ARM:          Name: $d
149;; ARM-NEXT:     Value: 0x0
150;; ARM-NEXT:     Size: 0
151;; ARM-NEXT:     Binding: Local (0x0)
152;; ARM-NEXT:     Type: None (0x0)
153;; ARM-NEXT:     Other: 0
154;; ARM-NEXT:     Section: .ARM.exidx
155;; ARM-NEXT:   }
156
157;; ARM-NOT:     ${{[atd]}}
158
159;; TMB:        Symbol {
160;; TMB:          Name: $d.2
161;; TMB-NEXT:     Value: 0x{{[0-9A-F]+}}
162;; TMB-NEXT:     Size: 0
163;; TMB-NEXT:     Binding: Local
164;; TMB-NEXT:     Type: None
165;; TMB-NEXT:     Other:
166;; TMB-NEXT:     Section: [[MIXED_SECT:[^ ]+]]
167
168;; TMB:        Symbol {
169;; TMB:          Name: $t
170;; TMB-NEXT:     Value: 0x0
171;; TMB-NEXT:     Size: 0
172;; TMB-NEXT:     Binding: Local
173;; TMB-NEXT:     Type: None
174;; TMB-NEXT:     Other:
175;; TMB-NEXT:     Section: [[MIXED_SECT]]
176
177;; TMB:        Symbol {
178;; TMB:          Name: $t
179;; TMB-NEXT:     Value: 0x{{[0-9A-F]+}}
180;; TMB-NEXT:     Size: 0
181;; TMB-NEXT:     Binding: Local
182;; TMB-NEXT:     Type: None
183;; TMB-NEXT:     Other:
184;; TMB-NEXT:     Section: [[MIXED_SECT]]
185
186
187;; TMB-NOT:     ${{[atd]}}
188
189