// run // 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 main import "runtime" type T [10]int var m map[*T]int //go:noinline func F() { m = map[*T]int{ K(): V(), // the key temp should be live across call to V } } //go:noinline func V() int { runtime.GC(); runtime.GC(); runtime.GC(); return 123 } //go:noinline func K() *T { p := new(T) runtime.SetFinalizer(p, func(*T) { println("FAIL") }) return p } func main() { F() }