diff options
author | Keith Randall <khr@golang.org> | 2015-11-02 08:10:26 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2015-11-03 17:29:40 +0000 |
commit | 02f4d0a130ba95d7a03418c3ef308d7d21b34af3 (patch) | |
tree | 215eb9851e2a439261fd40af792b5d17688cccf9 /src/cmd/compile/internal/ssa/print.go | |
parent | 582baae22a108e0b5f09da52c20f5ced83fe6084 (diff) | |
download | go-02f4d0a130ba95d7a03418c3ef308d7d21b34af3.tar.gz go-02f4d0a130ba95d7a03418c3ef308d7d21b34af3.zip |
[dev.ssa] cmd/compile: start arguments as spilled
Declare a function's arguments as having already been
spilled so their use just requires a restore.
Allow spill locations to be portions of larger objects the stack.
Required to load portions of compound input arguments.
Rename the memory input to InputMem. Use Arg for the
pre-spilled argument values.
Change-Id: I8fe2a03ffbba1022d98bfae2052b376b96d32dda
Reviewed-on: https://go-review.googlesource.com/16536
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/print.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/print.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/print.go b/src/cmd/compile/internal/ssa/print.go index 192dc83b39..b61e6f1cc7 100644 --- a/src/cmd/compile/internal/ssa/print.go +++ b/src/cmd/compile/internal/ssa/print.go @@ -28,6 +28,7 @@ type funcPrinter interface { value(v *Value, live bool) startDepCycle() endDepCycle() + named(n LocalSlot, vals []*Value) } type stringFuncPrinter struct { @@ -73,6 +74,10 @@ func (p stringFuncPrinter) startDepCycle() { func (p stringFuncPrinter) endDepCycle() {} +func (p stringFuncPrinter) named(n LocalSlot, vals []*Value) { + fmt.Fprintf(p.w, "name %s: %v\n", n.Name(), vals) +} + func fprintFunc(p funcPrinter, f *Func) { reachable, live := findlive(f) p.header(f) @@ -136,4 +141,7 @@ func fprintFunc(p funcPrinter, f *Func) { p.endBlock(b) } + for name, vals := range f.NamedValues { + p.named(name, vals) + } } |