mirror of
https://github.com/golang/go
synced 2024-09-15 22:20:06 +00:00
cmd/compile: enable inlining variadic functions
As a side effect of working on mid-stack inlining, we've fixed support for inlining variadic functions. Might as well enable it. Change-Id: I7f555f8b941969791db7eb598c0b49f6dc0820aa Reviewed-on: https://go-review.googlesource.com/100456 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
c74aa39f47
commit
09d4455f45
|
@ -13,7 +13,7 @@
|
||||||
// 0: disabled
|
// 0: disabled
|
||||||
// 1: 80-nodes leaf functions, oneliners, lazy typechecking (default)
|
// 1: 80-nodes leaf functions, oneliners, lazy typechecking (default)
|
||||||
// 2: (unassigned)
|
// 2: (unassigned)
|
||||||
// 3: allow variadic functions
|
// 3: (unassigned)
|
||||||
// 4: allow non-leaf functions
|
// 4: allow non-leaf functions
|
||||||
//
|
//
|
||||||
// At some point this may get another default and become switch-offable with -N.
|
// At some point this may get another default and become switch-offable with -N.
|
||||||
|
@ -23,9 +23,6 @@
|
||||||
//
|
//
|
||||||
// The debug['m'] flag enables diagnostic output. a single -m is useful for verifying
|
// The debug['m'] flag enables diagnostic output. a single -m is useful for verifying
|
||||||
// which calls get inlined or not, more is for debugging, and may go away at any point.
|
// which calls get inlined or not, more is for debugging, and may go away at any point.
|
||||||
//
|
|
||||||
// TODO:
|
|
||||||
// - inline functions with ... args
|
|
||||||
|
|
||||||
package gc
|
package gc
|
||||||
|
|
||||||
|
@ -141,17 +138,6 @@ func caninl(fn *Node) {
|
||||||
Fatalf("caninl on non-typechecked function %v", fn)
|
Fatalf("caninl on non-typechecked function %v", fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
// can't handle ... args yet
|
|
||||||
if Debug['l'] < 3 {
|
|
||||||
f := fn.Type.Params().Fields()
|
|
||||||
if len := f.Len(); len > 0 {
|
|
||||||
if t := f.Index(len - 1); t.Isddd() {
|
|
||||||
reason = "has ... args"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Runtime package must not be instrumented.
|
// Runtime package must not be instrumented.
|
||||||
// Instrument skips runtime package. However, some runtime code can be
|
// Instrument skips runtime package. However, some runtime code can be
|
||||||
// inlined into other packages and instrumented there. To avoid this,
|
// inlined into other packages and instrumented there. To avoid this,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
// errorcheck -0 -m -l=3
|
// errorcheck -0 -m
|
||||||
|
|
||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
// Copyright 2016 The Go Authors. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// Test more aggressive inlining (-l=3 allows variadic functions)
|
// Test inlining of variadic functions.
|
||||||
// See issue #18116.
|
// See issue #18116.
|
||||||
|
|
||||||
package foo
|
package foo
|
||||||
|
|
Loading…
Reference in a new issue