]> Cypherpunks repositories - gostls13.git/commit
[dev.typeparams] cmd/compile: do extra markObjects during iexport to deal with generics
authorDan Scales <danscales@google.com>
Fri, 4 Jun 2021 22:22:55 +0000 (15:22 -0700)
committerDan Scales <danscales@google.com>
Mon, 7 Jun 2021 22:44:30 +0000 (22:44 +0000)
commit74d46381b2003f7d77bbe6eb4a8a31cb6f753a09
tree73d8f425a530ed86b93d22b94499b145300fc5c7
parentccfb0ce8df980599750db4fa56a8ab16202f1ba6
[dev.typeparams] cmd/compile: do extra markObjects during iexport to deal with generics

markInlBody/markObject/markType don't fully work as they stand for
generic functions/methods, since markInlBody can't understand method
calls on generic types. Those method calls will be resolved to concrete
methods in a full instantiation, but markInlBody on a generic
function/method can't understand those method calls. So, we won't
necessarily cause export of the appropriate extra method/function bodies
needed for inlining in an instantiated function.

One way to do this is just to make sure that we call markType
on all generic types that are exported (whether explicitly exported via
a capitalized name or unexported types that are referenced by a generic
function body). That way, we will call markInlBody on all possible
generic methods that might be called.

Fixes the current problem for i386-softfloat builds on dev.typeparams.

Change-Id: I2d3625d26042296731bd3c44ba1938aa194d527e
Reviewed-on: https://go-review.googlesource.com/c/go/+/325329
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Trust: Dan Scales <danscales@google.com>
src/cmd/compile/internal/typecheck/crawler.go