Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
hirochachacha opened this issue Oct 16, 2016 · 4 comments
Closed

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

hirochachacha opened this issue Oct 16, 2016 · 4 comments

Comments

@hirochachacha
Copy link
Contributor

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
@dsnet
Copy link
Member

dsnet commented Oct 16, 2016

Duplicate of #7714?

@hirochachacha
Copy link
Contributor Author

That's true. Thank you for pointing it out.

@dr2chase
Copy link
Contributor

In general, "does not work" is not the best way to describe optimizer problems; it is not specific enough.

Either a potential optimization is missed (code is slower than possible) or it is applied incorrectly (compiler converts working code into broken code). These are two very, very different things -- a missed optimization may never be fixed, where an incorrect optimization is a high-priority bug.

@hirochachacha
Copy link
Contributor Author

I see. I'll be careful next time. thanks.

@golang golang locked and limited conversation to collaborators Oct 16, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants