]> Cypherpunks repositories - gostls13.git/commit
[dev.regabi] cmd/compile: fix latent Sym.SetPkgDef issue
authorMatthew Dempsky <mdempsky@google.com>
Mon, 14 Dec 2020 04:17:09 +0000 (20:17 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 15 Dec 2020 07:15:56 +0000 (07:15 +0000)
commit9f16620f46fc51ff1c8182b440bd60f97eb35278
tree771644d806bab29748d7f6f4cd87d2f5a9f53024
parentfea898a4b0f02cee08ea978eb5ce541a85783690
[dev.regabi] cmd/compile: fix latent Sym.SetPkgDef issue

Sym.pkgDefPtr is supposed to return a pointer to the types.Object
variable currently holding the Sym's package-scope
definition. However, in the case of identifiers that were shadowed in
the current scope, it was incorrectly returning a pointer to a stack
copy of the dclstack variable, rather than a pointer into the dclstack
itself.

This doesn't affect PkgDef, because it only reads from the variable,
so it got the same result anyway. It also happens to not affect our
usage of SetPkgDef today, because we currently only call SetPkgDef for
the builtin/runtime.go symbols, and those are never shadowed.

However, it does affect my upcoming CL to lazily create the ir.Names
for imported objects, as that depends on the ability to use SetPkgDef
to set shadowed identifiers.

Passes buildall w/ toolstash -cmp.

Change-Id: I54fc48b33da0670d31725faa1df1170a8730750a
Reviewed-on: https://go-review.googlesource.com/c/go/+/277712
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/compile/internal/types/scope.go