Revert "cmd/compile: strengthen SetFields/Width safety guarantee"

This reverts commit b1b4f67169c5ceb3c81ba900c5022722d28755ab.

Reason for revert: Broke the build.

Change-Id: I5c99779896e39137c93c77d016ce683c872a69d7
Reviewed-on: https://go-review.googlesource.com/38532
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/src/cmd/compile/internal/gc/closure.go b/src/cmd/compile/internal/gc/closure.go
index 9f0c073..41ee74b 100644
--- a/src/cmd/compile/internal/gc/closure.go
+++ b/src/cmd/compile/internal/gc/closure.go
@@ -362,6 +362,10 @@
 			xfunc.Func.Dcl = append(decls, xfunc.Func.Dcl...)
 		}
 
+		// Recalculate param offsets.
+		if f.Type.Width > 0 {
+			Fatalf("transformclosure: width is already calculated")
+		}
 		dowidth(f.Type)
 		xfunc.Type = f.Type // update type of ODCLFUNC
 	} else {
diff --git a/src/cmd/compile/internal/gc/type.go b/src/cmd/compile/internal/gc/type.go
index 772894f..49d22250 100644
--- a/src/cmd/compile/internal/gc/type.go
+++ b/src/cmd/compile/internal/gc/type.go
@@ -864,15 +864,6 @@
 
 // SetFields sets struct/interface type t's fields/methods to fields.
 func (t *Type) SetFields(fields []*Field) {
-	// If we've calculated the width of t before,
-	// then some other type such as a function signature
-	// might now have the wrong type.
-	// Rather than try to track and invalidate those,
-	// enforce that SetFields cannot be called once
-	// t's width has been calculated.
-	if t.WidthCalculated() {
-		Fatalf("SetFields of %v: width previously calculated", t)
-	}
 	t.wantEtype(TSTRUCT)
 	for _, f := range fields {
 		// If type T contains a field F with a go:notinheap