blob: fd39633b6e8cc93961e1e30da3102c69103987a2 [file] [edit]
// run
// Copyright 2026 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 main
var n = 1
//go:noinline
func bug(a func(int)) {
m := int64(len("x"[:n])) - (1 << 62)
for i, j := int64(-1<<63), 0; i < m; i, j = i+(1<<62), j+1 {
if j == 2 {
a(3)
return
}
}
a(2)
}
func main() {
var r int
var set bool
bug(func(x int) {
if set {
panic("called twice")
}
set = true
r = x
})
if !set {
panic("not called")
}
if r != 2 {
panic("got wrong result")
}
}