d19980e1ce
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](https://github.com/rust-lang/rust/pull/117351#issuecomment-1788495503) 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 https://github.com/rust-lang/rust/pull/80594 that got reverted in https://github.com/rust-lang/rust/pull/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 https://github.com/rust-lang/rust/issues/115845 |
||
---|---|---|
.. | ||
abi.rs | ||
assoc.rs | ||
common_traits.rs | ||
consts.rs | ||
errors.rs | ||
implied_bounds.rs | ||
instance.rs | ||
layout_sanity_check.rs | ||
layout.rs | ||
lib.rs | ||
needs_drop.rs | ||
opaque_types.rs | ||
representability.rs | ||
sig_types.rs | ||
structural_match.rs | ||
ty.rs |