cmd/gc: correctly typecheck expression lists in returns.

Invalid return statements were accidentally compiling or
triggering internal errors.
Fixes #3044.

R=golang-dev, rsc
CC=golang-dev, remy
https://golang.org/cl/5673074
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c
index b791c9e..5bb386d 100644
--- a/src/cmd/gc/typecheck.c
+++ b/src/cmd/gc/typecheck.c
@@ -1410,7 +1410,10 @@
 
 	case ORETURN:
 		ok |= Etop;
-		typechecklist(n->list, Erv | Efnstruct);
+		if(count(n->list) == 1)
+			typechecklist(n->list, Erv | Efnstruct);
+		else
+			typechecklist(n->list, Erv);
 		if(curfn == N) {
 			yyerror("return outside function");
 			goto error;