aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/liveness
diff options
context:
space:
mode:
authorDavid Chase <drchase@google.com>2021-03-15 21:12:08 +0000
committerDavid Chase <drchase@google.com>2021-03-15 21:28:45 +0000
commite61c9ddb7f1a790f6a52f563dccb4ac264f2e704 (patch)
treecf3c49cf8575bfe24eb7fae5b66220f274e6ba95 /src/cmd/compile/internal/liveness
parent8ed438c077d82c4b4662c327dbbdb3c64e7547ca (diff)
downloadgo-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.go19
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