| // 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. | |
| // Triggers a bug in writebarrier, which inserts one | |
| // between (first block) OpAddr x and (second block) a VarDef x, | |
| // which are then in the wrong order and unable to be | |
| // properly scheduled. | |
| package q | |
| var S interface{} | |
| func F(n int) { | |
| fun := func(x int) int { | |
| S = 1 | |
| return n | |
| } | |
| i := fun(([]int{})[n]) | |
| var fc [2]chan int | |
| S = (([1][2]chan int{fc})[i][i]) | |
| } |