]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix defer desugar keepalive arg handling buglet
authorThan McIntosh <thanm@google.com>
Thu, 25 Mar 2021 12:30:19 +0000 (08:30 -0400)
committerThan McIntosh <thanm@google.com>
Thu, 25 Mar 2021 14:42:40 +0000 (14:42 +0000)
commit53941b6150a1f9ca01c02316c8db51024294a4c9
tree9e360d42b8f65b20424315c8e99ea15764b9000d
parent9f4d5c94b0cafc4d888b7f02e4ff12c2ff39eedc
cmd/compile: fix defer desugar keepalive arg handling buglet

Fix a bug in the go/defer desugar handling of keepalive arguments. The
go/defer wrapping code has special handling for calls whose arguments
are pointers that have been cast to "uintptr", so as to insure that
call "keepalive" machinery for such calls continues to work. This
patch fixes a bug in the special case code to insure that it doesn't
kick in for other situations where you have an unsafe.Pointer ->
uintptr argument (outside the keepalive context).

Fixes make.bat on windows with GOEXPERIMENT=regabidefer in effect.

Change-Id: I9db89c4c73f0db1235901a4fae57f62f88c94ac3
Reviewed-on: https://go-review.googlesource.com/c/go/+/304457
Trust: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/walk/order.go