if fn.Func.Pragma&Nosplit != 0 {
s.f.NoSplit = true
}
- s.exitCode = fn.Func.Exit
s.panics = map[funcLine]*ssa.Block{}
s.softFloat = s.config.SoftFloat
s.insertPhis()
- // Don't carry reference this around longer than necessary
- s.exitCode = Nodes{}
-
// Main call to ssa package to compile function
ssa.Compile(s.f)
return s.f
labels map[string]*ssaLabel
labeledNodes map[*Node]*ssaLabel
- // Code that must precede any return
- // (e.g., copying value of heap-escaped paramout back to true paramout)
- exitCode Nodes
-
// unlabeled break and continue statement tracking
breakTo *ssa.Block // current target for plain break statement
continueTo *ssa.Block // current target for plain continue statement
// Run exit code. Typically, this code copies heap-allocated PPARAMOUT
// variables back to the stack.
- s.stmtList(s.exitCode)
+ s.stmtList(s.curfn.Func.Exit)
// Store SSAable PPARAMOUT variables back to stack locations.
for _, n := range s.returns {