gc: fix return variable named _

Fixes #1712.

R=ken2
CC=golang-dev
https://golang.org/cl/4445055
diff --git a/test/fixedbugs/bug331.go b/test/fixedbugs/bug331.go
new file mode 100644
index 0000000..28aee1d
--- /dev/null
+++ b/test/fixedbugs/bug331.go
@@ -0,0 +1,36 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug331
+
+// Copyright 2011 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.
+
+package main
+
+import "os"
+
+func f() (_ string, x float64, err os.Error) {
+	return
+}
+
+func g() (_ string, x float64, err os.Error) {
+	return "hello", 3.14, os.EOF
+}
+
+var _ func() (string, float64, os.Error) = f
+var _ func() (string, float64, os.Error) = g
+
+func main() {
+	x, y, z := g()
+	if x != "hello" || y != 3.14 || z != os.EOF {
+		println("wrong", x, len(x), y, z)
+	}
+}
+
+/*
+issue 1712
+
+bug331.go:12: cannot use "hello" (type string) as type float64 in assignment
+bug331.go:12: cannot use 0 (type float64) as type os.Error in assignment:
+	float64 does not implement os.Error (missing String method)
+bug331.go:12: error in shape across RETURN
+*/