compiler: fussily sort the huge AbiMap match
This commit is contained in:
parent
087dabfca7
commit
c24914ec83
1 changed files with 13 additions and 6 deletions
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue