-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Ensure sanity of all computed ABIs #117500
Conversation
r? @oli-obk (rustbot has picked a reviewer for you, use r? to override) |
94200f6
to
487853e
Compare
This comment has been minimized.
This comment has been minimized.
487853e
to
937ed6d
Compare
This comment has been minimized.
This comment has been minimized.
937ed6d
to
e2b134d
Compare
This comment has been minimized.
This comment has been minimized.
Oli is on vacation. |
7f0545c
to
1f5480d
Compare
1f5480d
to
0865a2e
Compare
It's better to reroll r? compiler |
@bors r+ |
Ensure sanity of all computed ABIs This moves the ABI sanity assertions from the codegen backend to the ABI computation logic. Sadly, due to past mistakes, we [have to](rust-lang#117351 (comment)) be able to compute a sane ABI for nonsensical function types like `extern "C" fn(str) -> str`. So to make the sanity check pass we first need to make all ABI adjustment deal with unsized types... and we have no shared infrastructure for those adjustments, so that's a bunch of copy-paste. At least we have assertions failing loudly when one accidentally sets a different mode for an unsized argument. To achieve this, this re-lands the parts of rust-lang#80594 that got reverted in rust-lang#81388. To avoid breaking wasm ABI again, that ABI now explicitly opts-in to the (wrong, broken) ABI that we currently keep for backwards compatibility. That's still better than having *every* ABI use the wrong broken default! Cc `@bjorn3` Fixes rust-lang#115845
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
Ah, that's annoying... we are currently computing things like the |
Ah no I can easily fix that by changing |
@bors r=davidtwco |
@bors rollup=iffy |
☀️ Test successful - checks-actions |
Finished benchmarking commit (d19980e): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 677.922s -> 675.906s (-0.30%) |
…errors the unadjusted ABI needs to pass aggregates by-value Fixes rust-lang#118124, a regression introduced in rust-lang#117500
the unadjusted ABI needs to pass aggregates by-value Fixes rust-lang/rust#118124, a regression introduced in rust-lang/rust#117500
This moves the ABI sanity assertions from the codegen backend to the ABI computation logic. Sadly, due to past mistakes, we have to be able to compute a sane ABI for nonsensical function types like
extern "C" fn(str) -> str
. So to make the sanity check pass we first need to make all ABI adjustment deal with unsized types... and we have no shared infrastructure for those adjustments, so that's a bunch of copy-paste. At least we have assertions failing loudly when one accidentally sets a different mode for an unsized argument.To achieve this, this re-lands the parts of #80594 that got reverted in #81388. To avoid breaking wasm ABI again, that ABI now explicitly opts-in to the (wrong, broken) ABI that we currently keep for backwards compatibility. That's still better than having every ABI use the wrong broken default!
Cc @bjorn3
Fixes #115845