]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.regabi] cmd/compile: fix escape analysis problem with closures
authorDan Scales <danscales@google.com>
Sat, 23 Jan 2021 00:07:00 +0000 (16:07 -0800)
committerDan Scales <danscales@google.com>
Sat, 23 Jan 2021 02:15:24 +0000 (02:15 +0000)
commit48badc5fa863ce5e7e8ac9f268f13955483070e3
tree393f148e3494ae8e92c88589e54bb95dd0d25904
parent51e1819a8d2ecb6ed292ca363cbb8edfea4aea65
[dev.regabi] cmd/compile: fix escape analysis problem with closures

In reflect.methodWrapper, we call escape analysis without including the
full batch of dependent functions, including the closure functions.
Because of this, we haven't created locations for the params/local
variables of a closure when we are processing a function that
inlines that closure. (Whereas in the normal compilation of the
function, we do call with the full batch.) To deal with this, I am
creating locations for the params/local variables of a closure when
needed.

Without this fix, the new test closure6.go would fail.

Updates #43818

Change-Id: I5f91cfb6f35efe2937ef88cbcc468e403e0da9ad
Reviewed-on: https://go-review.googlesource.com/c/go/+/285677
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Dan Scales <danscales@google.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/escape/escape.go
test/closure6.go [new file with mode: 0644]