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