1// compile 2 3// Copyright 2018 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Triggers a bug in writebarrier, which inserts one 8// between (first block) OpAddr x and (second block) a VarDef x, 9// which are then in the wrong order and unable to be 10// properly scheduled. 11 12package q 13 14var S interface{} 15 16func F(n int) { 17 fun := func(x int) int { 18 S = 1 19 return n 20 } 21 i := fun(([]int{})[n]) 22 23 var fc [2]chan int 24 S = (([1][2]chan int{fc})[i][i]) 25} 26