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: make SSA stack frames smaller #12602
Comments
When you say "to get them to work", what was it that failed? Did the linker nosplit analysis fail, or was it a failure at run time? |
The linker nosplit analysis reports an error. Here is one: syscall.Syscall: nosplit stack overflow |
The CL which changed this (https://go-review.googlesource.com/#/c/14530) touched a number of files, including stuff like test/nosplit.go. (adding this comment to be sure we revert them all) |
CL https://golang.org/cl/14758 mentions this issue. |
For variables which get SSA'd, SSA keeps track of all the def/kill. It is only for on-stack variables that we need them. This reduces stack frame sizes significantly because often the only use of a variable was a varkill, and without that last use the variable doesn't get allocated in the frame at all. Fixes #12602 Change-Id: I3f00a768aa5ddd8d7772f375b25f846086a3e689 Reviewed-on: https://go-review.googlesource.com/14758 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
(GitHub only closes issues when the commit makes it to master, but this was only on a branch.) |
I had to up the stack guard from 640 to 960 bytes to get SSA + write barriers to work. Look into what grew and why, and fix it.
@josharian @aclements @RLH
The text was updated successfully, but these errors were encountered: