- Notifications
You must be signed in to change notification settings - Fork 14.1k
Ensure sanity of all computed ABIs #117500
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
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