]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: disable inlining for functions using runtime.deferrangefunc
authorzuojunwei.1024 <zuojunwei.1024@bytedance.com>
Tue, 23 Dec 2025 08:12:04 +0000 (16:12 +0800)
committerCherry Mui <cherryyz@google.com>
Tue, 30 Dec 2025 15:26:35 +0000 (07:26 -0800)
commitcd668d744f77da06ca9565f41c63c3a5251469ee
tree30077015dd0352f661f313d5b262ffd2bd801957
parent06eff0f7c3027a78088d45efdaec8ac3ed636481
cmd/compile: disable inlining for functions using runtime.deferrangefunc

The rangefunc rewrite pass implements defer using deferrangefunc and
deferproccat. The loop body is rewritten into a closure, it cannot be
inlined due to defer call. But the outer function may still be inlined
in certain scenarios (e.g., with PGO), leading to the defer executing
at the wrong time.

Fixes #77033

Change-Id: I4649fad5cd1b65891832523522002d9352711123
Reviewed-on: https://go-review.googlesource.com/c/go/+/732140
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/inline/inl.go
src/cmd/compile/testdata/script/issue77033.txt [new file with mode: 0644]