]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: do not devirtualize defer/go calls
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Tue, 6 Sep 2022 05:54:54 +0000 (12:54 +0700)
committerGopher Robot <gobot@golang.org>
Tue, 6 Sep 2022 22:14:56 +0000 (22:14 +0000)
commitc82304b7129d7e675ff010d54f58d039235e4802
tree67adef2ab68750287b0090ccb232bce6e597c570
parent812fd2fe70112209557c4f6392ab8eaee6f68dda
cmd/compile: do not devirtualize defer/go calls

For defer/go calls, the function/method value are evaluated immediately.
So after devirtualizing, it may trigger a panic when implicitly deref
a nil pointer receiver, causing the program behaves unexpectedly.

It's safer to not devirtualizing defer/go calls at all.

Fixes #52072

Change-Id: I562c2860e3e577b36387dc0a12ae5077bc0766bf
Reviewed-on: https://go-review.googlesource.com/c/go/+/428495
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/devirtualize/devirtualize.go
test/fixedbugs/issue52072.go [new file with mode: 0644]