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: miscompilation in pointer operations [1.18 backport] #52961
Comments
I'm not sure this needs backporting. The bug was only found by fuzzing the compiler, not in a real program. The code to trigger it is unusual (reinitializing a variable using a pointer to that very same variable), and easily worked around. That said, the fix is pretty safe, and if you do hit the bug it causes incorrect behavior. |
That may be true, but the behavior is also pretty subtle — I wouldn't be at all surprised if there are a few real-world programs that do trigger it but don't notice the incorrect behavior, and of course we don't have any way to identify them if they're still on an older Go release. |
Change https://go.dev/cl/419450 mentions this issue: |
Closed by merging ed50277 to release-branch.go1.18. |
…nment if LHS is address-taken A composite literal assignment x = T{field: v} may be compiled to x = T{} x.field = v We already do not use this form is RHS uses LHS. If LHS is address-taken, RHS may uses LHS implicitly, e.g. v = &x.field x = T{field: *v} The lowering above would change the value of RHS (*v). Updates #52953. Fixes #52961. Change-Id: I3f798e00598aaa550b8c17182c7472fef440d483 Reviewed-on: https://go-review.googlesource.com/c/go/+/407014 Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> (cherry picked from commit 1c77137) Reviewed-on: https://go-review.googlesource.com/c/go/+/419450 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
@bcmills requested issue #52953 to be considered for backport to the next 1.18 minor release.
The text was updated successfully, but these errors were encountered: