Source file
test/loopbce.go
1
2
3
4
5 package main
6
7 import "math"
8
9 func f0a(a []int) int {
10 x := 0
11 for i := range a {
12 x += a[i]
13 }
14 return x
15 }
16
17 func f0b(a []int) int {
18 x := 0
19 for i := range a {
20 b := a[i:]
21 x += b[0]
22 }
23 return x
24 }
25
26 func f0c(a []int) int {
27 x := 0
28 for i := range a {
29 b := a[:i+1]
30 x += b[0]
31 }
32 return x
33 }
34
35 func f1(a []int) int {
36 x := 0
37 for _, i := range a {
38 x += i
39 }
40 return x
41 }
42
43 func f2(a []int) int {
44 x := 0
45 for i := 1; i < len(a); i++ {
46 x += a[i]
47 }
48 return x
49 }
50
51 func f4(a [10]int) int {
52 x := 0
53 for i := 0; i < len(a); i += 2 {
54 x += a[i]
55 }
56 return x
57 }
58
59 func f5(a [10]int) int {
60 x := 0
61 for i := -10; i < len(a); i += 2 {
62 x += a[i+10]
63 }
64 return x
65 }
66
67 func f5_int32(a [10]int) int {
68 x := 0
69 for i := int32(-10); i < int32(len(a)); i += 2 {
70 x += a[i+10]
71 }
72 return x
73 }
74
75 func f5_int16(a [10]int) int {
76 x := 0
77 for i := int16(-10); i < int16(len(a)); i += 2 {
78 x += a[i+10]
79 }
80 return x
81 }
82
83 func f5_int8(a [10]int) int {
84 x := 0
85 for i := int8(-10); i < int8(len(a)); i += 2 {
86 x += a[i+10]
87 }
88 return x
89 }
90
91 func f6(a []int) {
92 for i := range a {
93 b := a[0:i]
94 f6(b)
95 }
96 }
97
98 func g0a(a string) int {
99 x := 0
100 for i := 0; i < len(a); i++ {
101 x += int(a[i])
102 }
103 return x
104 }
105
106 func g0b(a string) int {
107 x := 0
108 for i := 0; len(a) > i; i++ {
109 x += int(a[i])
110 }
111 return x
112 }
113
114 func g0c(a string) int {
115 x := 0
116 for i := len(a); i > 0; i-- {
117 x += int(a[i-1])
118 }
119 return x
120 }
121
122 func g0d(a string) int {
123 x := 0
124 for i := len(a); 0 < i; i-- {
125 x += int(a[i-1])
126 }
127 return x
128 }
129
130 func g0e(a string) int {
131 x := 0
132 for i := len(a) - 1; i >= 0; i-- {
133 x += int(a[i])
134 }
135 return x
136 }
137
138 func g0f(a string) int {
139 x := 0
140 for i := len(a) - 1; 0 <= i; i-- {
141 x += int(a[i])
142 }
143 return x
144 }
145
146 func g1() int {
147 a := "evenlength"
148 x := 0
149 for i := 0; i < len(a); i += 2 {
150 x += int(a[i])
151 }
152 return x
153 }
154
155 func g2() int {
156 a := "evenlength"
157 x := 0
158 for i := 0; i < len(a); i += 2 {
159 j := i
160 if a[i] == 'e' {
161 j = j + 1
162 }
163 x += int(a[j])
164 }
165 return x
166 }
167
168 func g3a() {
169 a := "this string has length 25"
170 for i := 0; i < len(a); i += 5 {
171 useString(a[i:])
172 useString(a[:i+3])
173 useString(a[:i+5])
174 useString(a[:i+6])
175 }
176 }
177
178 func g3b(a string) {
179 for i := 0; i < len(a); i++ {
180 useString(a[i+1:])
181 }
182 }
183
184 func g3c(a string) {
185 for i := 0; i < len(a); i++ {
186 useString(a[:i+1])
187 }
188 }
189
190 func h1(a []byte) {
191 c := a[:128]
192 for i := range c {
193 c[i] = byte(i)
194 }
195 }
196
197 func h2(a []byte) {
198 for i := range a[:128] {
199 a[i] = byte(i)
200 }
201 }
202
203 func k0(a [100]int) [100]int {
204 for i := 10; i < 90; i++ {
205 if a[0] == 0xdeadbeef {
206
207 continue
208 }
209 a[i-11] = i
210 a[i-10] = i
211 a[i-5] = i
212 a[i] = i
213 a[i+5] = i
214 a[i+10] = i
215 a[i+11] = i
216 }
217 return a
218 }
219
220 func k1(a [100]int) [100]int {
221 for i := 10; i < 90; i++ {
222 if a[0] == 0xdeadbeef {
223
224 continue
225 }
226 useSlice(a[:i-11])
227 useSlice(a[:i-10])
228 useSlice(a[:i-5])
229 useSlice(a[:i])
230 useSlice(a[:i+5])
231 useSlice(a[:i+10])
232 useSlice(a[:i+11])
233 useSlice(a[:i+12])
234
235 }
236 return a
237 }
238
239 func k2(a [100]int) [100]int {
240 for i := 10; i < 90; i++ {
241 if a[0] == 0xdeadbeef {
242
243 continue
244 }
245 useSlice(a[i-11:])
246 useSlice(a[i-10:])
247 useSlice(a[i-5:])
248 useSlice(a[i:])
249 useSlice(a[i+5:])
250 useSlice(a[i+10:])
251 useSlice(a[i+11:])
252 useSlice(a[i+12:])
253 }
254 return a
255 }
256
257 func k3(a [100]int) [100]int {
258 for i := -10; i < 90; i++ {
259 if a[0] == 0xdeadbeef {
260
261 continue
262 }
263 a[i+9] = i
264 a[i+10] = i
265 a[i+11] = i
266 }
267 return a
268 }
269
270 func k3neg(a [100]int) [100]int {
271 for i := 89; i > -11; i-- {
272 if a[0] == 0xdeadbeef {
273
274 continue
275 }
276 a[i+9] = i
277 a[i+10] = i
278 a[i+11] = i
279 }
280 return a
281 }
282
283 func k3neg2(a [100]int) [100]int {
284 for i := 89; i >= -10; i-- {
285 if a[0] == 0xdeadbeef {
286
287 continue
288 }
289 a[i+9] = i
290 a[i+10] = i
291 a[i+11] = i
292 }
293 return a
294 }
295
296 func k4(a [100]int) [100]int {
297 min := (-1) << 63
298 for i := min; i < min+50; i++ {
299 a[i-min] = i
300 }
301 return a
302 }
303
304 func k5(a [100]int) [100]int {
305 max := (1 << 63) - 1
306 for i := max - 50; i < max; i++ {
307 a[i-max+50] = i
308 a[i-(max-70)] = i
309 }
310 return a
311 }
312
313 func d1(a [100]int) [100]int {
314 for i := 0; i < 100; i++ {
315 for j := 0; j < i; j++ {
316 a[j] = 0
317 a[j+1] = 0
318 a[j+2] = 0
319 }
320 }
321 return a
322 }
323
324 func d2(a [100]int) [100]int {
325 for i := 0; i < 100; i++ {
326 for j := 0; i > j; j++ {
327 a[j] = 0
328 a[j+1] = 0
329 a[j+2] = 0
330 }
331 }
332 return a
333 }
334
335 func d3(a [100]int) [100]int {
336 for i := 0; i <= 99; i++ {
337 for j := 0; j <= i-1; j++ {
338 a[j] = 0
339 a[j+1] = 0
340 a[j+2] = 0
341 }
342 }
343 return a
344 }
345
346 func d4() {
347 for i := int64(math.MaxInt64 - 9); i < math.MaxInt64-2; i += 4 {
348 useString("foo")
349 }
350 for i := int64(math.MaxInt64 - 8); i < math.MaxInt64-2; i += 4 {
351 useString("foo")
352 }
353 for i := int64(math.MaxInt64 - 7); i < math.MaxInt64-2; i += 4 {
354 useString("foo")
355 }
356 for i := int64(math.MaxInt64 - 6); i < math.MaxInt64-2; i += 4 {
357 useString("foo")
358 }
359 for i := int64(math.MaxInt64 - 9); i <= math.MaxInt64-2; i += 4 {
360 useString("foo")
361 }
362 for i := int64(math.MaxInt64 - 8); i <= math.MaxInt64-2; i += 4 {
363 useString("foo")
364 }
365 for i := int64(math.MaxInt64 - 7); i <= math.MaxInt64-2; i += 4 {
366 useString("foo")
367 }
368 for i := int64(math.MaxInt64 - 6); i <= math.MaxInt64-2; i += 4 {
369 useString("foo")
370 }
371 }
372
373 func d5() {
374 for i := int64(math.MinInt64 + 9); i > math.MinInt64+2; i -= 4 {
375 useString("foo")
376 }
377 for i := int64(math.MinInt64 + 8); i > math.MinInt64+2; i -= 4 {
378 useString("foo")
379 }
380 for i := int64(math.MinInt64 + 7); i > math.MinInt64+2; i -= 4 {
381 useString("foo")
382 }
383 for i := int64(math.MinInt64 + 6); i > math.MinInt64+2; i -= 4 {
384 useString("foo")
385 }
386 for i := int64(math.MinInt64 + 9); i >= math.MinInt64+2; i -= 4 {
387 useString("foo")
388 }
389 for i := int64(math.MinInt64 + 8); i >= math.MinInt64+2; i -= 4 {
390 useString("foo")
391 }
392 for i := int64(math.MinInt64 + 7); i >= math.MinInt64+2; i -= 4 {
393 useString("foo")
394 }
395 for i := int64(math.MinInt64 + 6); i >= math.MinInt64+2; i -= 4 {
396 useString("foo")
397 }
398 }
399
400 func bce1() {
401
402 a := int64(9223372036854774057)
403 b := int64(-1547)
404 z := int64(1337)
405
406 if a%z == b%z {
407 panic("invalid test: modulos should differ")
408 }
409
410 for i := b; i < a; i += z {
411 useString("foobar")
412 }
413 }
414
415 func nobce2(a string) {
416 for i := int64(0); i < int64(len(a)); i++ {
417 useString(a[i:])
418 }
419 for i := int64(0); i < int64(len(a))-31337; i++ {
420 useString(a[i:])
421 }
422 for i := int64(0); i < int64(len(a))+int64(-1<<63); i++ {
423 useString(a[i:])
424 }
425 j := int64(len(a)) - 123
426 for i := int64(0); i < j+123+int64(-1<<63); i++ {
427 useString(a[i:])
428 }
429 for i := int64(0); i < j+122+int64(-1<<63); i++ {
430
431 useString(a[i:])
432 }
433 }
434
435 func nobce3(a [100]int64) [100]int64 {
436 min := int64((-1) << 63)
437 max := int64((1 << 63) - 1)
438 for i := min; i < max; i++ {
439 }
440 return a
441 }
442
443 func issue26116a(a []int) {
444
445 for i := 3; i > 6; i++ {
446 a[i] = 0
447 }
448 for i := 7; i < 3; i-- {
449 a[i] = 1
450 }
451 }
452
453 func stride1(x *[7]int) int {
454 s := 0
455 for i := 0; i <= 8; i += 3 {
456 s += x[i]
457 }
458 return s
459 }
460
461 func stride2(x *[7]int) int {
462 s := 0
463 for i := 0; i < 9; i += 3 {
464 s += x[i]
465 }
466 return s
467 }
468
469
470 func useString(a string) {
471 }
472
473
474 func useSlice(a []int) {
475 }
476
477 func main() {
478 }
479
View as plain text