// layout orders basic blocks in f with the goal of minimizing control flow instructions. // After this phase returns, the order of f.Blocks matters and is the order // in which those blocks will appear in the assembly output. func layout(f *Func) { … } // Register allocation may use a different order which has constraints // imposed by the linear-scan algorithm. func layoutRegallocOrder(f *Func) []*Block { … } func layoutOrder(f *Func) []*Block { … }