1
0
mirror of https://github.com/golang/go synced 2024-11-26 16:57:14 -07:00

cmd/compile: make sure ascompatee walk lhs init statements

CL 281152 improved ascompatee by removing the call to safeExpr on lhs.
But we forgot that lhs int statements, if any, must be walked prior
saving subexpressions, which cause the bug in #45706.

Fixes #45706

Change-Id: I0064315056ef4ca92ebf3c332c2e3a9bb2b26f68
Reviewed-on: https://go-review.googlesource.com/c/go/+/312632
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Cuong Manh Le 2021-04-23 12:53:51 +07:00
parent d4bfe00615
commit 8c66669764
2 changed files with 19 additions and 0 deletions

View File

@ -341,6 +341,9 @@ func ascompatee(op ir.Op, nl, nr []ir.Node) []ir.Node {
break break
} }
walkStmtList(l.Init())
early.Append(ir.TakeInit(l)...)
var name *ir.Name var name *ir.Name
switch l.Op() { switch l.Op() {
default: default:

View File

@ -0,0 +1,16 @@
// compile
// Copyright 2021 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 p
var i int
var arr []*int
var f func() int
func g() {
for i, *(arr[f()]) = range []int{} {
}
}