From 2d1d723e1c8ba1d687b519958296e1d64600976c Mon Sep 17 00:00:00 2001 From: Sebastien Tardif Date: Tue, 23 Jun 2026 21:47:50 -0700 Subject: [PATCH] mir: handle CoroutineClosure and Error in simplify_nounwind_call Match sibling passes (abort_unwinding_calls, ffi_unwind_calls, validate) by treating async-closure bodies as RustCall and ignoring error types. Origin: https://github.com/rust-lang/rust/commit/843b6e08592a added Closure/Coroutine arms Signed-off-by: Sebastien Tardif --- compiler/rustc_mir_transform/src/instsimplify.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/rustc_mir_transform/src/instsimplify.rs b/compiler/rustc_mir_transform/src/instsimplify.rs index 87104364da6af..9ffa3358ac995 100644 --- a/compiler/rustc_mir_transform/src/instsimplify.rs +++ b/compiler/rustc_mir_transform/src/instsimplify.rs @@ -390,7 +390,9 @@ impl<'tcx> InstSimplifyContext<'_, 'tcx> { let body_abi = match body_ty.kind() { ty::FnDef(..) => body_ty.fn_sig(self.tcx).abi(), ty::Closure(..) => ExternAbi::RustCall, + ty::CoroutineClosure(..) => ExternAbi::RustCall, ty::Coroutine(..) => ExternAbi::Rust, + ty::Error(_) => return, _ => bug!("unexpected body ty: {body_ty:?}"), };