diff options
| author | Cherry Mui <cherryyz@google.com> | 2022-10-14 19:52:00 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2022-10-20 22:16:41 +0000 |
| commit | 4725c71b735143a138b24f2b0e055c717d8d69ca (patch) | |
| tree | 7f2deba6ee13866858886fdb444f46975f238a2d /src/encoding | |
| parent | 8415ec8c98627326ffb48141c45917b9d7d0c234 (diff) | |
| download | go-4725c71b735143a138b24f2b0e055c717d8d69ca.tar.xz | |
cmd/compile: copy blank parameter node when substituting function type
When a function type is copied (e.g. for substituting type
parameters), we make copies of its parameter ir.Name nodes, so
they are not shared with the old function type. But currently a
blank (_) identifier is not copied but shared. The parameter
node's frame offset is assigned (in ABI analysis) and then used in
the concurrent backend. Shared node can cause a data race. Make a
new blank parameter node to avoid sharing. (Unified IR does already
not have this problem. This fixes non-unified-IR mode.)
This seems to fix #55357.
Change-Id: Ie27f08e5589ac7d5d3f0d0d5de1a21e4fd2765c9
Reviewed-on: https://go-review.googlesource.com/c/go/+/443158
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'src/encoding')
0 files changed, 0 insertions, 0 deletions
