$ go build -gcflags '-m -m' unsafe.go # command-line-arguments ./unsafe.go:16:6: cannot inline f: marked go:noinline ./unsafe.go:23:6: cannot inline f2: marked go:noinline ./unsafe.go:8:6: cannot inline main: function too complex: cost 260 exceeds budget 80 ./unsafe.go:11:13: inlining call to fmt.Println func(...interface {}) (int, error) { return fmt.Fprintln(io.Writer(os.Stdout), fmt.a...) } ./unsafe.go:12:13: inlining call to fmt.Println func(...interface {}) (int, error) { return fmt.Fprintln(io.Writer(os.Stdout), fmt.a...) } ./unsafe.go:18:22: &d escapes to heap ./unsafe.go:18:22: from p (assigned) at ./unsafe.go:18:4 ./unsafe.go:18:22: from ~r0 (return) at ./unsafe.go:19:2 ./unsafe.go:17:2: moved to heap: d ./unsafe.go:25:30: f2 &d does not escape ./unsafe.go:11:13: a escapes to heap ./unsafe.go:11:13: from ~arg0 (assign-pair) at ./unsafe.go:11:13 ./unsafe.go:11:13: io.Writer(os.Stdout) escapes to heap ./unsafe.go:11:13: from io.Writer(os.Stdout) (passed to call[argument escapes]) at ./unsafe.go:11:13 ./unsafe.go:12:13: io.Writer(os.Stdout) escapes to heap ./unsafe.go:12:13: from io.Writer(os.Stdout) (passed to call[argument escapes]) at ./unsafe.go:12:13 ./unsafe.go:12:13: b escapes to heap ./unsafe.go:12:13: from ~arg0 (assign-pair) at ./unsafe.go:12:13 ./unsafe.go:12:13: from []interface {} literal (slice-literal-element) at ./unsafe.go:12:13 ./unsafe.go:12:13: from fmt.a (assigned) at ./unsafe.go:12:13 ./unsafe.go:12:13: from *fmt.a (indirection) at ./unsafe.go:12:13 ./unsafe.go:12:13: from fmt.a (passed to call[argument content escapes]) at ./unsafe.go:12:13 ./unsafe.go:11:13: main []interface {} literal does not escape ./unsafe.go:12:13: main []interface {} literal does not escape <autogenerated>:1: os.(*File).close .this does not escape