| // 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 |