diff options
author | David Chase <drchase@google.com> | 2021-03-15 21:12:08 +0000 |
---|---|---|
committer | David Chase <drchase@google.com> | 2021-03-15 21:28:45 +0000 |
commit | e61c9ddb7f1a790f6a52f563dccb4ac264f2e704 (patch) | |
tree | cf3c49cf8575bfe24eb7fae5b66220f274e6ba95 /src/cmd/compile/internal/liveness | |
parent | 8ed438c077d82c4b4662c327dbbdb3c64e7547ca (diff) | |
download | go-e61c9ddb7f1a790f6a52f563dccb4ac264f2e704.tar.gz go-e61c9ddb7f1a790f6a52f563dccb4ac264f2e704.zip |
Revert "cmd/compile: spill output parameters passed in registers as autos"
This reverts commit 8ed438c077d82c4b4662c327dbbdb3c64e7547ca, CL 300749.
Reason for revert: Looks like it crashes on link-register architectures
Change-Id: I0c261df58900008cada3359889d2a87508158447
Reviewed-on: https://go-review.googlesource.com/c/go/+/302053
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/compile/internal/liveness')
-rw-r--r-- | src/cmd/compile/internal/liveness/plive.go | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/cmd/compile/internal/liveness/plive.go b/src/cmd/compile/internal/liveness/plive.go index f3fbb8b9b1..48a26cf66a 100644 --- a/src/cmd/compile/internal/liveness/plive.go +++ b/src/cmd/compile/internal/liveness/plive.go @@ -405,17 +405,11 @@ func (lv *liveness) pointerMap(liveout bitvec.BitVec, vars []*ir.Name, args, loc } node := vars[i] switch node.Class { - case ir.PPARAM, ir.PPARAMOUT: - if !node.IsOutputParamInRegisters() { - if node.FrameOffset() < 0 { - lv.f.Fatalf("Node %v has frameoffset %d\n", node.Sym().Name, node.FrameOffset()) - } - typebits.Set(node.Type(), node.FrameOffset(), args) - break - } - fallthrough // PPARAMOUT in registers acts memory-allocates like an AUTO case ir.PAUTO: typebits.Set(node.Type(), node.FrameOffset()+lv.stkptrsize, locals) + + case ir.PPARAM, ir.PPARAMOUT: + typebits.Set(node.Type(), node.FrameOffset(), args) } } } @@ -1089,10 +1083,8 @@ func (lv *liveness) emit() (argsSym, liveSym *obj.LSym) { for _, n := range lv.vars { switch n.Class { case ir.PPARAM, ir.PPARAMOUT: - if !n.IsOutputParamInRegisters() { - if maxArgNode == nil || n.FrameOffset() > maxArgNode.FrameOffset() { - maxArgNode = n - } + if maxArgNode == nil || n.FrameOffset() > maxArgNode.FrameOffset() { + maxArgNode = n } } } @@ -1290,7 +1282,6 @@ func isfat(t *types.Type) bool { return false } -// TODO THIS IS ALL WRONG AND NEEDS TO USE ABI. func WriteFuncMap(fn *ir.Func) { if ir.FuncName(fn) == "_" || fn.Sym().Linkname != "" { return |