about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/mir/patch.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_middle/src/mir/patch.rs')
-rw-r--r--compiler/rustc_middle/src/mir/patch.rs12
1 files changed, 5 insertions, 7 deletions
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<Statement<'_>> = 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());
         }
     }