]> Cypherpunks.ru repositories - gostls13.git/commitdiff
[dev.ssa] Merge remote-tracking branch 'origin/master' into ssamerge
authorKeith Randall <khr@golang.org>
Wed, 1 Jul 2015 03:51:17 +0000 (20:51 -0700)
committerKeith Randall <khr@golang.org>
Wed, 1 Jul 2015 04:11:33 +0000 (21:11 -0700)
Semi-regular merge from tip into ssa branch.

Change-Id: I9cbe23f566410496d4ceb97c1435e2df7f2b56ec

1  2 
src/cmd/compile/internal/gc/pgen.go

index 6a6c213b848f7b1d8945bea5fc894c201499d15e,47cb8b12012af8ee74c9572b02118c8d694094d0..33c600aed9ceae37c68ccc285f4ddf1de578cebc
@@@ -5,7 -5,6 +5,7 @@@
  package gc
  
  import (
 +      "cmd/compile/internal/ssa"
        "cmd/internal/obj"
        "crypto/md5"
        "fmt"
@@@ -354,8 -353,6 +354,8 @@@ func compile(fn *Node) 
        var nam *Node
        var gcargs *Sym
        var gclocals *Sym
 +      var ssafn *ssa.Func
 +      var usessa bool
        if fn.Nbody == nil {
                if pure_go != 0 || strings.HasPrefix(fn.Func.Nname.Sym.Name, "init.") {
                        Yyerror("missing function body for %q", fn.Func.Nname.Sym.Name)
                goto ret
        }
  
 +      // Build an SSA backend function.
 +      // TODO: get rid of usessa.
 +      ssafn, usessa = buildssa(Curfn)
 +
        continpc = nil
        breakpc = nil
  
                nam = nil
        }
        ptxt = Thearch.Gins(obj.ATEXT, nam, &nod1)
+       Afunclit(&ptxt.From, Curfn.Func.Nname)
        ptxt.From3 = new(obj.Addr)
        if fn.Func.Dupok {
                ptxt.From3.Offset |= obj.DUPOK
        if fn.Func.Nosplit {
                ptxt.From3.Offset |= obj.NOSPLIT
        }
+       if fn.Func.Systemstack {
+               ptxt.From.Sym.Cfunc = 1
+       }
  
        // Clumsy but important.
        // See test/recover.go for test cases and src/reflect/value.go
                }
        }
  
-       Afunclit(&ptxt.From, Curfn.Func.Nname)
        ginit()
  
        gcargs = makefuncdatasym("gcargs·%d", obj.FUNCDATA_ArgsPointerMaps)
                }
        }
  
 +      if ssafn != nil && usessa {
 +              genssa(ssafn, ptxt, gcargs, gclocals)
 +              return
 +      }
        Genlist(Curfn.Func.Enter)
        Genlist(Curfn.Nbody)
        gclean()