cmd/compile: move Node.Vargen, Node.Iota into Node.Name

$ sizeof -p cmd/compile/internal/gc Node
Node 192
$

Change-Id: I8f0c1a3cc2bf9c8eff02bbd8d061ff98affc9eb0
Reviewed-on: https://go-review.googlesource.com/10529
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go
index 2a88861..0c50cb4 100644
--- a/src/cmd/compile/internal/gc/dcl.go
+++ b/src/cmd/compile/internal/gc/dcl.go
@@ -229,7 +229,7 @@
 	s.Block = block
 	s.Lastlineno = int32(parserline())
 	s.Def = n
-	n.Vargen = int32(gen)
+	n.Name.Vargen = int32(gen)
 	n.Funcdepth = Funcdepth
 	n.Class = uint8(ctxt)
 
@@ -423,9 +423,8 @@
 		// walkdef will check s->def again once
 		// all the input source has been processed.
 		n = newname(s)
-
 		n.Op = ONONAME
-		n.Iota = iota_ // save current iota value in const declarations
+		n.Name.Iota = iota_ // save current iota value in const declarations
 	}
 
 	if Curfn != nil && n.Funcdepth > 0 && n.Funcdepth != Funcdepth && n.Op == ONAME {
@@ -624,7 +623,7 @@
 			declare(n.Left, PPARAM)
 			if dclcontext == PAUTO {
 				vargen++
-				n.Left.Vargen = int32(vargen)
+				n.Left.Name.Vargen = int32(vargen)
 			}
 		}
 	}
@@ -641,7 +640,7 @@
 			declare(n.Left, PPARAM)
 			if dclcontext == PAUTO {
 				vargen++
-				n.Left.Vargen = int32(vargen)
+				n.Left.Name.Vargen = int32(vargen)
 			}
 		}
 	}
@@ -688,7 +687,7 @@
 		declare(n.Left, PPARAMOUT)
 		if dclcontext == PAUTO {
 			i++
-			n.Left.Vargen = int32(i)
+			n.Left.Name.Vargen = int32(i)
 		}
 	}
 }
diff --git a/src/cmd/compile/internal/gc/esc.go b/src/cmd/compile/internal/gc/esc.go
index 76fb4d1..9e1e131 100644
--- a/src/cmd/compile/internal/gc/esc.go
+++ b/src/cmd/compile/internal/gc/esc.go
@@ -1627,7 +1627,7 @@
 		if src.Esc&EscMask != EscReturn {
 			src.Esc = EscReturn | src.Esc&EscContentEscapes
 		}
-		src.Esc = escNoteOutputParamFlow(src.Esc, dst.Vargen, level)
+		src.Esc = escNoteOutputParamFlow(src.Esc, dst.Name.Vargen, level)
 		goto recurse
 	}
 
diff --git a/src/cmd/compile/internal/gc/fmt.go b/src/cmd/compile/internal/gc/fmt.go
index 95181ac..8cbae2b 100644
--- a/src/cmd/compile/internal/gc/fmt.go
+++ b/src/cmd/compile/internal/gc/fmt.go
@@ -205,8 +205,8 @@
 		fmt.Fprintf(&buf, " a(%v)", n.Addable)
 	}
 
-	if c == 0 && n.Vargen != 0 {
-		fmt.Fprintf(&buf, " g(%d)", n.Vargen)
+	if c == 0 && n.Name != nil && n.Name.Vargen != 0 {
+		fmt.Fprintf(&buf, " g(%d)", n.Name.Vargen)
 	}
 
 	if n.Lineno != 0 {
@@ -1130,8 +1130,8 @@
 		if (fmtmode == FExp || fmtmode == FErr) && n.Sym != nil && n.Sym.Name[0] == '~' && n.Sym.Name[1] == 'b' {
 			return "_"
 		}
-		if fmtmode == FExp && n.Sym != nil && !isblank(n) && n.Vargen > 0 {
-			return fmt.Sprintf("%v·%d", n.Sym, n.Vargen)
+		if fmtmode == FExp && n.Sym != nil && !isblank(n) && n.Name.Vargen > 0 {
+			return fmt.Sprintf("%v·%d", n.Sym, n.Name.Vargen)
 		}
 
 		// Special case: explicit name of func (*T) method(...) is turned into pkg.(*T).method,
@@ -1538,7 +1538,7 @@
 	}
 
 	if n.Sym != nil && n.Op != ONAME {
-		fmt.Fprintf(&buf, " %v G%d", n.Sym, n.Vargen)
+		fmt.Fprintf(&buf, " %v G%d", n.Sym, n.Name.Vargen)
 	}
 
 	if n.Type != nil {
diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go
index c674cc6..5bd7184 100644
--- a/src/cmd/compile/internal/gc/subr.go
+++ b/src/cmd/compile/internal/gc/subr.go
@@ -771,12 +771,13 @@
 			// so that all the copies of this const definition
 			// don't have the same iota value.
 			m = Nod(OXXX, nil, nil)
-
 			*m = *n
-			m.Iota = iota_
 			if lineno != 0 {
 				m.Lineno = lineno
 			}
+			m.Name = new(Name)
+			*m.Name = *n.Name
+			m.Name.Iota = iota_
 			break
 		}
 		fallthrough
@@ -1630,7 +1631,7 @@
 		}
 		switch n.Op {
 		case ONAME:
-			fmt.Printf("%v %v G%d %v width=%d\n", Oconv(int(n.Op), 0), n.Sym, n.Vargen, n.Type, w)
+			fmt.Printf("%v %v G%d %v width=%d\n", Oconv(int(n.Op), 0), n.Sym, n.Name.Vargen, n.Type, w)
 
 		case OTYPE:
 			fmt.Printf("%v %v width=%d\n", Oconv(int(n.Op), 0), n.Type, w)
diff --git a/src/cmd/compile/internal/gc/syntax.go b/src/cmd/compile/internal/gc/syntax.go
index a410cf4..4f362e4 100644
--- a/src/cmd/compile/internal/gc/syntax.go
+++ b/src/cmd/compile/internal/gc/syntax.go
@@ -42,9 +42,7 @@
 
 	Xoffset int64
 
-	Vargen  int32 // unique name for OTYPE/ONAME within a function.  Function outputs are numbered starting at one.
 	Lineno  int32
-	Iota    int32
 	Walkgen uint32
 
 	Funcdepth int32
@@ -87,6 +85,8 @@
 	Inlvar    *Node // ONAME substitute while inlining
 	Defn      *Node // initializing assignment
 	Decldepth int32 // declaration loop depth, increased for every loop or label
+	Vargen    int32 // unique name for OTYPE/ONAME within a function.  Function outputs are numbered starting at one.
+	Iota      int32 // value if this name is iota
 	Method    bool  // OCALLMETH name
 	Readonly  bool
 	Captured  bool // is the variable captured by a closure
diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go
index 36088e7..44501be 100644
--- a/src/cmd/compile/internal/gc/typecheck.go
+++ b/src/cmd/compile/internal/gc/typecheck.go
@@ -29,8 +29,8 @@
 		if r != nil {
 			if r.Op != OIOTA {
 				n = r
-			} else if n.Iota >= 0 {
-				n = Nodintconst(int64(n.Iota))
+			} else if n.Name.Iota >= 0 {
+				n = Nodintconst(int64(n.Name.Iota))
 			}
 		}
 	}
@@ -3565,7 +3565,9 @@
 	t = n.Type
 	t.Sym = n.Sym
 	t.Local = n.Local
-	t.Vargen = n.Vargen
+	if n.Name != nil {
+		t.Vargen = n.Name.Vargen
+	}
 	t.Siggen = 0
 	t.Method = nil
 	t.Xmethod = nil