diff options
| author | Ralf Jung <post@ralfj.de> | 2023-08-21 09:57:10 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-08-24 13:28:26 +0200 |
| commit | 3f4145e169f73392c3f5d0d8acf8840b2e8fc189 (patch) | |
| tree | 0e8f61e6133598fb74fb0abeb8d50b195589c1a0 | |
| parent | 18658cb0c9320d5a028246562ed40663ea72371b (diff) | |
| download | rust-3f4145e169f73392c3f5d0d8acf8840b2e8fc189.tar.gz rust-3f4145e169f73392c3f5d0d8acf8840b2e8fc189.zip | |
when terminating during unwinding, show the reason why
| -rw-r--r-- | src/base.rs | 9 | ||||
| -rw-r--r-- | src/constant.rs | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/base.rs b/src/base.rs index ed371a04c53..9159bc36987 100644 --- a/src/base.rs +++ b/src/base.rs @@ -474,8 +474,8 @@ fn codegen_fn_body(fx: &mut FunctionCx<'_, '_, '_>, start_block: Block) { *destination, ); } - TerminatorKind::UnwindTerminate => { - codegen_panic_cannot_unwind(fx, source_info); + TerminatorKind::UnwindTerminate(reason) => { + codegen_unwind_terminate(fx, source_info, *reason); } TerminatorKind::UnwindResume => { // FIXME implement unwinding @@ -971,13 +971,14 @@ pub(crate) fn codegen_panic_nounwind<'tcx>( codegen_panic_inner(fx, rustc_hir::LangItem::PanicNounwind, &args, source_info.span); } -pub(crate) fn codegen_panic_cannot_unwind<'tcx>( +pub(crate) fn codegen_unwind_terminate<'tcx>( fx: &mut FunctionCx<'_, '_, 'tcx>, source_info: mir::SourceInfo, + reason: UnwindTerminateReason, ) { let args = []; - codegen_panic_inner(fx, rustc_hir::LangItem::PanicCannotUnwind, &args, source_info.span); + codegen_panic_inner(fx, reason.lang_item(), &args, source_info.span); } fn codegen_panic_inner<'tcx>( diff --git a/src/constant.rs b/src/constant.rs index 7db5f79eead..a934b0767f1 100644 --- a/src/constant.rs +++ b/src/constant.rs @@ -551,7 +551,7 @@ pub(crate) fn mir_operand_get_const_val<'tcx>( TerminatorKind::Goto { .. } | TerminatorKind::SwitchInt { .. } | TerminatorKind::UnwindResume - | TerminatorKind::UnwindTerminate + | TerminatorKind::UnwindTerminate(_) | TerminatorKind::Return | TerminatorKind::Unreachable | TerminatorKind::Drop { .. } |
