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: internal compiler error - 'can't find empty register' on ppc64le builders #34468
Comments
@laboger. I do not currently have a ppc64le machine setup to test and debug this. Could you please have a look if there is an easy fix for ppc64le specific forward? Note that on linux/amd64 I can not test the race compile since As this error only happens in race and on ppc64le (ppc64 doesnt seem to support -race builds) at first it seems a ppc64 local problem. But since cl/194297 can introduce the use of an extra register to load a large constant where it previously did not this could have increased the register pressure above a threshold when compiling the Seems other changes could run into this problem (potentially also on other platforms) too if not resolved generally. Line 447 in 7ed973b
|
Change https://golang.org/cl/196957 mentions this issue: |
This reverts CL 194297. Reason for revert: introduced register allocation failures on PPC64LE builders. Updates #33826 Updates #32781 Updates #34468 Change-Id: I7d0b55df8cdf8e7d2277f1814299b083c2692e48 Reviewed-on: https://go-review.googlesource.com/c/go/+/196957 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Martin Möhrmann <moehrmann@google.com>
This is strange. The register allocator is reporting
Both those calls should return nonzero. |
CL 195117 changes it to call The interesting value here is v205, which is of type flags but got register R4. This seems bad.
|
PPC64Ops.go has:
I think this is not right. It should have a tuple type like (Int64, Flags) instead of flags type. |
I think ANDCC doesn't generate the result of the AND, just the flags. So the fix might be as simple as replacing gp21 with gp2flags. |
Change https://golang.org/cl/196960 mentions this issue: |
The linux-ppc64le builders are currently broken with a
internal compiler error: 'checkIfRange'
crash:Full log: https://build.golang.org/log/b288cd59a7c053c8cf0136972f9c37c42bc678c6
The breakage started after CL 194297 (compile: prefer an AND instead of SHR+SHL instructions).
cc @martisch
The text was updated successfully, but these errors were encountered: