]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: don't inline fn with no shape params, but passed a shape arg
authorDan Scales <danscales@google.com>
Wed, 3 Nov 2021 21:47:04 +0000 (14:47 -0700)
committerDan Scales <danscales@google.com>
Thu, 4 Nov 2021 15:43:59 +0000 (15:43 +0000)
commit6ba68a0581d537edfd6eb2e5675c408f18eb4eed
tree4de7da89b9b5ed7f925d9bbf30be6fb513d3e2a7
parent00d6d2037ee1bf4b6959219120b79b7c01244b02
cmd/compile: don't inline fn with no shape params, but passed a shape arg

Don't inline a function fn that has no shape parameters, but is passed
at least one shape arg. This means we must be inlining a non-generic
function fn that was passed into a generic function, and can be called
with a shape arg because it matches an appropriate type parameter. But
fn may include an interface conversion (that may be applied to a shape
arg) that was not apparent when we first created the instantiation of
the generic function. We can't handle this if we actually do the
inlining, since we want to know all interface conversions immediately
after stenciling.  So, we avoid inlining in this case.

Fixes #49309.

Change-Id: I7b8ab7b13e58fdb0111db91bc92a91d313f7c2c3
Reviewed-on: https://go-review.googlesource.com/c/go/+/361260
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/inline/inl.go
test/typeparam/issue49309.go [new file with mode: 0644]