Add UnwindAction::Unreachable
This also makes eval machine's `StackPopUnwind` redundant so that is replaced.
This commit is contained in:
parent
daeb844e0c
commit
5e6ed132fa
23 changed files with 160 additions and 149 deletions
|
@ -12,6 +12,8 @@ pub struct MirPatch<'tcx> {
|
|||
new_statements: Vec<(Location, StatementKind<'tcx>)>,
|
||||
new_locals: Vec<LocalDecl<'tcx>>,
|
||||
resume_block: Option<BasicBlock>,
|
||||
// Only for unreachable in cleanup path.
|
||||
unreachable_block: Option<BasicBlock>,
|
||||
body_span: Span,
|
||||
next_local: usize,
|
||||
}
|
||||
|
@ -25,11 +27,12 @@ impl<'tcx> MirPatch<'tcx> {
|
|||
new_locals: vec![],
|
||||
next_local: body.local_decls.len(),
|
||||
resume_block: None,
|
||||
unreachable_block: None,
|
||||
body_span: body.span,
|
||||
};
|
||||
|
||||
// Check if we already have a resume block
|
||||
for (bb, block) in body.basic_blocks.iter_enumerated() {
|
||||
// Check if we already have a resume block
|
||||
if let TerminatorKind::Resume = block.terminator().kind && block.statements.is_empty() {
|
||||
result.resume_block = Some(bb);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue