]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: encourage inlining of functions with single-call bodies
authorKeith Randall <keithr@alum.mit.edu>
Mon, 5 Nov 2018 03:23:08 +0000 (19:23 -0800)
committerKeith Randall <khr@golang.org>
Thu, 8 Nov 2018 17:29:23 +0000 (17:29 +0000)
commit13baf4b2cd34dfb41c570e35b48ec287713f4d7f
tree4dd2059a36ca8d95f82e89ebc89dbdc8c61249a5
parentbe5f646dabf5de85e128f46f102e8c9acdd8fe90
cmd/compile: encourage inlining of functions with single-call bodies

This is a simple tweak to allow a bit more mid-stack inlining.
In cases like this:

func f() {
    g()
}

We'd really like to inline f into its callers. It can't hurt.

We implement this optimization by making calls a bit cheaper, enough
to afford a single call in the function body, but not 2.
The remaining budget allows for some argument modification, or perhaps
a wrapping conditional:

func f(x int) {
    g(x, 0)
}
func f(x int) {
    if x > 0 {
        g()
    }
}

Update #19348

Change-Id: Ifb1ea0dd1db216c3fd5c453c31c3355561fe406f
Reviewed-on: https://go-review.googlesource.com/c/147361
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/gc/inl.go
src/runtime/extern.go
src/runtime/runtime-gdb_test.go
src/runtime/stack_test.go
test/closure3.dir/main.go
test/fixedbugs/issue7921.go
test/inline.go
test/live_syscall.go