blob: 3bb017d7513f8b7ea112c34768cd73e83b9f4b67 [file] [log] [blame]
Renato Golin78a6eba2014-02-07 20:12:49 +00001;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
Derek Schuffbd7c6e52013-05-14 16:26:38 +00002;; RUN: -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
Nico Rieckba848e32013-04-12 04:06:46 +00003;; RUN: llvm-readobj -t | FileCheck -check-prefix=ARM %s
Tim Northover5cc3dc82012-12-07 16:50:23 +00004
Renato Golin78a6eba2014-02-07 20:12:49 +00005;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
Derek Schuffbd7c6e52013-05-14 16:26:38 +00006;; RUN: -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
Nico Rieckba848e32013-04-12 04:06:46 +00007;; RUN: llvm-readobj -t | FileCheck -check-prefix=TMB %s
Tim Northover5cc3dc82012-12-07 16:50:23 +00008
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
Nico Rieckba848e32013-04-12 04:06:46 +0000113;; 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:[^ ]+]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000121
Nico Rieckba848e32013-04-12 04:06:46 +0000122;; ARM: Symbol {
123;; ARM: Name: $a
Derek Schuffbd7c6e52013-05-14 16:26:38 +0000124;; ARM-NEXT: Value: 0x{{[0-9A-F]+}}
Nico Rieckba848e32013-04-12 04:06:46 +0000125;; ARM-NEXT: Size: 0
126;; ARM-NEXT: Binding: Local
127;; ARM-NEXT: Type: None
128;; ARM-NEXT: Other:
129;; ARM-NEXT: Section: [[MIXED_SECT]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000130
Nico Rieckba848e32013-04-12 04:06:46 +0000131;; 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
Tim Northover5cc3dc82012-12-07 16:50:23 +0000137
Nico Rieckba848e32013-04-12 04:06:46 +0000138;; ARM: Symbol {
139;; ARM: Name: $d
Derek Schuffbd7c6e52013-05-14 16:26:38 +0000140;; ARM-NEXT: Value: 0x{{[0-9A-F]+}}
Nico Rieckba848e32013-04-12 04:06:46 +0000141;; ARM-NEXT: Size: 0
142;; ARM-NEXT: Binding: Local
143;; ARM-NEXT: Type: None
144;; ARM-NEXT: Other:
145;; ARM-NEXT: Section: [[MIXED_SECT]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000146
Renato Golin78a6eba2014-02-07 20:12:49 +0000147;; 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
Tim Northover5cc3dc82012-12-07 16:50:23 +0000157;; ARM-NOT: ${{[atd]}}
158
Nico Rieckba848e32013-04-12 04:06:46 +0000159;; TMB: Symbol {
160;; TMB: Name: $d.2
Derek Schuffbd7c6e52013-05-14 16:26:38 +0000161;; TMB-NEXT: Value: 0x{{[0-9A-F]+}}
Nico Rieckba848e32013-04-12 04:06:46 +0000162;; TMB-NEXT: Size: 0
163;; TMB-NEXT: Binding: Local
164;; TMB-NEXT: Type: None
165;; TMB-NEXT: Other:
166;; TMB-NEXT: Section: [[MIXED_SECT:[^ ]+]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000167
Nico Rieckba848e32013-04-12 04:06:46 +0000168;; 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]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000176
Nico Rieckba848e32013-04-12 04:06:46 +0000177;; TMB: Symbol {
178;; TMB: Name: $t
Derek Schuffbd7c6e52013-05-14 16:26:38 +0000179;; TMB-NEXT: Value: 0x{{[0-9A-F]+}}
Nico Rieckba848e32013-04-12 04:06:46 +0000180;; TMB-NEXT: Size: 0
181;; TMB-NEXT: Binding: Local
182;; TMB-NEXT: Type: None
183;; TMB-NEXT: Other:
184;; TMB-NEXT: Section: [[MIXED_SECT]]
Tim Northover5cc3dc82012-12-07 16:50:23 +0000185
186
187;; TMB-NOT: ${{[atd]}}
188