about summary refs log tree commit diff
path: root/compiler/rustc_target/src
diff options
context:
space:
mode:
authortiif <pekyuan@gmail.com>2025-03-11 16:46:26 +0000
committertiif <pekyuan@gmail.com>2025-03-12 14:38:52 +0000
commitd463c5d07c4715f4ebd86b2093139784fa69bd2b (patch)
treec8f14046edea644b5deb38dd0b2fbbf9befc94c4 /compiler/rustc_target/src
parent43c51e9ff33e0014c0e17712d01ae8dc44a57096 (diff)
downloadrust-d463c5d07c4715f4ebd86b2093139784fa69bd2b.tar.gz
rust-d463c5d07c4715f4ebd86b2093139784fa69bd2b.zip
Implement Display by mapping Conv to ExternAbi
Diffstat (limited to 'compiler/rustc_target/src')
-rw-r--r--compiler/rustc_target/src/callconv/mod.rs53
1 files changed, 27 insertions, 26 deletions
diff --git a/compiler/rustc_target/src/callconv/mod.rs b/compiler/rustc_target/src/callconv/mod.rs
index 0ea0d2d0173..8d8270cd8cd 100644
--- a/compiler/rustc_target/src/callconv/mod.rs
+++ b/compiler/rustc_target/src/callconv/mod.rs
@@ -898,34 +898,35 @@ impl FromStr for Conv {
     }
 }
 
+fn conv_to_externabi(conv: &Conv) -> ExternAbi {
+    match conv {
+        Conv::Rust => ExternAbi::Rust,
+        Conv::PreserveMost => ExternAbi::RustCold,
+        Conv::X86Stdcall => ExternAbi::Stdcall{unwind: false},
+        Conv::X86Fastcall => ExternAbi::Fastcall{unwind: false},
+        Conv::X86VectorCall => ExternAbi::Vectorcall{unwind: false},
+        Conv::X86ThisCall => ExternAbi::Thiscall{unwind: false},
+        Conv::C => ExternAbi::C{unwind: false},
+        Conv::X86_64Win64 => ExternAbi::Win64{unwind: false},
+        Conv::X86_64SysV => ExternAbi::SysV64{unwind: false},
+        Conv::ArmAapcs => ExternAbi::Aapcs{unwind: false},
+        Conv::CCmseNonSecureCall => ExternAbi::CCmseNonSecureCall,
+        Conv::CCmseNonSecureEntry => ExternAbi::CCmseNonSecureEntry,
+        Conv::PtxKernel => ExternAbi::PtxKernel,
+        Conv::Msp430Intr => ExternAbi::Msp430Interrupt,
+        Conv::X86Intr => ExternAbi::X86Interrupt,
+        Conv::GpuKernel => ExternAbi::GpuKernel,
+        Conv::AvrInterrupt => ExternAbi::AvrInterrupt,
+        Conv::AvrNonBlockingInterrupt => ExternAbi::AvrNonBlockingInterrupt,
+        Conv::RiscvInterrupt { kind: RiscvInterruptKind::Machine } => ExternAbi::RiscvInterruptM,
+        Conv::RiscvInterrupt { kind: RiscvInterruptKind::Supervisor } => ExternAbi::RiscvInterruptS,
+        Conv::Cold | Conv::PreserveAll => panic!("This is deadcode"),
+    }
+}
+
 impl Display for Conv {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        f.write_str(match self {
-            Conv::C => "C",
-            Conv::Rust => "Rust",
-            Conv::Cold => "Cold",
-            Conv::PreserveMost => "PreserveMost",
-            Conv::PreserveAll => "PreserveAll",
-            Conv::ArmAapcs => "ArmAapcs",
-            Conv::CCmseNonSecureCall => "CCmseNonSecureCall",
-            Conv::CCmseNonSecureEntry => "CCmseNonSecureEntry",
-            Conv::Msp430Intr => "Msp430Intr",
-            Conv::PtxKernel => "PtxKernel",
-            Conv::GpuKernel => "GpuKernel",
-            Conv::X86Fastcall => "X86Fastcall",
-            Conv::X86Intr => "X86Intr",
-            Conv::X86Stdcall => "X86Stdcall",
-            Conv::X86ThisCall => "X86ThisCall",
-            Conv::X86VectorCall => "X86VectorCall",
-            Conv::X86_64SysV => "X86_64SysV",
-            Conv::X86_64Win64 => "X86_64Win64",
-            Conv::AvrInterrupt => "AvrInterrupt",
-            Conv::AvrNonBlockingInterrupt => "AvrNonBlockingInterrupt",
-            Conv::RiscvInterrupt { kind: RiscvInterruptKind::Machine } => "RiscvInterrupt(machine)",
-            Conv::RiscvInterrupt { kind: RiscvInterruptKind::Supervisor } => {
-                "RiscvInterrupt(supervisor)"
-            }
-        })
+        write!(f, "{}", conv_to_externabi(self))
     }
 }