diff --git a/compiler/rustc_middle/src/mir/patch.rs b/compiler/rustc_middle/src/mir/patch.rs index b30929cd316..f6bb2ec573c 100644 --- a/compiler/rustc_middle/src/mir/patch.rs +++ b/compiler/rustc_middle/src/mir/patch.rs @@ -141,8 +141,7 @@ impl<'tcx> MirPatch<'tcx> { let mut delta = 0; let mut last_bb = START_BLOCK; - let mut terminator_targets = Vec::new(); - let mut statements: Vec> = Vec::new(); + let mut stmts_and_targets: Vec<(Statement<'_>, BasicBlock)> = Vec::new(); for (mut loc, stmt) in new_statements { if loc.block != last_bb { delta = 0; @@ -159,8 +158,8 @@ impl<'tcx> MirPatch<'tcx> { let successors = term.successors().clone(); for i in successors { - statements.push(Statement { source_info, kind: stmt.clone() }); - terminator_targets.push(i.clone()); + stmts_and_targets + .push((Statement { source_info, kind: stmt.clone() }, i.clone())); } delta += 1; continue; @@ -172,9 +171,8 @@ impl<'tcx> MirPatch<'tcx> { delta += 1; } - for target in terminator_targets.iter().rev() { - let stmt = statements.pop().unwrap(); - body[*target].statements.insert(0, stmt); + for (stmt, target) in stmts_and_targets.iter().rev() { + body[*target].statements.insert(0, stmt.clone()); } }