mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
![Cuong Manh Le](/assets/img/avatar_default.png)
CL 360057 fixed missing update source type in storeArgOrLoad. However, we should only update the type when processing struct/array. If we update the type right before calling storeArgOrLoad, we may generate a value with invalid type, e.g, OpStructSelect with non-struct type. Fixes #49378 Change-Id: Ib7e10f72f818880f550aae5c9f653db463ce29b0 Reviewed-on: https://go-review.googlesource.com/c/go/+/361594 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: David Chase <drchase@google.com>
26 lines
455 B
Go
26 lines
455 B
Go
// 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
|
|
|
|
func f(i int) {
|
|
var s1 struct {
|
|
s struct{ s struct{ i int } }
|
|
}
|
|
var s2, s3 struct {
|
|
a struct{ i int }
|
|
b int
|
|
}
|
|
func() {
|
|
i = 1 + 2*i + s3.a.i + func() int {
|
|
s2.a, s2.b = s3.a, s3.b
|
|
return 0
|
|
}() + func(*int) int {
|
|
return s1.s.s.i
|
|
}(new(int))
|
|
}()
|
|
}
|