]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.17] cmd/compile: do not use special literal assignment if LHS...
authorCherry Mui <cherryyz@google.com>
Wed, 18 May 2022 15:58:53 +0000 (11:58 -0400)
committerCherry Mui <cherryyz@google.com>
Tue, 26 Jul 2022 14:16:52 +0000 (14:16 +0000)
commitd9242f7a8c29aa17201cd66d29cdd20916c2de60
treed851257974dae2308cca8ff12f752f1786f121f7
parent489c1485780f6326fb5f446bd9d97dff2ff0abcf
[release-branch.go1.17] cmd/compile: do not use special literal assignment if LHS is address-taken

A composite literal assignment

x = T{field: v}

may be compiled to

x = T{}
x.field = v

We already do not use this form is RHS uses LHS. If LHS is
address-taken, RHS may uses LHS implicitly, e.g.

v = &x.field
x = T{field: *v}

The lowering above would change the value of RHS (*v).

Updates #52953.
Fixes #52960.

Change-Id: I3f798e00598aaa550b8c17182c7472fef440d483
Reviewed-on: https://go-review.googlesource.com/c/go/+/407014
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
(cherry picked from commit 1c77137d4fdfbb3e7e8d9efaab3bab5ee736a19d)
Reviewed-on: https://go-review.googlesource.com/c/go/+/419451
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/walk/complit.go
test/fixedbugs/issue52953.go [new file with mode: 0644]