]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix literal struct interface {} lost passing by value
authorLE Manh Cuong <cuong.manhle.vn@gmail.com>
Fri, 22 Mar 2019 18:43:06 +0000 (01:43 +0700)
committerKeith Randall <khr@golang.org>
Wed, 27 Mar 2019 17:28:06 +0000 (17:28 +0000)
commitd47db6dc0ce72d1371c81a677b45d7bdba39ff46
treeb57d0161c6522b8f7c090f8b32df645dbf4d5d12
parent38dc177d3ac5b5a8cb6b7f9039144cbe8bd58036
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 #30956

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: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/order.go
test/fixedbugs/issue30956.go [new file with mode: 0644]
test/fixedbugs/issue30956.out [new file with mode: 0644]