rust/compiler/rustc_target/src
bors 6faf0bd3e5 Auto merge of #127731 - veluca93:abi_checks, r=RalfJung
Emit future-incompatibility lint when calling/declaring functions with vectors that require missing target feature

On some architectures, vector types may have a different ABI depending on whether the relevant target features are enabled. (The ABI when the feature is disabled is often not specified, but LLVM implements some de-facto ABI.)

As discussed in https://github.com/rust-lang/lang-team/issues/235, this turns out to very easily lead to unsound code.

This commit makes it a post-monomorphization error to declare or call functions using those vector types in a context in which the corresponding target features are disabled, if using an ABI for which the difference is relevant. This ensures that these functions are always called with a consistent ABI.

See the [nomination comment](https://github.com/rust-lang/rust/pull/127731#issuecomment-2288558187) for more discussion.

r? RalfJung

Part of https://github.com/rust-lang/rust/issues/116558
2024-10-25 15:17:47 +00:00
..
asm Rollup merge of #131667 - taiki-e:aarch64-inline-asm-reg-emit, r=Amanieu 2024-10-14 17:06:38 +02:00
callconv Set signext or zeroext for integer arguments on LoongArch64 2024-10-23 04:42:21 +02:00
spec Rollup merge of #131169 - madsmtm:target-info-nto-vendor, r=wesleywiser 2024-10-24 14:19:53 +11:00
json.rs compiler: Move impl of ToJson for abi::Endian 2024-10-11 17:41:52 -07:00
lib.rs compiler: Wire {TyAnd,}Layout into rustc_abi 2024-10-11 17:41:52 -07:00
target_features.rs Emit error when calling/declaring functions with unavailable vectors. 2024-10-25 08:46:40 +02:00
tests.rs Use serde_json for target spec json 2022-06-03 16:46:19 +00:00