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