]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: strongly favor closure inlining
authorDavid Chase <drchase@google.com>
Fri, 15 Nov 2024 22:08:34 +0000 (17:08 -0500)
committerDavid Chase <drchase@google.com>
Tue, 19 Nov 2024 00:04:51 +0000 (00:04 +0000)
commit170436c045f1303543e6d0bf8b36fccac57da2cd
tree2c383dfdddacab1d55823ebcecc0282cf5ec2870
parentb8fe88393b122a06e00163dc464bf8cd14187f4b
cmd/compile: strongly favor closure inlining

This tweaks the inlining cost knob for closures
specifically, they receive a doubled budget.  The
rationale for this is that closures have a lot of
"crud" in their IR that will disappear after inlining,
so the standard budget penalizes them unnecessarily.

This is also the cause of these bugs -- looking at the
code involved, these closures "should" be inlineable,
therefore tweak the parameters until behavior matches
expectations.  It's not costly in binary size, because
the only-called-from-one-site case is common (especially
for rangefunc iterators).

I can imagine better fixes and I am going to try to
get that done, but this one is small and makes things
better.

Fixes #69411, #69539.

Change-Id: I8a892c40323173a723799e0ddad69dcc2724a8f9
Reviewed-on: https://go-review.googlesource.com/c/go/+/629195
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/cmd/cgo/internal/test/callback_windows.go
src/cmd/compile/internal/inline/inl.go
test/closure3.dir/main.go