]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: ensure dictionary assignment statements are defining statements
authorKeith Randall <khr@golang.org>
Fri, 25 Feb 2022 23:10:24 +0000 (15:10 -0800)
committerKeith Randall <khr@golang.org>
Sat, 26 Feb 2022 01:16:03 +0000 (01:16 +0000)
commita064a4f29a97a4fc7398d1ac9d7c53c5ba0bc646
treeb42a43d1643e7ad9c435eb9bf2640188678bff9e
parent286e3e61aa9310bb8fd333adac6d06cfb2fcc95b
cmd/compile: ensure dictionary assignment statements are defining statements

The problem in 51355 is that escape analysis decided that the
dictionary variable was captured by reference instead of by value. We
want dictionaries to always be captured by value.

Escape analysis was confused because it saw what it thought was a
reassignment of the dictionary variable. In fact, it was the only
assignment, it just wasn't marked as the defining assignment. Fix
that.

Add an assert to make sure this stays true.

Fixes #51355

Change-Id: Ifd9342455fa107b113f5ff521a94cdbf1b8a7733
Reviewed-on: https://go-review.googlesource.com/c/go/+/388115
Trust: Keith Randall <khr@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Trust: Dan Scales <danscales@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Dan Scales <danscales@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
src/cmd/compile/internal/escape/escape.go
src/cmd/compile/internal/noder/stencil.go
test/typeparam/issue51355.go [new file with mode: 0644]