about summary refs log tree commit diff
path: root/compiler/rustc_target/src
diff options
context:
space:
mode:
authorJana Dönszelmann <jonathan@donsz.nl>2025-06-25 22:14:56 +0200
committerGitHub <noreply@github.com>2025-06-25 22:14:56 +0200
commit20e47aafcc7efa251fd1ff3afcbd2f529bdcece0 (patch)
tree376bb173767600c77eef818043aa12b3b5624675 /compiler/rustc_target/src
parentda42289cd75487d0f75cafd7bbcc39c18aec8f83 (diff)
parentc24914ec8329b22ec7bcaa6ab534a784b2bd8ab9 (diff)
downloadrust-20e47aafcc7efa251fd1ff3afcbd2f529bdcece0.tar.gz
rust-20e47aafcc7efa251fd1ff3afcbd2f529bdcece0.zip
Rollup merge of #142992 - workingjubilee:dont-validate-naughty-abis, r=jieyouxu
Convert some ABI tests to use `extern "rust-invalid"`
Diffstat (limited to 'compiler/rustc_target/src')
-rw-r--r--compiler/rustc_target/src/spec/abi_map.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/compiler/rustc_target/src/spec/abi_map.rs b/compiler/rustc_target/src/spec/abi_map.rs
index fde3adb034d..b13e2112478 100644
--- a/compiler/rustc_target/src/spec/abi_map.rs
+++ b/compiler/rustc_target/src/spec/abi_map.rs
@@ -85,11 +85,16 @@ impl AbiMap {
             (ExternAbi::System { .. }, _) => CanonAbi::C,
 
             // fallible lowerings
+            /* multi-platform */
+            // always and forever
+            (ExternAbi::RustInvalid, _) => return AbiMapping::Invalid,
+
             (ExternAbi::EfiApi, Arch::Arm(..)) => CanonAbi::Arm(ArmCall::Aapcs),
             (ExternAbi::EfiApi, Arch::X86_64) => CanonAbi::X86(X86Call::Win64),
             (ExternAbi::EfiApi, Arch::Aarch64 | Arch::Riscv | Arch::X86) => CanonAbi::C,
             (ExternAbi::EfiApi, _) => return AbiMapping::Invalid,
 
+            /* arm */
             (ExternAbi::Aapcs { .. }, Arch::Arm(..)) => CanonAbi::Arm(ArmCall::Aapcs),
             (ExternAbi::Aapcs { .. }, _) => return AbiMapping::Invalid,
 
@@ -103,6 +108,12 @@ impl AbiMap {
                 return AbiMapping::Invalid;
             }
 
+            /* gpu */
+            (ExternAbi::PtxKernel, Arch::Nvptx) => CanonAbi::GpuKernel,
+            (ExternAbi::GpuKernel, Arch::Amdgpu | Arch::Nvptx) => CanonAbi::GpuKernel,
+            (ExternAbi::PtxKernel | ExternAbi::GpuKernel, _) => return AbiMapping::Invalid,
+
+            /* x86 */
             (ExternAbi::Cdecl { .. }, Arch::X86) => CanonAbi::C,
             (ExternAbi::Cdecl { .. }, _) => return AbiMapping::Deprecated(CanonAbi::C),
 
@@ -130,10 +141,7 @@ impl AbiMap {
             (ExternAbi::Win64 { .. }, Arch::X86_64) => CanonAbi::X86(X86Call::Win64),
             (ExternAbi::SysV64 { .. } | ExternAbi::Win64 { .. }, _) => return AbiMapping::Invalid,
 
-            (ExternAbi::PtxKernel, Arch::Nvptx) => CanonAbi::GpuKernel,
-            (ExternAbi::GpuKernel, Arch::Amdgpu | Arch::Nvptx) => CanonAbi::GpuKernel,
-            (ExternAbi::PtxKernel | ExternAbi::GpuKernel, _) => return AbiMapping::Invalid,
-
+            /* interrupts */
             (ExternAbi::AvrInterrupt, Arch::Avr) => CanonAbi::Interrupt(InterruptKind::Avr),
             (ExternAbi::AvrNonBlockingInterrupt, Arch::Avr) => {
                 CanonAbi::Interrupt(InterruptKind::AvrNonBlocking)
@@ -156,8 +164,7 @@ impl AbiMap {
                 | ExternAbi::Msp430Interrupt
                 | ExternAbi::RiscvInterruptM
                 | ExternAbi::RiscvInterruptS
-                | ExternAbi::X86Interrupt
-                | ExternAbi::RustInvalid,
+                | ExternAbi::X86Interrupt,
                 _,
             ) => return AbiMapping::Invalid,
         };