You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This used to compile (albeit with possible memory corruption), but now fails to compile with cannot use a0 (type []uintptr) as type uintptr in argument to f:
In wrapCall, we need to set the newly created call as a ...-style call if the original one was. (The above code was already rewritten to defer f([]uintptr{uintptr(p)}...) earlier in the compiler.)
wrapCall also needs to look for uintptr(p) conversions within the final []uintptr{...}... argument.
The revised test now checks that unsafe-uintptr correctly works for
variadic uintptr parameters too, and the CL corrects the code so this
code compiles again.
The pointers are still not kept alive properly. That will be fixed by
a followup CL. But this CL at least allows programs not affected by
that to build again.
Updates #24991.
Updates #41460.
Change-Id: If4c39167b6055e602213fb7522c4f527c43ebda9
Reviewed-on: https://go-review.googlesource.com/c/go/+/255877
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
This used to compile (albeit with possible memory corruption), but now fails to compile with
cannot use a0 (type []uintptr) as type uintptr in argument to f
:Probably due to CL 253457.
I think there are two issues here:
wrapCall
, we need to set the newly created call as a...
-style call if the original one was. (The above code was already rewritten todefer f([]uintptr{uintptr(p)}...)
earlier in the compiler.)wrapCall
also needs to look foruintptr(p)
conversions within the final[]uintptr{...}...
argument./cc @cuonglm @ianlancetaylor
The text was updated successfully, but these errors were encountered: