[dev.ssa] cmd/runtime: generate gc bitmaps for SSA-compiled code

This change is all about leveraging the gc bitmap generation
that is already done by the current compiler.  We rearrange how
stack allocation is done so that we generate a variable declaration
for each spill.  We also reorganize how args/locals are recorded
during SSA.  Then we can use the existing allocauto/defframe to
allocate the stack frame and liveness to make the gc bitmaps.

With this change, stack copying works correctly and we no longer
need hacks in runtime/stack*.go to make tests work.  GC is close
to working, it just needs write barriers.

Change-Id: I990fb4e3fbe98850c6be35c3185a1c85d9e1a6ba
Reviewed-on: https://go-review.googlesource.com/13894
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
diff --git a/src/cmd/compile/internal/ssa/value.go b/src/cmd/compile/internal/ssa/value.go
index d213b72..a5915da 100644
--- a/src/cmd/compile/internal/ssa/value.go
+++ b/src/cmd/compile/internal/ssa/value.go
@@ -142,17 +142,15 @@
 // ArgSymbol is an aux value that encodes an argument or result
 // variable's constant offset from FP (FP = SP + framesize).
 type ArgSymbol struct {
-	Typ    Type         // Go type
-	Offset int64        // Distance above frame pointer
-	Sym    fmt.Stringer // A *gc.Sym referring to the argument/result variable.
+	Typ  Type         // Go type
+	Node fmt.Stringer // A *gc.Node referring to the argument/result variable.
 }
 
 // AutoSymbol is an aux value that encodes a local variable's
 // constant offset from SP.
 type AutoSymbol struct {
-	Typ    Type         // Go type
-	Offset int64        // Distance above stack pointer.  Set by stackalloc in SSA.
-	Sym    fmt.Stringer // A *gc.Sym referring to a local (auto) variable.
+	Typ  Type         // Go type
+	Node fmt.Stringer // A *gc.Node referring to a local (auto) variable.
 }
 
 func (s *ExternSymbol) String() string {
@@ -160,9 +158,9 @@
 }
 
 func (s *ArgSymbol) String() string {
-	return s.Sym.String()
+	return s.Node.String()
 }
 
 func (s *AutoSymbol) String() string {
-	return s.Sym.String()
+	return s.Node.String()
 }