// compile | |
// Copyright 2016 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
package bug | |
func example(n int) (rc int) { | |
var cc, ll, pp, rr [27]int | |
for q0 := 0; q0 < n-2; q0++ { | |
for q1 := q0 + 2; q1 < n; q1++ { | |
var c, d, l, p, r int | |
b0 := 1 << uint(q0) | |
b1 := 1 << uint(q1) | |
l = ((b0 << 1) | b1) << 1 | |
c = b0 | b1 | (-1 << uint(n)) | |
r = ((b0 >> 1) | b1) >> 1 | |
E: | |
if c != -1 { | |
p = ^(l | c | r) | |
} else { | |
rc++ | |
goto R | |
} | |
L: | |
if p != 0 { | |
lsb := p & -p | |
p &^= lsb | |
ll[d], cc[d], rr[d], pp[d] = l, c, r, p | |
l, c, r = (l|lsb)<<1, c|lsb, (r|lsb)>>1 | |
d++ | |
goto E | |
} | |
R: | |
d-- | |
if d >= 0 { | |
l, c, r, p = ll[d], cc[d], rr[d], pp[d] | |
goto L | |
} | |
} | |
} | |
rc <<= 1 | |
return | |
} |