Commit df2b63f0 authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

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: default avatarMatthew Dempsky <mdempsky@google.com>
parent d7012ca2
...@@ -286,7 +286,7 @@ func staticcopy(l *Node, r *Node, out *[]*Node) bool { ...@@ -286,7 +286,7 @@ func staticcopy(l *Node, r *Node, out *[]*Node) bool {
orig := r orig := r
r = r.Name.Defn.Right r = r.Name.Defn.Right
for r.Op == OCONVNOP { for r.Op == OCONVNOP && !Eqtype(r.Type, l.Type) {
r = r.Left r = r.Left
} }
......
// 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
)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment