~ubuntu-branches/ubuntu/vivid/golang/vivid

« back to all changes in this revision

Viewing changes to test/fixedbugs/issue2615.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-08-20 14:06:23 UTC
  • mfrom: (14.1.23 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130820140623-b414jfxi3m0qkmrq
Tags: 2:1.1.2-2ubuntu1
* Merge from Debian unstable (LP: #1211749, #1202027). Remaining changes:
  - 016-armhf-elf-header.patch: Use correct ELF header for armhf binaries.
  - d/control,control.cross: Update Breaks/Replaces for Ubuntu
    versions to ensure smooth upgrades, regenerate control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// run
 
2
 
 
3
// Copyright 2012 The Go Authors.  All rights reserved.
 
4
// Use of this source code is governed by a BSD-style
 
5
// license that can be found in the LICENSE file.
 
6
 
 
7
// Issue 2615: a long chain of else if's causes an overflow
 
8
// in the parser stack.
 
9
 
 
10
package main
 
11
 
 
12
// test returns the index of the lowest set bit in a 256-bit vector.
 
13
func test(x [4]uint64) int {
 
14
        if x[0]&(1<<0) != 0 {
 
15
                return 0
 
16
        } else if x[0]&(1<<1) != 0 {
 
17
                return 1
 
18
        } else if x[0]&(1<<2) != 0 {
 
19
                return 2
 
20
        } else if x[0]&(1<<3) != 0 {
 
21
                return 3
 
22
        } else if x[0]&(1<<4) != 0 {
 
23
                return 4
 
24
        } else if x[0]&(1<<5) != 0 {
 
25
                return 5
 
26
        } else if x[0]&(1<<6) != 0 {
 
27
                return 6
 
28
        } else if x[0]&(1<<7) != 0 {
 
29
                return 7
 
30
        } else if x[0]&(1<<8) != 0 {
 
31
                return 8
 
32
        } else if x[0]&(1<<9) != 0 {
 
33
                return 9
 
34
        } else if x[0]&(1<<10) != 0 {
 
35
                return 10
 
36
        } else if x[0]&(1<<11) != 0 {
 
37
                return 11
 
38
        } else if x[0]&(1<<12) != 0 {
 
39
                return 12
 
40
        } else if x[0]&(1<<13) != 0 {
 
41
                return 13
 
42
        } else if x[0]&(1<<14) != 0 {
 
43
                return 14
 
44
        } else if x[0]&(1<<15) != 0 {
 
45
                return 15
 
46
        } else if x[0]&(1<<16) != 0 {
 
47
                return 16
 
48
        } else if x[0]&(1<<17) != 0 {
 
49
                return 17
 
50
        } else if x[0]&(1<<18) != 0 {
 
51
                return 18
 
52
        } else if x[0]&(1<<19) != 0 {
 
53
                return 19
 
54
        } else if x[0]&(1<<20) != 0 {
 
55
                return 20
 
56
        } else if x[0]&(1<<21) != 0 {
 
57
                return 21
 
58
        } else if x[0]&(1<<22) != 0 {
 
59
                return 22
 
60
        } else if x[0]&(1<<23) != 0 {
 
61
                return 23
 
62
        } else if x[0]&(1<<24) != 0 {
 
63
                return 24
 
64
        } else if x[0]&(1<<25) != 0 {
 
65
                return 25
 
66
        } else if x[0]&(1<<26) != 0 {
 
67
                return 26
 
68
        } else if x[0]&(1<<27) != 0 {
 
69
                return 27
 
70
        } else if x[0]&(1<<28) != 0 {
 
71
                return 28
 
72
        } else if x[0]&(1<<29) != 0 {
 
73
                return 29
 
74
        } else if x[0]&(1<<30) != 0 {
 
75
                return 30
 
76
        } else if x[0]&(1<<31) != 0 {
 
77
                return 31
 
78
        } else if x[0]&(1<<32) != 0 {
 
79
                return 32
 
80
        } else if x[0]&(1<<33) != 0 {
 
81
                return 33
 
82
        } else if x[0]&(1<<34) != 0 {
 
83
                return 34
 
84
        } else if x[0]&(1<<35) != 0 {
 
85
                return 35
 
86
        } else if x[0]&(1<<36) != 0 {
 
87
                return 36
 
88
        } else if x[0]&(1<<37) != 0 {
 
89
                return 37
 
90
        } else if x[0]&(1<<38) != 0 {
 
91
                return 38
 
92
        } else if x[0]&(1<<39) != 0 {
 
93
                return 39
 
94
        } else if x[0]&(1<<40) != 0 {
 
95
                return 40
 
96
        } else if x[0]&(1<<41) != 0 {
 
97
                return 41
 
98
        } else if x[0]&(1<<42) != 0 {
 
99
                return 42
 
100
        } else if x[0]&(1<<43) != 0 {
 
101
                return 43
 
102
        } else if x[0]&(1<<44) != 0 {
 
103
                return 44
 
104
        } else if x[0]&(1<<45) != 0 {
 
105
                return 45
 
106
        } else if x[0]&(1<<46) != 0 {
 
107
                return 46
 
108
        } else if x[0]&(1<<47) != 0 {
 
109
                return 47
 
110
        } else if x[0]&(1<<48) != 0 {
 
111
                return 48
 
112
        } else if x[0]&(1<<49) != 0 {
 
113
                return 49
 
114
        } else if x[0]&(1<<50) != 0 {
 
115
                return 50
 
116
        } else if x[0]&(1<<51) != 0 {
 
117
                return 51
 
118
        } else if x[0]&(1<<52) != 0 {
 
119
                return 52
 
120
        } else if x[0]&(1<<53) != 0 {
 
121
                return 53
 
122
        } else if x[0]&(1<<54) != 0 {
 
123
                return 54
 
124
        } else if x[0]&(1<<55) != 0 {
 
125
                return 55
 
126
        } else if x[0]&(1<<56) != 0 {
 
127
                return 56
 
128
        } else if x[0]&(1<<57) != 0 {
 
129
                return 57
 
130
        } else if x[0]&(1<<58) != 0 {
 
131
                return 58
 
132
        } else if x[0]&(1<<59) != 0 {
 
133
                return 59
 
134
        } else if x[0]&(1<<60) != 0 {
 
135
                return 60
 
136
        } else if x[0]&(1<<61) != 0 {
 
137
                return 61
 
138
        } else if x[0]&(1<<62) != 0 {
 
139
                return 62
 
140
        } else if x[0]&(1<<63) != 0 {
 
141
                return 63
 
142
        } else if x[1]&(1<<0) != 0 {
 
143
                return 64
 
144
        } else if x[1]&(1<<1) != 0 {
 
145
                return 65
 
146
        } else if x[1]&(1<<2) != 0 {
 
147
                return 66
 
148
        } else if x[1]&(1<<3) != 0 {
 
149
                return 67
 
150
        } else if x[1]&(1<<4) != 0 {
 
151
                return 68
 
152
        } else if x[1]&(1<<5) != 0 {
 
153
                return 69
 
154
        } else if x[1]&(1<<6) != 0 {
 
155
                return 70
 
156
        } else if x[1]&(1<<7) != 0 {
 
157
                return 71
 
158
        } else if x[1]&(1<<8) != 0 {
 
159
                return 72
 
160
        } else if x[1]&(1<<9) != 0 {
 
161
                return 73
 
162
        } else if x[1]&(1<<10) != 0 {
 
163
                return 74
 
164
        } else if x[1]&(1<<11) != 0 {
 
165
                return 75
 
166
        } else if x[1]&(1<<12) != 0 {
 
167
                return 76
 
168
        } else if x[1]&(1<<13) != 0 {
 
169
                return 77
 
170
        } else if x[1]&(1<<14) != 0 {
 
171
                return 78
 
172
        } else if x[1]&(1<<15) != 0 {
 
173
                return 79
 
174
        } else if x[1]&(1<<16) != 0 {
 
175
                return 80
 
176
        } else if x[1]&(1<<17) != 0 {
 
177
                return 81
 
178
        } else if x[1]&(1<<18) != 0 {
 
179
                return 82
 
180
        } else if x[1]&(1<<19) != 0 {
 
181
                return 83
 
182
        } else if x[1]&(1<<20) != 0 {
 
183
                return 84
 
184
        } else if x[1]&(1<<21) != 0 {
 
185
                return 85
 
186
        } else if x[1]&(1<<22) != 0 {
 
187
                return 86
 
188
        } else if x[1]&(1<<23) != 0 {
 
189
                return 87
 
190
        } else if x[1]&(1<<24) != 0 {
 
191
                return 88
 
192
        } else if x[1]&(1<<25) != 0 {
 
193
                return 89
 
194
        } else if x[1]&(1<<26) != 0 {
 
195
                return 90
 
196
        } else if x[1]&(1<<27) != 0 {
 
197
                return 91
 
198
        } else if x[1]&(1<<28) != 0 {
 
199
                return 92
 
200
        } else if x[1]&(1<<29) != 0 {
 
201
                return 93
 
202
        } else if x[1]&(1<<30) != 0 {
 
203
                return 94
 
204
        } else if x[1]&(1<<31) != 0 {
 
205
                return 95
 
206
        } else if x[1]&(1<<32) != 0 {
 
207
                return 96
 
208
        } else if x[1]&(1<<33) != 0 {
 
209
                return 97
 
210
        } else if x[1]&(1<<34) != 0 {
 
211
                return 98
 
212
        } else if x[1]&(1<<35) != 0 {
 
213
                return 99
 
214
        } else if x[1]&(1<<36) != 0 {
 
215
                return 100
 
216
        } else if x[1]&(1<<37) != 0 {
 
217
                return 101
 
218
        } else if x[1]&(1<<38) != 0 {
 
219
                return 102
 
220
        } else if x[1]&(1<<39) != 0 {
 
221
                return 103
 
222
        } else if x[1]&(1<<40) != 0 {
 
223
                return 104
 
224
        } else if x[1]&(1<<41) != 0 {
 
225
                return 105
 
226
        } else if x[1]&(1<<42) != 0 {
 
227
                return 106
 
228
        } else if x[1]&(1<<43) != 0 {
 
229
                return 107
 
230
        } else if x[1]&(1<<44) != 0 {
 
231
                return 108
 
232
        } else if x[1]&(1<<45) != 0 {
 
233
                return 109
 
234
        } else if x[1]&(1<<46) != 0 {
 
235
                return 110
 
236
        } else if x[1]&(1<<47) != 0 {
 
237
                return 111
 
238
        } else if x[1]&(1<<48) != 0 {
 
239
                return 112
 
240
        } else if x[1]&(1<<49) != 0 {
 
241
                return 113
 
242
        } else if x[1]&(1<<50) != 0 {
 
243
                return 114
 
244
        } else if x[1]&(1<<51) != 0 {
 
245
                return 115
 
246
        } else if x[1]&(1<<52) != 0 {
 
247
                return 116
 
248
        } else if x[1]&(1<<53) != 0 {
 
249
                return 117
 
250
        } else if x[1]&(1<<54) != 0 {
 
251
                return 118
 
252
        } else if x[1]&(1<<55) != 0 {
 
253
                return 119
 
254
        } else if x[1]&(1<<56) != 0 {
 
255
                return 120
 
256
        } else if x[1]&(1<<57) != 0 {
 
257
                return 121
 
258
        } else if x[1]&(1<<58) != 0 {
 
259
                return 122
 
260
        } else if x[1]&(1<<59) != 0 {
 
261
                return 123
 
262
        } else if x[1]&(1<<60) != 0 {
 
263
                return 124
 
264
        } else if x[1]&(1<<61) != 0 {
 
265
                return 125
 
266
        } else if x[1]&(1<<62) != 0 {
 
267
                return 126
 
268
        } else if x[1]&(1<<63) != 0 {
 
269
                return 127
 
270
        } else if x[2]&(1<<0) != 0 {
 
271
                return 128
 
272
        } else if x[2]&(1<<1) != 0 {
 
273
                return 129
 
274
        } else if x[2]&(1<<2) != 0 {
 
275
                return 130
 
276
        } else if x[2]&(1<<3) != 0 {
 
277
                return 131
 
278
        } else if x[2]&(1<<4) != 0 {
 
279
                return 132
 
280
        } else if x[2]&(1<<5) != 0 {
 
281
                return 133
 
282
        } else if x[2]&(1<<6) != 0 {
 
283
                return 134
 
284
        } else if x[2]&(1<<7) != 0 {
 
285
                return 135
 
286
        } else if x[2]&(1<<8) != 0 {
 
287
                return 136
 
288
        } else if x[2]&(1<<9) != 0 {
 
289
                return 137
 
290
        } else if x[2]&(1<<10) != 0 {
 
291
                return 138
 
292
        } else if x[2]&(1<<11) != 0 {
 
293
                return 139
 
294
        } else if x[2]&(1<<12) != 0 {
 
295
                return 140
 
296
        } else if x[2]&(1<<13) != 0 {
 
297
                return 141
 
298
        } else if x[2]&(1<<14) != 0 {
 
299
                return 142
 
300
        } else if x[2]&(1<<15) != 0 {
 
301
                return 143
 
302
        } else if x[2]&(1<<16) != 0 {
 
303
                return 144
 
304
        } else if x[2]&(1<<17) != 0 {
 
305
                return 145
 
306
        } else if x[2]&(1<<18) != 0 {
 
307
                return 146
 
308
        } else if x[2]&(1<<19) != 0 {
 
309
                return 147
 
310
        } else if x[2]&(1<<20) != 0 {
 
311
                return 148
 
312
        } else if x[2]&(1<<21) != 0 {
 
313
                return 149
 
314
        } else if x[2]&(1<<22) != 0 {
 
315
                return 150
 
316
        } else if x[2]&(1<<23) != 0 {
 
317
                return 151
 
318
        } else if x[2]&(1<<24) != 0 {
 
319
                return 152
 
320
        } else if x[2]&(1<<25) != 0 {
 
321
                return 153
 
322
        } else if x[2]&(1<<26) != 0 {
 
323
                return 154
 
324
        } else if x[2]&(1<<27) != 0 {
 
325
                return 155
 
326
        } else if x[2]&(1<<28) != 0 {
 
327
                return 156
 
328
        } else if x[2]&(1<<29) != 0 {
 
329
                return 157
 
330
        } else if x[2]&(1<<30) != 0 {
 
331
                return 158
 
332
        } else if x[2]&(1<<31) != 0 {
 
333
                return 159
 
334
        } else if x[2]&(1<<32) != 0 {
 
335
                return 160
 
336
        } else if x[2]&(1<<33) != 0 {
 
337
                return 161
 
338
        } else if x[2]&(1<<34) != 0 {
 
339
                return 162
 
340
        } else if x[2]&(1<<35) != 0 {
 
341
                return 163
 
342
        } else if x[2]&(1<<36) != 0 {
 
343
                return 164
 
344
        } else if x[2]&(1<<37) != 0 {
 
345
                return 165
 
346
        } else if x[2]&(1<<38) != 0 {
 
347
                return 166
 
348
        } else if x[2]&(1<<39) != 0 {
 
349
                return 167
 
350
        } else if x[2]&(1<<40) != 0 {
 
351
                return 168
 
352
        } else if x[2]&(1<<41) != 0 {
 
353
                return 169
 
354
        } else if x[2]&(1<<42) != 0 {
 
355
                return 170
 
356
        } else if x[2]&(1<<43) != 0 {
 
357
                return 171
 
358
        } else if x[2]&(1<<44) != 0 {
 
359
                return 172
 
360
        } else if x[2]&(1<<45) != 0 {
 
361
                return 173
 
362
        } else if x[2]&(1<<46) != 0 {
 
363
                return 174
 
364
        } else if x[2]&(1<<47) != 0 {
 
365
                return 175
 
366
        } else if x[2]&(1<<48) != 0 {
 
367
                return 176
 
368
        } else if x[2]&(1<<49) != 0 {
 
369
                return 177
 
370
        } else if x[2]&(1<<50) != 0 {
 
371
                return 178
 
372
        } else if x[2]&(1<<51) != 0 {
 
373
                return 179
 
374
        } else if x[2]&(1<<52) != 0 {
 
375
                return 180
 
376
        } else if x[2]&(1<<53) != 0 {
 
377
                return 181
 
378
        } else if x[2]&(1<<54) != 0 {
 
379
                return 182
 
380
        } else if x[2]&(1<<55) != 0 {
 
381
                return 183
 
382
        } else if x[2]&(1<<56) != 0 {
 
383
                return 184
 
384
        } else if x[2]&(1<<57) != 0 {
 
385
                return 185
 
386
        } else if x[2]&(1<<58) != 0 {
 
387
                return 186
 
388
        } else if x[2]&(1<<59) != 0 {
 
389
                return 187
 
390
        } else if x[2]&(1<<60) != 0 {
 
391
                return 188
 
392
        } else if x[2]&(1<<61) != 0 {
 
393
                return 189
 
394
        } else if x[2]&(1<<62) != 0 {
 
395
                return 190
 
396
        } else if x[2]&(1<<63) != 0 {
 
397
                return 191
 
398
        } else if x[3]&(1<<0) != 0 {
 
399
                return 192
 
400
        } else if x[3]&(1<<1) != 0 {
 
401
                return 193
 
402
        } else if x[3]&(1<<2) != 0 {
 
403
                return 194
 
404
        } else if x[3]&(1<<3) != 0 {
 
405
                return 195
 
406
        } else if x[3]&(1<<4) != 0 {
 
407
                return 196
 
408
        } else if x[3]&(1<<5) != 0 {
 
409
                return 197
 
410
        } else if x[3]&(1<<6) != 0 {
 
411
                return 198
 
412
        } else if x[3]&(1<<7) != 0 {
 
413
                return 199
 
414
        } else if x[3]&(1<<8) != 0 {
 
415
                return 200
 
416
        } else if x[3]&(1<<9) != 0 {
 
417
                return 201
 
418
        } else if x[3]&(1<<10) != 0 {
 
419
                return 202
 
420
        } else if x[3]&(1<<11) != 0 {
 
421
                return 203
 
422
        } else if x[3]&(1<<12) != 0 {
 
423
                return 204
 
424
        } else if x[3]&(1<<13) != 0 {
 
425
                return 205
 
426
        } else if x[3]&(1<<14) != 0 {
 
427
                return 206
 
428
        } else if x[3]&(1<<15) != 0 {
 
429
                return 207
 
430
        } else if x[3]&(1<<16) != 0 {
 
431
                return 208
 
432
        } else if x[3]&(1<<17) != 0 {
 
433
                return 209
 
434
        } else if x[3]&(1<<18) != 0 {
 
435
                return 210
 
436
        } else if x[3]&(1<<19) != 0 {
 
437
                return 211
 
438
        } else if x[3]&(1<<20) != 0 {
 
439
                return 212
 
440
        } else if x[3]&(1<<21) != 0 {
 
441
                return 213
 
442
        } else if x[3]&(1<<22) != 0 {
 
443
                return 214
 
444
        } else if x[3]&(1<<23) != 0 {
 
445
                return 215
 
446
        } else if x[3]&(1<<24) != 0 {
 
447
                return 216
 
448
        } else if x[3]&(1<<25) != 0 {
 
449
                return 217
 
450
        } else if x[3]&(1<<26) != 0 {
 
451
                return 218
 
452
        } else if x[3]&(1<<27) != 0 {
 
453
                return 219
 
454
        } else if x[3]&(1<<28) != 0 {
 
455
                return 220
 
456
        } else if x[3]&(1<<29) != 0 {
 
457
                return 221
 
458
        } else if x[3]&(1<<30) != 0 {
 
459
                return 222
 
460
        } else if x[3]&(1<<31) != 0 {
 
461
                return 223
 
462
        } else if x[3]&(1<<32) != 0 {
 
463
                return 224
 
464
        } else if x[3]&(1<<33) != 0 {
 
465
                return 225
 
466
        } else if x[3]&(1<<34) != 0 {
 
467
                return 226
 
468
        } else if x[3]&(1<<35) != 0 {
 
469
                return 227
 
470
        } else if x[3]&(1<<36) != 0 {
 
471
                return 228
 
472
        } else if x[3]&(1<<37) != 0 {
 
473
                return 229
 
474
        } else if x[3]&(1<<38) != 0 {
 
475
                return 230
 
476
        } else if x[3]&(1<<39) != 0 {
 
477
                return 231
 
478
        } else if x[3]&(1<<40) != 0 {
 
479
                return 232
 
480
        } else if x[3]&(1<<41) != 0 {
 
481
                return 233
 
482
        } else if x[3]&(1<<42) != 0 {
 
483
                return 234
 
484
        } else if x[3]&(1<<43) != 0 {
 
485
                return 235
 
486
        } else if x[3]&(1<<44) != 0 {
 
487
                return 236
 
488
        } else if x[3]&(1<<45) != 0 {
 
489
                return 237
 
490
        } else if x[3]&(1<<46) != 0 {
 
491
                return 238
 
492
        } else if x[3]&(1<<47) != 0 {
 
493
                return 239
 
494
        } else if x[3]&(1<<48) != 0 {
 
495
                return 240
 
496
        } else if x[3]&(1<<49) != 0 {
 
497
                return 241
 
498
        } else if x[3]&(1<<50) != 0 {
 
499
                return 242
 
500
        } else if x[3]&(1<<51) != 0 {
 
501
                return 243
 
502
        } else if x[3]&(1<<52) != 0 {
 
503
                return 244
 
504
        } else if x[3]&(1<<53) != 0 {
 
505
                return 245
 
506
        } else if x[3]&(1<<54) != 0 {
 
507
                return 246
 
508
        } else if x[3]&(1<<55) != 0 {
 
509
                return 247
 
510
        } else if x[3]&(1<<56) != 0 {
 
511
                return 248
 
512
        } else if x[3]&(1<<57) != 0 {
 
513
                return 249
 
514
        } else if x[3]&(1<<58) != 0 {
 
515
                return 250
 
516
        } else if x[3]&(1<<59) != 0 {
 
517
                return 251
 
518
        } else if x[3]&(1<<60) != 0 {
 
519
                return 252
 
520
        } else if x[3]&(1<<61) != 0 {
 
521
                return 253
 
522
        } else if x[3]&(1<<62) != 0 {
 
523
                return 254
 
524
        } else if x[3]&(1<<63) != 0 {
 
525
                return 255
 
526
        }
 
527
        return -1
 
528
}
 
529
 
 
530
func main() {
 
531
        const ones = ^uint64(0)
 
532
        for i := 0; i < 256; i++ {
 
533
                bits := [4]uint64{ones, ones, ones, ones}
 
534
 
 
535
                // clear bottom i bits
 
536
                bits[i/64] ^= 1<<(uint(i)&63) - 1
 
537
                for j := i/64 - 1; j >= 0; j-- {
 
538
                        bits[j] = 0
 
539
                }
 
540
 
 
541
                k := test(bits)
 
542
                if k != i {
 
543
                        print("test(bits)=", k, " want ", i, "\n")
 
544
                        panic("failed")
 
545
                }
 
546
        }
 
547
}