aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/print.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2015-11-02 08:10:26 -0800
committerKeith Randall <khr@golang.org>2015-11-03 17:29:40 +0000
commit02f4d0a130ba95d7a03418c3ef308d7d21b34af3 (patch)
tree215eb9851e2a439261fd40af792b5d17688cccf9 /src/cmd/compile/internal/ssa/print.go
parent582baae22a108e0b5f09da52c20f5ced83fe6084 (diff)
downloadgo-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.go8
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)
+ }
}