mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
cmd/compile: unwrap fewer CONVNOPs in staticassign
staticassign unwraps all CONVNOPs. However, in the included test, we need the CONVNOP for everything to typecheck. Stop unwrapping unnecessarily. The code we generate for this example is suboptimal, but that's not new; see #17113. Fixes #17111. Change-Id: I29532787a074a6fe19a5cc53271eb9c84bf1b576 Reviewed-on: https://go-review.googlesource.com/29213 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
d7012ca282
commit
df2b63f09b
|
@ -286,7 +286,7 @@ func staticcopy(l *Node, r *Node, out *[]*Node) bool {
|
|||
orig := r
|
||||
r = r.Name.Defn.Right
|
||||
|
||||
for r.Op == OCONVNOP {
|
||||
for r.Op == OCONVNOP && !Eqtype(r.Type, l.Type) {
|
||||
r = r.Left
|
||||
}
|
||||
|
||||
|
|
16
test/fixedbugs/issue17111.go
Normal file
16
test/fixedbugs/issue17111.go
Normal file
|
@ -0,0 +1,16 @@
|
|||
// compile
|
||||
|
||||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
type I int
|
||||
|
||||
var (
|
||||
i int
|
||||
x = I(i)
|
||||
|
||||
e interface{} = x
|
||||
)
|
Loading…
Reference in a new issue