package gc
import (
+ "cmd/compile/internal/ssa"
"cmd/internal/obj"
"crypto/md5"
"fmt"
Deferreturn = Sysfunc("deferreturn")
Panicindex = Sysfunc("panicindex")
panicslice = Sysfunc("panicslice")
+ panicdivide = Sysfunc("panicdivide")
throwreturn = Sysfunc("throwreturn")
+ growslice = Sysfunc("growslice")
+ typedmemmove_nostore = Sysfunc("typedmemmove_nostore")
+ panicdottype = Sysfunc("panicdottype")
}
lno := setlineno(fn)
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.
+ if Thearch.Thestring == "amd64" {
+ ssafn, usessa = buildssa(Curfn)
+ }
+
continpc = nil
breakpc = nil
}
}
+ if ssafn != nil && usessa {
+ genssa(ssafn, ptxt, gcargs, gclocals)
+ if Curfn.Func.Endlineno != 0 {
+ lineno = Curfn.Func.Endlineno
+ }
+ return
+ }
Genlist(Curfn.Func.Enter)
Genlist(Curfn.Nbody)
gclean()