mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 06:51:58 +00:00
make thiscall on unsupported platforms an error
This commit is contained in:
parent
efd0483949
commit
a46daf050b
@ -1522,6 +1522,7 @@ impl Target {
|
||||
AmdGpuKernel => self.arch == "amdgcn",
|
||||
AvrInterrupt | AvrNonBlockingInterrupt => self.arch == "avr",
|
||||
Wasm => ["wasm32", "wasm64"].contains(&&self.arch[..]),
|
||||
Thiscall { .. } => self.arch == "x86",
|
||||
// On windows these fall-back to platform native calling convention (C) when the
|
||||
// architecture is not supported.
|
||||
//
|
||||
@ -1552,15 +1553,13 @@ impl Target {
|
||||
// > convention is used.
|
||||
//
|
||||
// -- https://docs.microsoft.com/en-us/cpp/cpp/argument-passing-and-naming-conventions
|
||||
Stdcall { .. } | Fastcall | Thiscall { .. } | Vectorcall if self.is_like_windows => {
|
||||
true
|
||||
}
|
||||
Stdcall { .. } | Fastcall | Vectorcall if self.is_like_windows => true,
|
||||
// Outside of Windows we want to only support these calling conventions for the
|
||||
// architectures for which these calling conventions are actually well defined.
|
||||
Stdcall { .. } | Fastcall | Thiscall { .. } if self.arch == "x86" => true,
|
||||
Stdcall { .. } | Fastcall if self.arch == "x86" => true,
|
||||
Vectorcall if ["x86", "x86_64"].contains(&&self.arch[..]) => true,
|
||||
// Return a `None` for other cases so that we know to emit a future compat lint.
|
||||
Stdcall { .. } | Fastcall | Thiscall { .. } | Vectorcall => return None,
|
||||
Stdcall { .. } | Fastcall | Vectorcall => return None,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -40,9 +40,15 @@ error[E0570]: `"x86-interrupt"` is not a supported ABI for the current target
|
||||
LL | extern "x86-interrupt" fn x86() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
error[E0570]: `"thiscall"` is not a supported ABI for the current target
|
||||
--> $DIR/unsupported.rs:43:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:47:1
|
||||
|
|
||||
LL | extern "stdcall" fn stdcall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
@ -50,15 +56,6 @@ LL | extern "stdcall" fn stdcall() {}
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:50:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
error: aborting due to 7 previous errors; 2 warnings emitted
|
||||
error: aborting due to 8 previous errors; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0570`.
|
||||
|
@ -34,9 +34,15 @@ error[E0570]: `"x86-interrupt"` is not a supported ABI for the current target
|
||||
LL | extern "x86-interrupt" fn x86() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
error[E0570]: `"thiscall"` is not a supported ABI for the current target
|
||||
--> $DIR/unsupported.rs:43:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:47:1
|
||||
|
|
||||
LL | extern "stdcall" fn stdcall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
@ -44,15 +50,6 @@ LL | extern "stdcall" fn stdcall() {}
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:50:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
error: aborting due to 6 previous errors; 2 warnings emitted
|
||||
error: aborting due to 7 previous errors; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0570`.
|
||||
|
@ -40,6 +40,10 @@ extern "avr-interrupt" fn avr() {}
|
||||
extern "x86-interrupt" fn x86() {}
|
||||
//[aarch64]~^ ERROR is not a supported ABI
|
||||
//[arm]~^^ ERROR is not a supported ABI
|
||||
extern "thiscall" fn thiscall() {}
|
||||
//[x64]~^ ERROR is not a supported ABI
|
||||
//[aarch64]~^^ ERROR is not a supported ABI
|
||||
//[arm]~^^^ ERROR is not a supported ABI
|
||||
extern "stdcall" fn stdcall() {}
|
||||
//[x64]~^ WARN use of calling convention not supported
|
||||
//[x64]~^^ WARN this was previously accepted
|
||||
@ -47,10 +51,3 @@ extern "stdcall" fn stdcall() {}
|
||||
//[aarch64]~^^^^ WARN this was previously accepted
|
||||
//[arm]~^^^^^ WARN use of calling convention not supported
|
||||
//[arm]~^^^^^^ WARN this was previously accepted
|
||||
extern "thiscall" fn thiscall() {}
|
||||
//[x64]~^ WARN use of calling convention not supported
|
||||
//[x64]~^^ WARN this was previously accepted
|
||||
//[aarch64]~^^^ WARN use of calling convention not supported
|
||||
//[aarch64]~^^^^ WARN this was previously accepted
|
||||
//[arm]~^^^^^ WARN use of calling convention not supported
|
||||
//[arm]~^^^^^^ WARN this was previously accepted
|
||||
|
@ -34,9 +34,15 @@ error[E0570]: `"avr-interrupt"` is not a supported ABI for the current target
|
||||
LL | extern "avr-interrupt" fn avr() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
error[E0570]: `"thiscall"` is not a supported ABI for the current target
|
||||
--> $DIR/unsupported.rs:43:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:47:1
|
||||
|
|
||||
LL | extern "stdcall" fn stdcall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
@ -44,15 +50,6 @@ LL | extern "stdcall" fn stdcall() {}
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
warning: use of calling convention not supported on this target
|
||||
--> $DIR/unsupported.rs:50:1
|
||||
|
|
||||
LL | extern "thiscall" fn thiscall() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #87678 <https://github.com/rust-lang/rust/issues/87678>
|
||||
|
||||
error: aborting due to 6 previous errors; 2 warnings emitted
|
||||
error: aborting due to 7 previous errors; 1 warning emitted
|
||||
|
||||
For more information about this error, try `rustc --explain E0570`.
|
||||
|
Loading…
Reference in New Issue
Block a user