]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: make Maxarg local
authorJosh Bleecher Snyder <josharian@gmail.com>
Fri, 17 Mar 2017 15:58:36 +0000 (08:58 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Fri, 17 Mar 2017 23:57:03 +0000 (23:57 +0000)
Passes toolstash -cmp. No compiler performance impact.

Updates #15756

Change-Id: I1294058716d83dd1be495d399ed7ab2277754dc6
Reviewed-on: https://go-review.googlesource.com/38329
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/dcl.go
src/cmd/compile/internal/gc/go.go
src/cmd/compile/internal/gc/init.go
src/cmd/compile/internal/gc/ssa.go

index d994914843a7f9bbb23d4fda8e8370992460f366..e47cf194a1f6fb3a738b6b783e89d7371e230622 100644 (file)
@@ -1200,7 +1200,6 @@ func addmethod(msym *Sym, t *Type, local, nointerface bool) {
 
 func funccompile(n *Node) {
        Stksize = BADWIDTH
-       Maxarg = 0
 
        if n.Type == nil {
                if nerrors == 0 {
index fe9411066a66c542ba1f30f737a669cf6c041307..57408e665de0ed3ecaf8bcf628cff63511e8895c 100644 (file)
@@ -245,8 +245,6 @@ var dclcontext Class // PEXTERN/PAUTO
 
 var statuniqgen int // name generator for static temps
 
-var Maxarg int64
-
 var Stksize int64 // stack size for current frame
 
 var stkptrsize int64 // prefix of stack containing pointers
index d2fba7bb598b1def9c85f0bc832f1fa5c5aff6bb..500def7658b62681cf401561499e776dc179a623 100644 (file)
@@ -90,8 +90,6 @@ func fninit(n []*Node) {
        addvar(gatevar, Types[TUINT8], PEXTERN)
 
        // (2)
-       Maxarg = 0
-
        fn := nod(ODCLFUNC, nil, nil)
        initsym := lookup("init")
        fn.Func.Nname = newname(initsym)
index dc8eb02c211976c9d6cb7d506a0d3f62dcef8983..29a2728caf9f7a8e98af46112430a54085f88766 100644 (file)
@@ -4204,6 +4204,8 @@ type SSAGenState struct {
        SSEto387 map[int16]int16
        // Some architectures require a 64-bit temporary for FP-related register shuffling. Examples include x86-387, PPC, and Sparc V8.
        ScratchFpMem *Node
+
+       maxarg int64 // largest frame size for arguments to calls made by the function
 }
 
 // Pc returns the current Prog.
@@ -4355,7 +4357,7 @@ func genssa(f *ssa.Func, ptxt *obj.Prog, gcargs, gclocals *Sym) {
        liveness(e.curfn, ptxt, gcargs, gclocals)
 
        // Add frame prologue. Zero ambiguously live variables.
-       thearch.Defframe(ptxt, e.curfn, Stksize+Maxarg)
+       thearch.Defframe(ptxt, e.curfn, Stksize+s.maxarg)
        if Debug['f'] != 0 {
                frame(0)
        }
@@ -4631,8 +4633,8 @@ func (s *SSAGenState) Call(v *ssa.Value) *obj.Prog {
                }
                p.To.Reg = v.Args[0].Reg()
        }
-       if Maxarg < v.AuxInt {
-               Maxarg = v.AuxInt
+       if s.maxarg < v.AuxInt {
+               s.maxarg = v.AuxInt
        }
        return p
 }