// compile | |
// Copyright 2018 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. | |
// This program results in a loop inferred to increment | |
// j by 0, causing bounds check elimination to attempt | |
// something%0, which panics (in the bug). | |
package q | |
func f() { | |
var s1 string | |
var b bool | |
if b { | |
b = !b | |
s1 += "a" | |
} | |
var s2 string | |
var i, j int | |
if (s1 <= "") || (s2 >= "") { | |
j = len(s1[:6]) | |
} else { | |
i = len("b") | |
} | |
for j < 0 { | |
j += i | |
} | |
} |