}
// Save the starting state for use by merge edges.
- var regList []startReg
+ // We append to a stack allocated variable that we'll
+ // later copy into s.startRegs in one fell swoop, to save
+ // on allocations.
+ regList := make([]startReg, 0, 32)
for r := register(0); r < s.numRegs; r++ {
v := s.regs[r].v
if v == nil {
}
regList = append(regList, startReg{r, v, s.regs[r].c, s.values[v.ID].uses.pos})
}
- s.startRegs[b.ID] = regList
+ s.startRegs[b.ID] = make([]startReg, len(regList))
+ copy(s.startRegs[b.ID], regList)
if s.f.pass.debug > regDebug {
fmt.Printf("after phis\n")