rust/compiler/rustc_target/src
bors b6685d748f Auto merge of #141435 - RalfJung:unsupported_calling_conventions, r=workingjubilee
Add (back) `unsupported_calling_conventions` lint to reject more invalid calling conventions

This adds back the `unsupported_calling_conventions` lint that was removed in https://github.com/rust-lang/rust/pull/129935, in order to start the process of dealing with https://github.com/rust-lang/rust/issues/137018. Specifically, we are going for the plan laid out [here](https://github.com/rust-lang/rust/issues/137018#issuecomment-2672118326):
- thiscall, stdcall, fastcall, cdecl should only be accepted on x86-32
- vectorcall should only be accepted on x86-32 and x86-64

The difference to the status quo is that:
- We stop accepting stdcall, fastcall on targets that are windows && non-x86-32 (we already don't accept these on targets that are non-windows && non-x86-32)
- We stop accepting cdecl on targets that are non-x86-32
- (There is no difference for thiscall, this was already a hard error on non-x86-32)
- We stop accepting vectorcall on targets that are windows && non-x86-*

Vectorcall is an unstable ABI so we can just make this a hard error immediately. The others are stable, so we emit the `unsupported_calling_conventions` forward-compat lint. I set up the lint to show up in dependencies via cargo's future-compat report immediately, but we could also make it show up just for the local crate first if that is preferred.

try-job: i686-msvc-1
try-job: x86_64-msvc-1
try-job: test-various
2025-06-09 05:21:49 +00:00
..
asm Add new Tier-3 targets: loongarch32-unknown-none* 2025-06-06 08:19:38 +08:00
callconv Rollup merge of #142053 - heiher:loong32-none, r=wesleywiser 2025-06-08 17:17:53 -07:00
spec Auto merge of #141435 - RalfJung:unsupported_calling_conventions, r=workingjubilee 2025-06-09 05:21:49 +00:00
json.rs compiler: actually remove Conv now that it is irrelevant 2025-06-03 10:08:11 -07:00
lib.rs Remove all unused feature gates from the compiler 2025-06-08 14:50:42 +00:00
target_features.rs Add new Tier-3 targets: loongarch32-unknown-none* 2025-06-06 08:19:38 +08:00
tests.rs Use serde_json for target spec json 2022-06-03 16:46:19 +00:00