]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/gc/pgen.go
[dev.ssa] Merge remote-tracking branch 'origin/master' into ssamerge
[gostls13.git] / src / cmd / compile / internal / gc / pgen.go
index 47cb8b12012af8ee74c9572b02118c8d694094d0..33c600aed9ceae37c68ccc285f4ddf1de578cebc 100644 (file)
@@ -5,6 +5,7 @@
 package gc
 
 import (
+       "cmd/compile/internal/ssa"
        "cmd/internal/obj"
        "crypto/md5"
        "fmt"
@@ -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)
@@ -404,6 +407,10 @@ func compile(fn *Node) {
                goto ret
        }
 
+       // Build an SSA backend function.
+       // TODO: get rid of usessa.
+       ssafn, usessa = buildssa(Curfn)
+
        continpc = nil
        breakpc = nil
 
@@ -467,6 +474,10 @@ func compile(fn *Node) {
                }
        }
 
+       if ssafn != nil && usessa {
+               genssa(ssafn, ptxt, gcargs, gclocals)
+               return
+       }
        Genlist(Curfn.Func.Enter)
        Genlist(Curfn.Nbody)
        gclean()