InlFuncsWithClosures int `help:"allow functions with closures to be inlined" concurrent:"ok"`
InlStaticInit int `help:"allow static initialization of inlined calls" concurrent:"ok"`
InterfaceCycles int `help:"allow anonymous interface cycles"`
- InlineSCCOnePass int `help:"visit SCC funcs only once during inlining (legacy behavior)"`
Libfuzzer int `help:"enable coverage instrumentation for libfuzzer"`
LoopVar int `help:"shared (0, default), 1 (private loop variables), 2, private + log"`
LoopVarHash string `help:"for debugging changes in loop behavior. Overrides experiment and loopvar flag."`
// before performing any inlining, the results are less
// sensitive to the order within the SCC (see #58905 for an
// example).
- if base.Debug.InlineSCCOnePass == 0 {
- // Compute inlinability for all functions in the SCC ...
- for _, n := range list {
- doCanInline(n, recursive, numfns)
- }
- // ... then make a second pass to do inlining of calls.
- if doInline {
- for _, n := range list {
- InlineCalls(n, p)
- }
- }
- } else {
- // Legacy ordering to make it easier to triage any bugs
- // or compile time issues that might crop up.
+
+ // First compute inlinability for all functions in the SCC ...
+ for _, n := range list {
+ doCanInline(n, recursive, numfns)
+ }
+ // ... then make a second pass to do inlining of calls.
+ if doInline {
for _, n := range list {
- doCanInline(n, recursive, numfns)
- if doInline {
- InlineCalls(n, p)
- }
+ InlineCalls(n, p)
}
}
})