diff options
Diffstat (limited to 'src/cmd/compile/internal/liveness/plive.go')
-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 |