Rollup merge of #133932 - bjorn3:fix_ptx_kernel_abi, r=wesleywiser
Avoid using make_direct_deprecated() in extern "ptx-kernel" This method will be removed in the future as it produces a broken ABI that depends on cg_llvm implementation details. After this PR wasm32-unknown-unknown is the only remaining user of make_direct_deprecated(). Fixes https://github.com/rust-lang/rust/issues/117271 Blocks https://github.com/rust-lang/rust/issues/38788
This commit is contained in:
commit
cc0f3efe7b
3 changed files with 34 additions and 39 deletions
|
@ -489,21 +489,16 @@ fn fn_abi_sanity_check<'tcx>(
|
|||
// have to allow it -- but we absolutely shouldn't let any more targets do
|
||||
// that. (Also see <https://github.com/rust-lang/rust/issues/115666>.)
|
||||
//
|
||||
// The unstable abi `PtxKernel` also uses Direct for now.
|
||||
// It needs to switch to something else before stabilization can happen.
|
||||
// (See issue: https://github.com/rust-lang/rust/issues/117271)
|
||||
//
|
||||
// And finally the unadjusted ABI is ill specified and uses Direct for all
|
||||
// args, but unfortunately we need it for calling certain LLVM intrinsics.
|
||||
// The unadjusted ABI also uses Direct for all args and is ill-specified,
|
||||
// but unfortunately we need it for calling certain LLVM intrinsics.
|
||||
|
||||
match spec_abi {
|
||||
ExternAbi::Unadjusted => {}
|
||||
ExternAbi::PtxKernel => {}
|
||||
ExternAbi::C { unwind: _ }
|
||||
if matches!(&*tcx.sess.target.arch, "wasm32" | "wasm64") => {}
|
||||
_ => {
|
||||
panic!(
|
||||
"`PassMode::Direct` for aggregates only allowed for \"unadjusted\" and \"ptx-kernel\" functions and on wasm\n\
|
||||
"`PassMode::Direct` for aggregates only allowed for \"unadjusted\" functions and on wasm\n\
|
||||
Problematic type: {:#?}",
|
||||
arg.layout,
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue