]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix handling of ir.CurFunc during stenciling
authorDan Scales <danscales@google.com>
Tue, 27 Apr 2021 00:52:53 +0000 (17:52 -0700)
committerDan Scales <danscales@google.com>
Tue, 27 Apr 2021 16:55:20 +0000 (16:55 +0000)
commit55c517a8b330710e6aaf6cc7133a9c7759bbb1d1
tree99107fbea697513c979eb452346c8437809b870e
parentd553c0144d2a532b3e962715899d6cd9db47192a
cmd/compile: fix handling of ir.CurFunc during stenciling

The transform functions (specifically transformArgs, which is used from
transformCall/transformReturn) require that ir.CurFunc is set correctly.
Since transformCall() is used on the call of an instantiated generic
function, we need to set ir.CurFunc correctly in stencil(). Also,
correctly save/restore ir.CurFunc in genericSubst().

Without this fix, ir.CurFunc can be nil when we call TransformCall()
from stencil(), which leads to some temp variables being added
incorrectly to ir.TodoFunc (which leads to the fatal panic in the
issue).

Fixes #45722

Change-Id: Iddf4a67d28f2100dde8cde5dbc9ca1e00dad6089
Reviewed-on: https://go-review.googlesource.com/c/go/+/313869
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Dan Scales <danscales@google.com>
src/cmd/compile/internal/noder/stencil.go
test/typeparam/issue45722.go [new file with mode: 0644]