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