Files
golang.go/test/fixedbugs/issue77635b.go
khr@golang.org 0886e65b11 cmd/compile: treat all zero-sized values as SSA-able
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>
2026-02-25 16:52:27 -08:00

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) {
}