| // compile | |
| // Copyright 2021 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 p | |
| //go:noinline | |
| func g(d uintptr, a, m []int, s struct { | |
| a, b, c, d, e int | |
| }, u uint) { | |
| _ = a | |
| _ = m | |
| _ = s | |
| func() { | |
| for i := 0; i < 5; i++ { | |
| _ = a | |
| _ = m | |
| _, _ = s, s | |
| } | |
| }() | |
| } | |
| var One float64 = 1.0 | |
| func f(d uintptr) { | |
| var a, m []int | |
| var s struct { | |
| a, b, c, d, e int | |
| } | |
| g(d, a, m, s, uint(One)) // Uint of not-a-constant inserts a conditional, necessary to bug | |
| defer func() uint { | |
| return 0 | |
| }() | |
| } | |
| var d uintptr | |
| func h() { | |
| f(d) | |
| } |