Skip to content

Commit c24914e

Browse files
compiler: fussily sort the huge AbiMap match
1 parent 087dabf commit c24914e

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

compiler/rustc_target/src/spec/abi_map.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,16 @@ impl AbiMap {
8585
(ExternAbi::System { .. }, _) => CanonAbi::C,
8686

8787
// fallible lowerings
88+
/* multi-platform */
89+
// always and forever
90+
(ExternAbi::RustInvalid, _) => return AbiMapping::Invalid,
91+
8892
(ExternAbi::EfiApi, Arch::Arm(..)) => CanonAbi::Arm(ArmCall::Aapcs),
8993
(ExternAbi::EfiApi, Arch::X86_64) => CanonAbi::X86(X86Call::Win64),
9094
(ExternAbi::EfiApi, Arch::Aarch64 | Arch::Riscv | Arch::X86) => CanonAbi::C,
9195
(ExternAbi::EfiApi, _) => return AbiMapping::Invalid,
9296

97+
/* arm */
9398
(ExternAbi::Aapcs { .. }, Arch::Arm(..)) => CanonAbi::Arm(ArmCall::Aapcs),
9499
(ExternAbi::Aapcs { .. }, _) => return AbiMapping::Invalid,
95100

@@ -103,6 +108,12 @@ impl AbiMap {
103108
return AbiMapping::Invalid;
104109
}
105110

111+
/* gpu */
112+
(ExternAbi::PtxKernel, Arch::Nvptx) => CanonAbi::GpuKernel,
113+
(ExternAbi::GpuKernel, Arch::Amdgpu | Arch::Nvptx) => CanonAbi::GpuKernel,
114+
(ExternAbi::PtxKernel | ExternAbi::GpuKernel, _) => return AbiMapping::Invalid,
115+
116+
/* x86 */
106117
(ExternAbi::Cdecl { .. }, Arch::X86) => CanonAbi::C,
107118
(ExternAbi::Cdecl { .. }, _) => return AbiMapping::Deprecated(CanonAbi::C),
108119

@@ -130,10 +141,7 @@ impl AbiMap {
130141
(ExternAbi::Win64 { .. }, Arch::X86_64) => CanonAbi::X86(X86Call::Win64),
131142
(ExternAbi::SysV64 { .. } | ExternAbi::Win64 { .. }, _) => return AbiMapping::Invalid,
132143

133-
(ExternAbi::PtxKernel, Arch::Nvptx) => CanonAbi::GpuKernel,
134-
(ExternAbi::GpuKernel, Arch::Amdgpu | Arch::Nvptx) => CanonAbi::GpuKernel,
135-
(ExternAbi::PtxKernel | ExternAbi::GpuKernel, _) => return AbiMapping::Invalid,
136-
144+
/* interrupts */
137145
(ExternAbi::AvrInterrupt, Arch::Avr) => CanonAbi::Interrupt(InterruptKind::Avr),
138146
(ExternAbi::AvrNonBlockingInterrupt, Arch::Avr) => {
139147
CanonAbi::Interrupt(InterruptKind::AvrNonBlocking)
@@ -156,8 +164,7 @@ impl AbiMap {
156164
| ExternAbi::Msp430Interrupt
157165
| ExternAbi::RiscvInterruptM
158166
| ExternAbi::RiscvInterruptS
159-
| ExternAbi::X86Interrupt
160-
| ExternAbi::RustInvalid,
167+
| ExternAbi::X86Interrupt,
161168
_,
162169
) => return AbiMapping::Invalid,
163170
};

0 commit comments

Comments
 (0)