diff options
| author | bors <bors@rust-lang.org> | 2024-10-25 15:17:47 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-10-25 15:17:47 +0000 |
| commit | 6faf0bd3e561f1a0c81f3eafe0ce0e688385d70e (patch) | |
| tree | 54fce6cbbbdf6ce5b564da5d87ae4c078fc97c32 /compiler/rustc_monomorphize/messages.ftl | |
| parent | 45089ec19ebebec88bace6ec237244ff0eaa7ad3 (diff) | |
| parent | 5af56cac38fa48e4228e5e123d060e85eb1acbf7 (diff) | |
| download | rust-6faf0bd3e561f1a0c81f3eafe0ce0e688385d70e.tar.gz rust-6faf0bd3e561f1a0c81f3eafe0ce0e688385d70e.zip | |
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
Diffstat (limited to 'compiler/rustc_monomorphize/messages.ftl')
| -rw-r--r-- | compiler/rustc_monomorphize/messages.ftl | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_monomorphize/messages.ftl b/compiler/rustc_monomorphize/messages.ftl index 7210701d482..6da387bbebc 100644 --- a/compiler/rustc_monomorphize/messages.ftl +++ b/compiler/rustc_monomorphize/messages.ftl @@ -1,3 +1,12 @@ +monomorphize_abi_error_disabled_vector_type_call = + ABI error: this function call uses a vector type that requires the `{$required_feature}` target feature, which is not enabled in the caller + .label = function called here + .help = consider enabling it globally (`-C target-feature=+{$required_feature}`) or locally (`#[target_feature(enable="{$required_feature}")]`) +monomorphize_abi_error_disabled_vector_type_def = + ABI error: this function definition uses a vector type that requires the `{$required_feature}` target feature, which is not enabled + .label = function defined here + .help = consider enabling it globally (`-C target-feature=+{$required_feature}`) or locally (`#[target_feature(enable="{$required_feature}")]`) + monomorphize_couldnt_dump_mono_stats = unexpected error occurred while dumping monomorphization stats: {$error} |
