blob: d24d410769e627f69ba0e6c34ac4ad0aeecf468d [file] [log] [blame]
// asmcheck
// 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.
package codegen
// From issue #77720: cmd/compile: field access on struct-returning method copies entire struct
type moveLoadBig struct {
typ int8
index int64
str string
pkgID string
}
type moveLoadHandle[T any] struct {
value *T
}
func (h moveLoadHandle[T]) Value() T { return *h.value }
type moveLoadS struct {
h moveLoadHandle[moveLoadBig]
}
func moveLoadFieldViaValue(s moveLoadS) int8 {
// amd64:-`MOVUPS`
// amd64:`MOVBLZX`
return s.h.Value().typ
}
func moveLoadFieldViaValueInline(ss []moveLoadS, i int) int8 {
// amd64:-`MOVUPS`
// amd64:`MOVBLZX`
return ss[i&7].h.Value().typ
}