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