Commit 99158301 authored by LE Manh Cuong's avatar LE Manh Cuong Committed by Andrew Bonventre
Browse files

[release-branch.go1.12] cmd/compile: fix literal struct interface {} lost passing by value

CL 135377 introduces pass strings and slices to convT2{E,I} by value.
Before that CL, all types, except interface will be allocated temporary
address. The CL changes the logic that only constant and type which
needs address (determine by convFuncName) will be allocated.

It fails to cover the case where type is static composite literal.
Adding condition to check that case fixes the issue.

Also, static composite literal node implies constant type, so consttype
checking can be removed.

Fixes #31209

Change-Id: Ifc750a029fb4889c2d06e73e44bf85e6ef4ce881
Reviewed-on: https://go-review.googlesource.com/c/go/+/168858


Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
(cherry picked from commit d47db6dc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/170437


Run-TryBot: Andrew Bonventre <andybons@golang.org>
Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
parent 578e2815
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment