cmd/gc: fix call order in array literal of slice literal of make chan

Fixes #8761.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/144530045
diff --git a/test/fixedbugs/issue8761.go b/test/fixedbugs/issue8761.go
new file mode 100644
index 0000000..badf639
--- /dev/null
+++ b/test/fixedbugs/issue8761.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2014 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.
+
+// issue 8761
+// used to confuse code generator into using temporary before initialization.
+// caused 'variable live at entry' error in liveness analysis.
+
+package p
+
+func _() {
+	type C chan int
+	_ = [1][]C{[]C{make(chan int)}}
+}
+
+func _() {
+	type C interface{}
+	_ = [1][]C{[]C{recover()}}
+}
+
+func _() {
+	type C *int
+	_ = [1][]C{[]C{new(int)}}
+}