| // 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 |
| } |
| } |