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: register conflict between external linker and duffzero on arm64 [1.16 backport] #46928

Closed
gopherbot opened this issue Jun 25, 2021 · 5 comments
Labels
CherryPickApproved
Milestone

Comments

@gopherbot
Copy link

@gopherbot gopherbot commented Jun 25, 2021

@randall77 requested issue #32773 to be considered for backport to the next 1.16 minor release.

@gopherbot, please open backport issues.

@gopherbot gopherbot added the CherryPickCandidate label Jun 25, 2021
@gopherbot gopherbot added this to the Go1.16.6 milestone Jun 25, 2021
@ianlancetaylor
Copy link
Contributor

@ianlancetaylor ianlancetaylor commented Jun 25, 2021

Relevant CL: https://golang.org/cl/184437

CC @cherrymui

@ianlancetaylor
Copy link
Contributor

@ianlancetaylor ianlancetaylor commented Jun 25, 2021

See #46924.

@gopherbot
Copy link
Author

@gopherbot gopherbot commented Jun 25, 2021

Change https://golang.org/cl/331029 mentions this issue: [release-branch.go1.16] cmd/compile: mark R16, R17 clobbered for non-standard calls on ARM64

@toothrot toothrot added the CherryPickApproved label Jul 8, 2021
@toothrot
Copy link
Contributor

@toothrot toothrot commented Jul 8, 2021

Approved. This is a serious issue with no workaround.

@gopherbot gopherbot removed the CherryPickCandidate label Jul 8, 2021
@dmitshur dmitshur removed this from the Go1.16.6 milestone Jul 12, 2021
@dmitshur dmitshur added this to the Go1.16.7 milestone Jul 12, 2021
@gopherbot
Copy link
Author

@gopherbot gopherbot commented Aug 2, 2021

Closed by merging 8b6ae9b to release-branch.go1.16.

gopherbot pushed a commit that referenced this issue Aug 2, 2021
…standard calls on ARM64

On ARM64, (external) linker generated trampoline may clobber R16
and R17. In CL 183842 we change Duff's devices not to use those
registers. However, this is not enough. The register allocator
also needs to know that these registers may be clobbered in any
calls that don't follow the standard Go calling convention. This
include Duff's devices and the write barrier.

Fixes #46928.
Updates #32773.

Change-Id: Ia52a891d9bbb8515c927617dd53aee5af5bd9aa4
Reviewed-on: https://go-review.googlesource.com/c/go/+/184437
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Meng Zhuo <mzh@golangcn.org>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Meng Zhuo <mzh@golangcn.org>
(cherry picked from commit 11b4aee)
Reviewed-on: https://go-review.googlesource.com/c/go/+/331029
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CherryPickApproved
Projects
None yet
Development

No branches or pull requests

4 participants