mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-22 20:47:48 +00:00
![]() Replace ad-hoc ABI "adjustments" with an `AbiMap` to `CanonAbi` Our `conv_from_spec_abi`, `adjust_abi`, and `is_abi_supported` combine to give us a very confusing way of reasoning about what _actual_ calling convention we want to lower our code to and whether we want to compile the resulting code at all. Instead of leaving this code as a miniature adventure game in which someone tries to combine stateful mutations into a Rube Goldberg machine that will let them escape the maze and arrive at the promised land of codegen, we let `AbiMap` devour this complexity. Once you have an `AbiMap`, you can answer which `ExternAbi`s will lower to what `CanonAbi`s (and whether they will lower at all). Removed: - `conv_from_spec_abi` replaced by `AbiMap::canonize_abi` - `adjust_abi` replaced by same - `Conv::PreserveAll` as unused - `Conv::Cold` as unused - `enum Conv` replaced by `enum CanonAbi` target-spec.json changes: - If you have a target-spec.json then now your "entry-abi" key will be specified in terms of one of the `"{abi}"` strings Rust recognizes, e.g. ```json "entry-abi": "C", "entry-abi": "win64", "entry-abi": "aapcs", ``` |
||
---|---|---|
.. | ||
abi | ||
debuginfo | ||
driver | ||
intrinsics | ||
optimize | ||
allocator.rs | ||
analyze.rs | ||
base.rs | ||
cast.rs | ||
codegen_f16_f128.rs | ||
codegen_i128.rs | ||
common.rs | ||
compiler_builtins.rs | ||
concurrency_limiter.rs | ||
config.rs | ||
constant.rs | ||
discriminant.rs | ||
global_asm.rs | ||
inline_asm.rs | ||
lib.rs | ||
linkage.rs | ||
main_shim.rs | ||
num.rs | ||
pointer.rs | ||
pretty_clif.rs | ||
toolchain.rs | ||
unsize.rs | ||
unwind_module.rs | ||
value_and_place.rs | ||
vtable.rs |