mirror of
https://github.com/golang/go.git
synced 2026-04-03 17:59:55 +09:00
Might as well, we don't need any registers for such values. Fixes #77635 Change-Id: Iedc1bc3f13662b043b183228bcc1dc4e6c91da81 Reviewed-on: https://go-review.googlesource.com/c/go/+/747780 Reviewed-by: Junyang Shao <shaojunyang@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com>
63 lines
813 B
Go
63 lines
813 B
Go
// compile
|
|
|
|
// Copyright 2026 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.
|
|
|
|
// Issue 77635: test building values of zero-sized types.
|
|
|
|
package p
|
|
|
|
type T1 [2][0]int
|
|
type T2 [0][2]int
|
|
type T3 struct {
|
|
t T1
|
|
x *byte
|
|
}
|
|
type T4 struct {
|
|
t T2
|
|
x *byte
|
|
}
|
|
|
|
func f1(t T1) any {
|
|
return t
|
|
}
|
|
func f2(t T2) any {
|
|
return t
|
|
}
|
|
func f3(t T3) any {
|
|
return t
|
|
}
|
|
func f4(t T4) any {
|
|
return t
|
|
}
|
|
func f5(t T1) any {
|
|
return T3{t:t}
|
|
}
|
|
func f6(t T2) any {
|
|
return T4{t:t}
|
|
}
|
|
func f7(t T1) {
|
|
use(T3{t:t})
|
|
}
|
|
func f8(t T2) {
|
|
use(T4{t:t})
|
|
}
|
|
|
|
func g1(t T3, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g2(t T4, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g3(t *T3, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
func g4(t *T4, i int) {
|
|
t.t[i][i] = 1
|
|
}
|
|
|
|
//go:noinline
|
|
func use(x any) {
|
|
}
|