Skip to content

cmd/compile: escape analysis doesn't work for simple closure #17457

@hirochachacha

Description

@hirochachacha

Please answer these questions before submitting your issue. Thanks!

What did you do?

If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.

package main

func main() {
    b := []byte("test")

    f := func(b []byte) {
    }

    f(b)
}

$ go build -gcflags "-m -l" c.go

What did you expect to see?

./c.go:4: main ([]byte)("test") does not escape

What did you see instead?

./c.go:4: ([]byte)("test") escapes to heap

Does this issue reproduce with the latest release (go1.7.1)?

System details

go version devel +be48aa3 Fri Oct 14 23:38:29 2016 +0000 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/hiro/.go"
GORACE=""
GOROOT="/Users/hiro/go"
GOTOOLDIR="/Users/hiro/go/pkg/tool/darwin_amd64"
TERM="dumb"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/wq/dwn8hs0x7njbzty9f68y61700000gn/T/go-build698687333=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
uname -v: Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1004
lldb --version: lldb-360.1.50
gdb --version: GNU gdb (GDB) 7.11.1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions