Testcase that crashes the ppc backend.
[oota-llvm.git] / test / CodeGen / Generic / 2006-06-28-SimplifySetCCCrash.ll
1 ; RUN: llvm-as < %s | llc
2         %struct.rtunion = type { long }
3         %struct.rtx_def = type { ushort, ubyte, ubyte, [1 x %struct.rtunion] }
4 %ix86_cpu = external global uint                ; <uint*> [#uses=1]
5 %which_alternative = external global int                ; <int*> [#uses=3]
6
7 implementation   ; Functions:
8
9 declare fastcc int %recog()
10
11 void %athlon_fp_unit_ready_cost() {
12 entry:
13         %tmp = setlt int 0, 0           ; <bool> [#uses=1]
14         br bool %tmp, label %cond_true.i, label %cond_true
15
16 cond_true:              ; preds = %entry
17         ret void
18
19 cond_true.i:            ; preds = %entry
20         %tmp8.i = tail call fastcc int %recog( )                ; <int> [#uses=1]
21         switch int %tmp8.i, label %UnifiedReturnBlock [
22                  int -1, label %bb2063
23                  int 19, label %bb2035
24                  int 20, label %bb2035
25                  int 21, label %bb2035
26                  int 23, label %bb2035
27                  int 24, label %bb2035
28                  int 27, label %bb2035
29                  int 32, label %bb2035
30                  int 33, label %bb1994
31                  int 35, label %bb2035
32                  int 36, label %bb1994
33                  int 90, label %bb1948
34                  int 94, label %bb1948
35                  int 95, label %bb1948
36                  int 101, label %bb1648
37                  int 102, label %bb1648
38                  int 103, label %bb1648
39                  int 104, label %bb1648
40                  int 133, label %bb1419
41                  int 135, label %bb1238
42                  int 136, label %bb1238
43                  int 137, label %bb1238
44                  int 138, label %bb1238
45                  int 139, label %bb1201
46                  int 140, label %bb1201
47                  int 141, label %bb1154
48                  int 142, label %bb1126
49                  int 144, label %bb1201
50                  int 145, label %bb1126
51                  int 146, label %bb1201
52                  int 147, label %bb1126
53                  int 148, label %bb1201
54                  int 149, label %bb1126
55                  int 150, label %bb1201
56                  int 151, label %bb1126
57                  int 152, label %bb1096
58                  int 153, label %bb1096
59                  int 154, label %bb1096
60                  int 157, label %bb1096
61                  int 158, label %bb1096
62                  int 159, label %bb1096
63                  int 162, label %bb1096
64                  int 163, label %bb1096
65                  int 164, label %bb1096
66                  int 167, label %bb1201
67                  int 168, label %bb1201
68                  int 170, label %bb1201
69                  int 171, label %bb1201
70                  int 173, label %bb1201
71                  int 174, label %bb1201
72                  int 176, label %bb1201
73                  int 177, label %bb1201
74                  int 179, label %bb993
75                  int 180, label %bb993
76                  int 181, label %bb993
77                  int 182, label %bb993
78                  int 183, label %bb993
79                  int 184, label %bb993
80                  int 365, label %bb1126
81                  int 366, label %bb1126
82                  int 367, label %bb1126
83                  int 368, label %bb1126
84                  int 369, label %bb1126
85                  int 370, label %bb1126
86                  int 371, label %bb1126
87                  int 372, label %bb1126
88                  int 373, label %bb1126
89                  int 384, label %bb1126
90                  int 385, label %bb1126
91                  int 386, label %bb1126
92                  int 387, label %bb1126
93                  int 388, label %bb1126
94                  int 389, label %bb1126
95                  int 390, label %bb1126
96                  int 391, label %bb1126
97                  int 392, label %bb1126
98                  int 525, label %bb919
99                  int 526, label %bb839
100                  int 528, label %bb919
101                  int 529, label %bb839
102                  int 531, label %cond_next6.i119
103                  int 532, label %cond_next6.i97
104                  int 533, label %cond_next6.i81
105                  int 534, label %bb495
106                  int 536, label %cond_next6.i81
107                  int 537, label %cond_next6.i81
108                  int 538, label %bb396
109                  int 539, label %bb288
110                  int 541, label %bb396
111                  int 542, label %bb396
112                  int 543, label %bb396
113                  int 544, label %bb396
114                  int 545, label %bb189
115                  int 546, label %cond_next6.i
116                  int 547, label %bb189
117                  int 548, label %cond_next6.i
118                  int 549, label %bb189
119                  int 550, label %cond_next6.i
120                  int 551, label %bb189
121                  int 552, label %cond_next6.i
122                  int 553, label %bb189
123                  int 554, label %cond_next6.i
124                  int 555, label %bb189
125                  int 556, label %cond_next6.i
126                  int 557, label %bb189
127                  int 558, label %cond_next6.i
128                  int 618, label %bb40
129                  int 619, label %bb18
130                  int 620, label %bb40
131                  int 621, label %bb10
132                  int 622, label %bb10
133         ]
134
135 bb10:           ; preds = %cond_true.i, %cond_true.i
136         ret void
137
138 bb18:           ; preds = %cond_true.i
139         ret void
140
141 bb40:           ; preds = %cond_true.i, %cond_true.i
142         ret void
143
144 cond_next6.i:           ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
145         ret void
146
147 bb189:          ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
148         ret void
149
150 bb288:          ; preds = %cond_true.i
151         ret void
152
153 bb396:          ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
154         ret void
155
156 bb495:          ; preds = %cond_true.i
157         ret void
158
159 cond_next6.i81:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i
160         ret void
161
162 cond_next6.i97:         ; preds = %cond_true.i
163         ret void
164
165 cond_next6.i119:                ; preds = %cond_true.i
166         %tmp.i126 = seteq ushort 0, 78          ; <bool> [#uses=1]
167         br bool %tmp.i126, label %cond_next778, label %bb802
168
169 cond_next778:           ; preds = %cond_next6.i119
170         %tmp781 = seteq uint 0, 1               ; <bool> [#uses=1]
171         br bool %tmp781, label %cond_next784, label %bb790
172
173 cond_next784:           ; preds = %cond_next778
174         %tmp785 = load uint* %ix86_cpu          ; <uint> [#uses=1]
175         %tmp786 = seteq uint %tmp785, 5         ; <bool> [#uses=1]
176         br bool %tmp786, label %UnifiedReturnBlock, label %bb790
177
178 bb790:          ; preds = %cond_next784, %cond_next778
179         %tmp793 = seteq uint 0, 1               ; <bool> [#uses=0]
180         ret void
181
182 bb802:          ; preds = %cond_next6.i119
183         ret void
184
185 bb839:          ; preds = %cond_true.i, %cond_true.i
186         ret void
187
188 bb919:          ; preds = %cond_true.i, %cond_true.i
189         ret void
190
191 bb993:          ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
192         ret void
193
194 bb1096:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
195         ret void
196
197 bb1126:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
198         ret void
199
200 bb1154:         ; preds = %cond_true.i
201         ret void
202
203 bb1201:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
204         ret void
205
206 bb1238:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
207         ret void
208
209 bb1419:         ; preds = %cond_true.i
210         ret void
211
212 bb1648:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
213         %tmp1650 = load int* %which_alternative         ; <int> [#uses=1]
214         switch int %tmp1650, label %bb1701 [
215                  int 0, label %cond_next1675
216                  int 1, label %cond_next1675
217                  int 2, label %cond_next1675
218         ]
219
220 cond_next1675:          ; preds = %bb1648, %bb1648, %bb1648
221         ret void
222
223 bb1701:         ; preds = %bb1648
224         %tmp1702 = load int* %which_alternative         ; <int> [#uses=1]
225         switch int %tmp1702, label %bb1808 [
226                  int 0, label %cond_next1727
227                  int 1, label %cond_next1727
228                  int 2, label %cond_next1727
229         ]
230
231 cond_next1727:          ; preds = %bb1701, %bb1701, %bb1701
232         ret void
233
234 bb1808:         ; preds = %bb1701
235         %bothcond696 = or bool false, false             ; <bool> [#uses=1]
236         br bool %bothcond696, label %bb1876, label %cond_next1834
237
238 cond_next1834:          ; preds = %bb1808
239         ret void
240
241 bb1876:         ; preds = %bb1808
242         %tmp1877 = load int* %which_alternative         ; <int> [#uses=4]
243         %tmp1877 = cast int %tmp1877 to uint            ; <uint> [#uses=1]
244         %bothcond699 = setlt uint %tmp1877, 2           ; <bool> [#uses=1]
245         %tmp1888 = seteq int %tmp1877, 2                ; <bool> [#uses=1]
246         %bothcond700 = or bool %bothcond699, %tmp1888           ; <bool> [#uses=1]
247         %bothcond700.not = xor bool %bothcond700, true          ; <bool> [#uses=1]
248         %tmp1894 = seteq int %tmp1877, 3                ; <bool> [#uses=1]
249         %bothcond701 = or bool %tmp1894, %bothcond700.not               ; <bool> [#uses=1]
250         %bothcond702 = or bool %bothcond701, false              ; <bool> [#uses=1]
251         br bool %bothcond702, label %UnifiedReturnBlock, label %cond_next1902
252
253 cond_next1902:          ; preds = %bb1876
254         switch int %tmp1877, label %cond_next1937 [
255                  int 0, label %bb1918
256                  int 1, label %bb1918
257                  int 2, label %bb1918
258         ]
259
260 bb1918:         ; preds = %cond_next1902, %cond_next1902, %cond_next1902
261         ret void
262
263 cond_next1937:          ; preds = %cond_next1902
264         ret void
265
266 bb1948:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i
267         ret void
268
269 bb1994:         ; preds = %cond_true.i, %cond_true.i
270         ret void
271
272 bb2035:         ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
273         ret void
274
275 bb2063:         ; preds = %cond_true.i
276         ret void
277
278 UnifiedReturnBlock:             ; preds = %bb1876, %cond_next784, %cond_true.i
279         %UnifiedRetVal = phi int [ 100, %bb1876 ], [ 100, %cond_true.i ], [ 4, %cond_next784 ]          ; <int> [#uses=0]
280         ret void
281 }