-
Notifications
You must be signed in to change notification settings - Fork 12.6k
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
segfault from selectCopy on AArch64 with LTO #53315
Labels
Comments
@llvm/issue-subscribers-backend-aarch64 |
Reduced:
|
Here's the
|
Presumably this code: llvm-project/llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp Lines 1170 to 1184 in d03c5bc
Fails to handle values stored in multiple registers in some form. |
Candidate patch: https://reviews.llvm.org/D117866 |
nikic
added a commit
to rust-lang/llvm-project
that referenced
this issue
Jan 28, 2022
The call lowering code assumed that a returned argument could only consist of one register. Pass an ArrayRef<Register> instead of Register to make sure that all parts get assigned. Fixes llvm#53315. Differential Revision: https://reviews.llvm.org/D117866
hedgar2017
pushed a commit
to matter-labs/era-compiler-llvm
that referenced
this issue
Jun 28, 2022
The call lowering code assumed that a returned argument could only consist of one register. Pass an ArrayRef<Register> instead of Register to make sure that all parts get assigned. Fixes llvm/llvm-project#53315. Differential Revision: https://reviews.llvm.org/D117866
mem-frob
pushed a commit
to draperlaboratory/hope-llvm-project
that referenced
this issue
Oct 7, 2022
The call lowering code assumed that a returned argument could only consist of one register. Pass an ArrayRef<Register> instead of Register to make sure that all parts get assigned. Fixes llvm/llvm-project#53315. Differential Revision: https://reviews.llvm.org/D117866
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This bug is spawned off of rust-lang/rust#91671 (comment)
The AArch64InstructionSelector.cpp code has this line:
llvm-project/llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
Line 925 in 6d45284
The problem is that RBI.getRegBank can return null, and does so during rustc's use of LLVM.
You can see the problematic behavior atop this trace that I've uploaded to pernos.co, here. That trace is derived from code that I've put into a dedicated repository, here: https://github.com/pnkfelix/issue-91671-a64-doctestfail
I have not yet managed to narrow the test case down to something that I can replicate atop
llc
oropt
alone, but I wanted to start tracking the issue here in the LLVM organization so that LLVM developers could help me narrow this down further.The text was updated successfully, but these errors were encountered: