@@ -8,7 +8,7 @@ use crate::spec::Target;
88/// encapsulating arch-specific ABI lowering details to make them more testable.
99#[ derive( Clone , Debug ) ]
1010pub struct AbiMap {
11- arch : Arch ,
11+ arch : ArchKind ,
1212 os : OsKind ,
1313}
1414
@@ -48,17 +48,17 @@ impl AbiMap {
4848 pub fn from_target ( target : & Target ) -> Self {
4949 // the purpose of this little exercise is to force listing what affects these mappings
5050 let arch = match & * target. arch {
51- "aarch64" => Arch :: Aarch64 ,
52- "amdgpu" => Arch :: Amdgpu ,
53- "arm" if target. llvm_target . starts_with ( "thumbv8m" ) => Arch :: Arm ( ArmVer :: ThumbV8M ) ,
54- "arm" => Arch :: Arm ( ArmVer :: Other ) ,
55- "avr" => Arch :: Avr ,
56- "msp430" => Arch :: Msp430 ,
57- "nvptx64" => Arch :: Nvptx ,
58- "riscv32" | "riscv64" => Arch :: Riscv ,
59- "x86" => Arch :: X86 ,
60- "x86_64" => Arch :: X86_64 ,
61- _ => Arch :: Other ,
51+ "aarch64" => ArchKind :: Aarch64 ,
52+ "amdgpu" => ArchKind :: Amdgpu ,
53+ "arm" if target. llvm_target . starts_with ( "thumbv8m" ) => ArchKind :: Arm ( ArmVer :: ThumbV8M ) ,
54+ "arm" => ArchKind :: Arm ( ArmVer :: Other ) ,
55+ "avr" => ArchKind :: Avr ,
56+ "msp430" => ArchKind :: Msp430 ,
57+ "nvptx64" => ArchKind :: Nvptx ,
58+ "riscv32" | "riscv64" => ArchKind :: Riscv ,
59+ "x86" => ArchKind :: X86 ,
60+ "x86_64" => ArchKind :: X86_64 ,
61+ _ => ArchKind :: Other ,
6262 } ;
6363
6464 let os = if target. is_like_windows {
@@ -87,10 +87,12 @@ impl AbiMap {
8787
8888 ( ExternAbi :: Custom , _) => CanonAbi :: Custom ,
8989
90- ( ExternAbi :: System { .. } , Arch :: X86 ) if os == OsKind :: Windows && !has_c_varargs => {
90+ ( ExternAbi :: System { .. } , ArchKind :: X86 )
91+ if os == OsKind :: Windows && !has_c_varargs =>
92+ {
9193 CanonAbi :: X86 ( X86Call :: Stdcall )
9294 }
93- ( ExternAbi :: System { .. } , Arch :: Arm ( ..) ) if self . os == OsKind :: VEXos => {
95+ ( ExternAbi :: System { .. } , ArchKind :: Arm ( ..) ) if self . os == OsKind :: VEXos => {
9496 // Calls to VEXos APIs do not use VFP registers.
9597 CanonAbi :: Arm ( ArmCall :: Aapcs )
9698 }
@@ -101,73 +103,73 @@ impl AbiMap {
101103 // always and forever
102104 ( ExternAbi :: RustInvalid , _) => return AbiMapping :: Invalid ,
103105
104- ( ExternAbi :: EfiApi , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
105- ( ExternAbi :: EfiApi , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
106- ( ExternAbi :: EfiApi , Arch :: Aarch64 | Arch :: Riscv | Arch :: X86 ) => CanonAbi :: C ,
106+ ( ExternAbi :: EfiApi , ArchKind :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
107+ ( ExternAbi :: EfiApi , ArchKind :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
108+ ( ExternAbi :: EfiApi , ArchKind :: Aarch64 | ArchKind :: Riscv | ArchKind :: X86 ) => CanonAbi :: C ,
107109 ( ExternAbi :: EfiApi , _) => return AbiMapping :: Invalid ,
108110
109111 /* arm */
110- ( ExternAbi :: Aapcs { .. } , Arch :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
112+ ( ExternAbi :: Aapcs { .. } , ArchKind :: Arm ( ..) ) => CanonAbi :: Arm ( ArmCall :: Aapcs ) ,
111113 ( ExternAbi :: Aapcs { .. } , _) => return AbiMapping :: Invalid ,
112114
113- ( ExternAbi :: CmseNonSecureCall , Arch :: Arm ( ArmVer :: ThumbV8M ) ) => {
115+ ( ExternAbi :: CmseNonSecureCall , ArchKind :: Arm ( ArmVer :: ThumbV8M ) ) => {
114116 CanonAbi :: Arm ( ArmCall :: CCmseNonSecureCall )
115117 }
116- ( ExternAbi :: CmseNonSecureEntry , Arch :: Arm ( ArmVer :: ThumbV8M ) ) => {
118+ ( ExternAbi :: CmseNonSecureEntry , ArchKind :: Arm ( ArmVer :: ThumbV8M ) ) => {
117119 CanonAbi :: Arm ( ArmCall :: CCmseNonSecureEntry )
118120 }
119121 ( ExternAbi :: CmseNonSecureCall | ExternAbi :: CmseNonSecureEntry , ..) => {
120122 return AbiMapping :: Invalid ;
121123 }
122124
123125 /* gpu */
124- ( ExternAbi :: PtxKernel , Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
125- ( ExternAbi :: GpuKernel , Arch :: Amdgpu | Arch :: Nvptx ) => CanonAbi :: GpuKernel ,
126+ ( ExternAbi :: PtxKernel , ArchKind :: Nvptx ) => CanonAbi :: GpuKernel ,
127+ ( ExternAbi :: GpuKernel , ArchKind :: Amdgpu | ArchKind :: Nvptx ) => CanonAbi :: GpuKernel ,
126128 ( ExternAbi :: PtxKernel | ExternAbi :: GpuKernel , _) => return AbiMapping :: Invalid ,
127129
128130 /* x86 */
129- ( ExternAbi :: Cdecl { .. } , Arch :: X86 ) => CanonAbi :: C ,
131+ ( ExternAbi :: Cdecl { .. } , ArchKind :: X86 ) => CanonAbi :: C ,
130132 ( ExternAbi :: Cdecl { .. } , _) => return AbiMapping :: Deprecated ( CanonAbi :: C ) ,
131133
132- ( ExternAbi :: Fastcall { .. } , Arch :: X86 ) => CanonAbi :: X86 ( X86Call :: Fastcall ) ,
134+ ( ExternAbi :: Fastcall { .. } , ArchKind :: X86 ) => CanonAbi :: X86 ( X86Call :: Fastcall ) ,
133135 ( ExternAbi :: Fastcall { .. } , _) if os == OsKind :: Windows => {
134136 return AbiMapping :: Deprecated ( CanonAbi :: C ) ;
135137 }
136138 ( ExternAbi :: Fastcall { .. } , _) => return AbiMapping :: Invalid ,
137139
138- ( ExternAbi :: Stdcall { .. } , Arch :: X86 ) => CanonAbi :: X86 ( X86Call :: Stdcall ) ,
140+ ( ExternAbi :: Stdcall { .. } , ArchKind :: X86 ) => CanonAbi :: X86 ( X86Call :: Stdcall ) ,
139141 ( ExternAbi :: Stdcall { .. } , _) if os == OsKind :: Windows => {
140142 return AbiMapping :: Deprecated ( CanonAbi :: C ) ;
141143 }
142144 ( ExternAbi :: Stdcall { .. } , _) => return AbiMapping :: Invalid ,
143145
144- ( ExternAbi :: Thiscall { .. } , Arch :: X86 ) => CanonAbi :: X86 ( X86Call :: Thiscall ) ,
146+ ( ExternAbi :: Thiscall { .. } , ArchKind :: X86 ) => CanonAbi :: X86 ( X86Call :: Thiscall ) ,
145147 ( ExternAbi :: Thiscall { .. } , _) => return AbiMapping :: Invalid ,
146148
147- ( ExternAbi :: Vectorcall { .. } , Arch :: X86 | Arch :: X86_64 ) => {
149+ ( ExternAbi :: Vectorcall { .. } , ArchKind :: X86 | ArchKind :: X86_64 ) => {
148150 CanonAbi :: X86 ( X86Call :: Vectorcall )
149151 }
150152 ( ExternAbi :: Vectorcall { .. } , _) => return AbiMapping :: Invalid ,
151153
152- ( ExternAbi :: SysV64 { .. } , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: SysV64 ) ,
153- ( ExternAbi :: Win64 { .. } , Arch :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
154+ ( ExternAbi :: SysV64 { .. } , ArchKind :: X86_64 ) => CanonAbi :: X86 ( X86Call :: SysV64 ) ,
155+ ( ExternAbi :: Win64 { .. } , ArchKind :: X86_64 ) => CanonAbi :: X86 ( X86Call :: Win64 ) ,
154156 ( ExternAbi :: SysV64 { .. } | ExternAbi :: Win64 { .. } , _) => return AbiMapping :: Invalid ,
155157
156158 /* interrupts */
157- ( ExternAbi :: AvrInterrupt , Arch :: Avr ) => CanonAbi :: Interrupt ( InterruptKind :: Avr ) ,
158- ( ExternAbi :: AvrNonBlockingInterrupt , Arch :: Avr ) => {
159+ ( ExternAbi :: AvrInterrupt , ArchKind :: Avr ) => CanonAbi :: Interrupt ( InterruptKind :: Avr ) ,
160+ ( ExternAbi :: AvrNonBlockingInterrupt , ArchKind :: Avr ) => {
159161 CanonAbi :: Interrupt ( InterruptKind :: AvrNonBlocking )
160162 }
161- ( ExternAbi :: Msp430Interrupt , Arch :: Msp430 ) => {
163+ ( ExternAbi :: Msp430Interrupt , ArchKind :: Msp430 ) => {
162164 CanonAbi :: Interrupt ( InterruptKind :: Msp430 )
163165 }
164- ( ExternAbi :: RiscvInterruptM , Arch :: Riscv ) => {
166+ ( ExternAbi :: RiscvInterruptM , ArchKind :: Riscv ) => {
165167 CanonAbi :: Interrupt ( InterruptKind :: RiscvMachine )
166168 }
167- ( ExternAbi :: RiscvInterruptS , Arch :: Riscv ) => {
169+ ( ExternAbi :: RiscvInterruptS , ArchKind :: Riscv ) => {
168170 CanonAbi :: Interrupt ( InterruptKind :: RiscvSupervisor )
169171 }
170- ( ExternAbi :: X86Interrupt , Arch :: X86 | Arch :: X86_64 ) => {
172+ ( ExternAbi :: X86Interrupt , ArchKind :: X86 | ArchKind :: X86_64 ) => {
171173 CanonAbi :: Interrupt ( InterruptKind :: X86 )
172174 }
173175 (
@@ -186,7 +188,7 @@ impl AbiMap {
186188}
187189
188190#[ derive( Debug , PartialEq , Copy , Clone ) ]
189- enum Arch {
191+ enum ArchKind {
190192 Aarch64 ,
191193 Amdgpu ,
192194 Arm ( ArmVer ) ,
0 commit comments