8.4.3 内联操作
func InlinePackage() {
ir.VisitFuncsBottomUp(typecheck.Target.Decls, func(scc []*ir.Func, recursive bool) {
numfns := numNonClosures(scc)
for _, n := range scc {
// 判断递归调用场景
if !recursive || numfns > 1 {
CanInline(n)
} else {
if base.Flag.LowerM > 1 {
fmt.Printf("%v: cannot inline %v: recursive\n", ir.Line(n), n.Nname)
}
}
InlineCalls(n)
}
})
}
最后更新于