mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-14 13:06:49 +00:00
compiler: use is_rustic_abi
in ty_utils
expands some conditionals to include different "rustic" ABIs, so that we actually handle passing args through all "rustic" ABIs
This commit is contained in:
parent
e81fbe30e6
commit
8a689878ce
@ -436,10 +436,7 @@ fn fn_abi_sanity_check<'tcx>(
|
||||
) {
|
||||
let tcx = cx.tcx();
|
||||
|
||||
if spec_abi == ExternAbi::Rust
|
||||
|| spec_abi == ExternAbi::RustCall
|
||||
|| spec_abi == ExternAbi::RustCold
|
||||
{
|
||||
if spec_abi.is_rustic_abi() {
|
||||
if arg.layout.is_zst() {
|
||||
// Casting closures to function pointers depends on ZST closure types being
|
||||
// omitted entirely in the calling convention.
|
||||
@ -687,7 +684,7 @@ fn fn_abi_adjust_for_abi<'tcx>(
|
||||
|
||||
let tcx = cx.tcx();
|
||||
|
||||
if abi == ExternAbi::Rust || abi == ExternAbi::RustCall || abi == ExternAbi::RustIntrinsic {
|
||||
if abi.is_rustic_abi() {
|
||||
fn_abi.adjust_for_rust_abi(cx, abi);
|
||||
|
||||
// Look up the deduced parameter attributes for this function, if we have its def ID and
|
||||
|
@ -1,11 +0,0 @@
|
||||
//@ known-bug: #132981
|
||||
//@compile-flags: -Clink-dead-code=true --crate-type lib
|
||||
//@ only-x86_64
|
||||
//@ ignore-windows
|
||||
// The set of targets this crashes on is really fiddly, because it is deep in our ABI logic. It
|
||||
// crashes on x86_64-unknown-linux-gnu, and i686-pc-windows-msvc, but not on
|
||||
// x86_64-pc-windows-msvc. If you are trying to fix this crash, don't pay too much attention to the
|
||||
// directives.
|
||||
|
||||
#![feature(rust_cold_cc)]
|
||||
pub extern "rust-cold" fn foo(_: [usize; 3]) {}
|
6
tests/ui/abi/rust-cold-works-with-rustic-args.rs
Normal file
6
tests/ui/abi/rust-cold-works-with-rustic-args.rs
Normal file
@ -0,0 +1,6 @@
|
||||
//@build-pass
|
||||
//@compile-flags: -Clink-dead-code=true --crate-type lib
|
||||
// We used to not handle all "rustic" ABIs in a (relatively) uniform way,
|
||||
// so we failed to fix up arguments for actually passing through the ABI...
|
||||
#![feature(rust_cold_cc)]
|
||||
pub extern "rust-cold" fn foo(_: [usize; 3]) {}
|
Loading…
Reference in New Issue
Block a user