Skip to content

Commit f9f7e75

Browse files
actually encode permissive AbiMapping variants
1 parent 895cf95 commit f9f7e75

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

compiler/rustc_target/src/spec/abi_map.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl AbiMap {
6363

6464
let canon_abi = match (extern_abi, arch) {
6565
// infallible lowerings
66-
(ExternAbi::C { .. } | ExternAbi::Cdecl { .. }, _) => CanonAbi::C,
66+
(ExternAbi::C { .. }, _) => CanonAbi::C,
6767
(ExternAbi::Rust | ExternAbi::RustCall, _) => CanonAbi::Rust,
6868
(ExternAbi::Unadjusted, _) => CanonAbi::C,
6969

@@ -94,12 +94,19 @@ impl AbiMap {
9494
return AbiMapping::Invalid;
9595
}
9696

97+
(ExternAbi::Cdecl { .. }, Arch::X86) => CanonAbi::C,
98+
(ExternAbi::Cdecl { .. }, _) => return AbiMapping::Permissive(CanonAbi::C),
99+
97100
(ExternAbi::Fastcall { .. }, Arch::X86) => CanonAbi::X86(X86Call::Fastcall),
98-
(ExternAbi::Fastcall { .. }, _) if os == OsKind::Windows => CanonAbi::C,
101+
(ExternAbi::Fastcall { .. }, _) if os == OsKind::Windows => {
102+
return AbiMapping::Permissive(CanonAbi::C);
103+
}
99104
(ExternAbi::Fastcall { .. }, _) => return AbiMapping::Invalid,
100105

101106
(ExternAbi::Stdcall { .. }, Arch::X86) => CanonAbi::X86(X86Call::Stdcall),
102-
(ExternAbi::Stdcall { .. }, _) if os == OsKind::Windows => CanonAbi::C,
107+
(ExternAbi::Stdcall { .. }, _) if os == OsKind::Windows => {
108+
return AbiMapping::Permissive(CanonAbi::C);
109+
}
103110
(ExternAbi::Stdcall { .. }, _) => return AbiMapping::Invalid,
104111

105112
(ExternAbi::Thiscall { .. }, Arch::X86) => CanonAbi::X86(X86Call::Thiscall),
@@ -108,7 +115,9 @@ impl AbiMap {
108115
(ExternAbi::Vectorcall { .. }, Arch::X86 | Arch::X86_64) => {
109116
CanonAbi::X86(X86Call::Vectorcall)
110117
}
111-
(ExternAbi::Vectorcall { .. }, _) if os == OsKind::Windows => CanonAbi::C,
118+
(ExternAbi::Vectorcall { .. }, _) if os == OsKind::Windows => {
119+
return AbiMapping::Permissive(CanonAbi::C);
120+
}
112121
(ExternAbi::Vectorcall { .. }, _) => return AbiMapping::Invalid,
113122

114123
(ExternAbi::SysV64 { .. }, Arch::X86_64) => CanonAbi::X86(X86Call::SysV64),

0 commit comments

Comments
 (0)