// run // Copyright 2014 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. // Issue 8036. Stores necessary for stack scan being eliminated as redundant by optimizer. package main import "runtime" type T struct { X *int Y *int Z *int } type TI [3]uintptr //go:noinline func G() (t TI) { t[0] = 1 t[1] = 2 t[2] = 3 return } //go:noinline func F() (t T) { t.X = newint() t.Y = t.X t.Z = t.Y return } func newint() *int { runtime.GC() return nil } func main() { G() // leave non-pointers where F's return values go F() }