-
Notifications
You must be signed in to change notification settings - Fork 1.4k
SystemV struct arguments #1559
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
SystemV struct arguments #1559
Conversation
Subscribe to Label Actioncc @bnjbvr
This issue or pull request has been labeled: "cranelift"
Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
Ready for review. There are two hacks that can be removed once the old style backends are removed: The |
r? @fitzgen |
26cf5fe
to
abe0381
Compare
All tests pass. |
Are the TODOs in the original comment taken care of? |
Thanks for reminding me.
I have introduced the
I will add an error for now. |
I have turned it into a panic, as there is no way to report an error in the function signature legalization. |
Should I squash? |
That would be helpful, yes. |
Splat |
CI passed |
Thanks for rebasing @bjorn3. I took a look at the code, but I don't feel familiar enough with many of the bits that it is touching to be the official reviewer, determine if this is the proper approach to solving the problem, etc. I think @bnjbvr or @sunfishcode would be better reviewers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks fine to me overall, with the caveat that I am not intimately familiar with details of the old ABI mechanisms. (Given that we'll be moving over to the new backend at some point, I am not too worried about perfecting the design, though.) Just a few nits below. Thanks!
Also, to be clear, like others above I'd also be more comfortable if someone who's worked more on the old backend could review as well. |
@bnjbvr , would you mind sanity-checking this? LGTM from code-quality perspective, just want to make sure I'm not missing anything w.r.t. interactions with the old ABI mechanisms. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems legit, but I can't exactly recall the mechanics of argument passing in the old backend. So as long as it is well tested (I added suggestions below), lgtm.
macOS doesn't have any logs for the failure. |
It passed this time. |
Thanks! |
According to the SystemV abi, struct arguments must be passed at a fixed stack offset. Cranelift didn't have any way to implement this before. This is necessary to compile proc-macros using cg_clif: https://github.com/bjorn3/rustc_codegen_cranelift/issues/905#issuecomment-616173297
Fixes #1108
TODO
INVALID
, but introduce a proper type.