// run // Copyright 2022 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 main func main() { for i := 0; i < 10000; i++ { h(i) sink = make([]byte, 1024) // generate some garbage } } func h(iter int) { var x [32]byte for i := 0; i < 32; i++ { x[i] = 99 } g(&x) if x == ([32]byte{}) { return } for i := 0; i < 32; i++ { println(x[i]) } panic(iter) } //go:noinline func g(x interface{}) { switch e := x.(type) { case *[32]byte: var c [32]byte *e = c case *[3]*byte: var c [3]*byte *e = c } } var sink []byte