gc: remove type elision in struct literals

R=ken2
CC=golang-dev
https://golang.org/cl/5437136
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c
index 802d6dc..eb6e84e 100644
--- a/src/cmd/gc/typecheck.c
+++ b/src/cmd/gc/typecheck.c
@@ -2183,7 +2183,7 @@
 				s = f->sym;
 				fielddup(newname(s), hash, nhash);
 				r = l->right;
-				pushtype(r, f->type);
+				// No pushtype allowed here.  Tried and rejected.
 				typecheck(&r, Erv);
 				l->right = assignconv(r, f->type, "field value");
 			}
diff --git a/test/complit.go b/test/complit.go
index c9de616..8dfc71d 100644
--- a/test/complit.go
+++ b/test/complit.go
@@ -58,7 +58,7 @@
 	var tp *T
 	tp = &T{0, 7.2, "hi", &t}
 
-	tl := &T{i: 0, next: {i: 1, next: {i: 2, next: {i: 3, next: {i: 4}}}}}
+	tl := &T{i: 0, next: &T{i: 1, next: &T{i: 2, next: &T{i: 3, next: &T{i: 4}}}}}
 	teq(tl, 5)
 
 	a1 := []int{1, 2, 3}
diff --git a/test/complit1.go b/test/complit1.go
index f4f7311..aaf701f 100644
--- a/test/complit1.go
+++ b/test/complit1.go
@@ -34,6 +34,6 @@
 
 var (
 	_ = &T{0, 0, "", nil}               // ok
-	_ = &T{i: 0, f: 0, s: "", next: {}} // ok
+	_ = &T{i: 0, f: 0, s: "", next: {}} // ERROR "missing type in composite literal"
 	_ = &T{0, 0, "", {}}                // ERROR "missing type in composite literal"
 )