]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.19] cmd/compile: defer transitive inlining until after AST is...
authorMichael Knyszek <mknyszek@google.com>
Mon, 3 Apr 2023 20:07:11 +0000 (20:07 +0000)
committerMichael Knyszek <mknyszek@google.com>
Wed, 5 Apr 2023 15:28:06 +0000 (15:28 +0000)
commite6130c66c87ba54b5847825ca68d221d8898ceb5
tree70dd87f8ae610f1dba0729e6da5d8f14d6eb9891
parentca305e101d89969b5cc6a812b1f12038b769aaa2
[release-branch.go1.19] cmd/compile: defer transitive inlining until after AST is edited

This CL changes the inliner to process transitive inlining iteratively
after the AST has actually been edited, rather than recursively and
immediately. This is important for handling indirect function calls
correctly, because ir.reassigned walks the function body looking for
reassignments; whereas previously the inlined reassignments might not
have been actually added to the AST yet.

Fixes #59158.

This change was previously reverted as CL 481796 because the branch
was frozen for release.

Change-Id: I97fcd32956cc1349d87a92066e8559cb90da73b7
Reviewed-on: https://go-review.googlesource.com/c/go/+/481797
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
src/cmd/compile/internal/inline/inl.go
test/fixedbugs/issue54632.go [new file with mode: 0644]