Skip to content

Commit

Permalink
Don't change the otherwise of the switch
Browse files Browse the repository at this point in the history
  • Loading branch information
DianQK committed Apr 8, 2024
1 parent 928c57d commit 166bb1b
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 10 deletions.
3 changes: 2 additions & 1 deletion compiler/rustc_mir_transform/src/early_otherwise_branch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ impl<'tcx> MirPass<'tcx> for EarlyOtherwiseBranch {
};
(value, targets.target_for_value(value))
});
let eq_targets = SwitchTargets::new(eq_new_targets, opt_data.destination);
// The otherwise either is the same target branch or an unreachable.
let eq_targets = SwitchTargets::new(eq_new_targets, parent_targets.otherwise());

// Create `bbEq` in example above
let eq_switch = BasicBlockData::new(Some(Terminator {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
+ StorageLive(_13);
+ _13 = Ne(_9, move _12);
+ StorageDead(_12);
+ switchInt(move _13) -> [0: bb6, otherwise: bb1];
+ switchInt(move _13) -> [0: bb7, otherwise: bb1];
}

bb1: {
Expand Down Expand Up @@ -95,10 +95,13 @@
}

- bb9: {
- unreachable;
+ bb6: {
unreachable;
+ }
+
+ bb7: {
+ StorageDead(_13);
+ switchInt(_9) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb1];
+ switchInt(_9) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb6];
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
+ StorageLive(_13);
+ _13 = Ne(_9, move _12);
+ StorageDead(_12);
+ switchInt(move _13) -> [0: bb6, otherwise: bb1];
+ switchInt(move _13) -> [0: bb7, otherwise: bb1];
}

bb1: {
Expand Down Expand Up @@ -95,10 +95,13 @@
}

- bb9: {
- unreachable;
+ bb6: {
unreachable;
+ }
+
+ bb7: {
+ StorageDead(_13);
+ switchInt(_9) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb1];
+ switchInt(_9) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb6];
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
+ StorageLive(_19);
+ _19 = Ne(_14, move _18);
+ StorageDead(_18);
+ switchInt(move _19) -> [0: bb9, otherwise: bb1];
+ switchInt(move _19) -> [0: bb10, otherwise: bb1];
}

bb1: {
Expand Down Expand Up @@ -129,10 +129,13 @@
}

- bb12: {
- unreachable;
+ bb9: {
unreachable;
+ }
+
+ bb10: {
+ StorageDead(_19);
+ switchInt(_14) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb1];
+ switchInt(_14) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb9];
}
}

0 comments on commit 166bb1b

Please sign in to comment.