Skip to content

Commit 8ddd966

Browse files
committed
Rename UninhabitedEnumBranching to UnreachableEnumBranching
1 parent 1b427b3 commit 8ddd966

File tree

29 files changed

+89
-88
lines changed

29 files changed

+89
-88
lines changed

compiler/rustc_mir_transform/src/lib.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ pub mod simplify;
109109
mod simplify_branches;
110110
mod simplify_comparison_integral;
111111
mod sroa;
112-
mod uninhabited_enum_branching;
112+
mod unreachable_enum_branching;
113113
mod unreachable_prop;
114114

115115
use rustc_const_eval::transform::check_consts::{self, ConstCx};
@@ -579,9 +579,10 @@ fn run_optimization_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
579579
&remove_zsts::RemoveZsts,
580580
&remove_unneeded_drops::RemoveUnneededDrops,
581581
// Type instantiation may create uninhabited enums.
582-
&uninhabited_enum_branching::UninhabitedEnumBranching,
582+
// Also eliminates some unreachable branches based on variants of enums.
583+
&unreachable_enum_branching::UnreachableEnumBranching,
583584
&unreachable_prop::UnreachablePropagation,
584-
&o1(simplify::SimplifyCfg::AfterUninhabitedEnumBranching),
585+
&o1(simplify::SimplifyCfg::AfterUnreachableEnumBranching),
585586
// Inlining may have introduced a lot of redundant code and a large move pattern.
586587
// Now, we need to shrink the generated MIR.
587588

compiler/rustc_mir_transform/src/simplify.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub enum SimplifyCfg {
4141
ElaborateDrops,
4242
Final,
4343
MakeShim,
44-
AfterUninhabitedEnumBranching,
44+
AfterUnreachableEnumBranching,
4545
}
4646

4747
impl SimplifyCfg {
@@ -54,8 +54,8 @@ impl SimplifyCfg {
5454
SimplifyCfg::ElaborateDrops => "SimplifyCfg-elaborate-drops",
5555
SimplifyCfg::Final => "SimplifyCfg-final",
5656
SimplifyCfg::MakeShim => "SimplifyCfg-make_shim",
57-
SimplifyCfg::AfterUninhabitedEnumBranching => {
58-
"SimplifyCfg-after-uninhabited-enum-branching"
57+
SimplifyCfg::AfterUnreachableEnumBranching => {
58+
"SimplifyCfg-after-unreachable-enum-branching"
5959
}
6060
}
6161
}

compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs renamed to compiler/rustc_mir_transform/src/unreachable_enum_branching.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! A pass that eliminates branches on uninhabited enum variants.
1+
//! A pass that eliminates branches on uninhabited or unreachable enum variants.
22
33
use crate::MirPass;
44
use rustc_data_structures::fx::FxHashSet;
@@ -11,7 +11,7 @@ use rustc_middle::ty::layout::TyAndLayout;
1111
use rustc_middle::ty::{Ty, TyCtxt};
1212
use rustc_target::abi::{Abi, Variants};
1313

14-
pub struct UninhabitedEnumBranching;
14+
pub struct UnreachableEnumBranching;
1515

1616
fn get_discriminant_local(terminator: &TerminatorKind<'_>) -> Option<Local> {
1717
if let TerminatorKind::SwitchInt { discr: Operand::Move(p), .. } = terminator {
@@ -71,13 +71,13 @@ fn variant_discriminants<'tcx>(
7171
}
7272
}
7373

74-
impl<'tcx> MirPass<'tcx> for UninhabitedEnumBranching {
74+
impl<'tcx> MirPass<'tcx> for UnreachableEnumBranching {
7575
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
7676
sess.mir_opt_level() > 0
7777
}
7878

7979
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
80-
trace!("UninhabitedEnumBranching starting for {:?}", body.source);
80+
trace!("UnreachableEnumBranching starting for {:?}", body.source);
8181

8282
let mut unreachable_targets = Vec::new();
8383
let mut patch = MirPatch::new(body);
@@ -121,9 +121,9 @@ impl<'tcx> MirPass<'tcx> for UninhabitedEnumBranching {
121121
}
122122
let otherwise_is_empty_unreachable =
123123
body.basic_blocks[targets.otherwise()].is_empty_unreachable();
124-
// After resolving https://github.com/llvm/llvm-project/issues/78578,
125-
// we can remove the limit on the number of successors.
126124
fn check_successors(basic_blocks: &BasicBlocks<'_>, bb: BasicBlock) -> bool {
125+
// After resolving https://github.com/llvm/llvm-project/issues/78578,
126+
// We can remove this check.
127127
let mut successors = basic_blocks[bb].terminator().successors();
128128
let Some(first_successor) = successors.next() else { return true };
129129
if successors.next().is_some() {
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `assert_nonzero_nonmax` before SimplifyCfg-after-uninhabited-enum-branching
2-
+ // MIR for `assert_nonzero_nonmax` after SimplifyCfg-after-uninhabited-enum-branching
1+
- // MIR for `assert_nonzero_nonmax` before SimplifyCfg-after-unreachable-enum-branching
2+
+ // MIR for `assert_nonzero_nonmax` after SimplifyCfg-after-unreachable-enum-branching
33

44
fn assert_nonzero_nonmax(_1: u8) -> u8 {
55
let mut _0: u8;

tests/mir-opt/simplify_duplicate_unreachable_blocks.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
use std::intrinsics::mir::*;
66

7-
//@ unit-test: SimplifyCfg-after-uninhabited-enum-branching
7+
//@ unit-test: SimplifyCfg-after-unreachable-enum-branching
88

9-
// EMIT_MIR simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff
9+
// EMIT_MIR simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
1010
#[custom_mir(dialect = "runtime", phase = "post-cleanup")]
1111
pub unsafe fn assert_nonzero_nonmax(x: u8) -> u8 {
1212
mir!(
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `eliminate_fallthrough` before UninhabitedEnumBranching
2-
+ // MIR for `eliminate_fallthrough` after UninhabitedEnumBranching
1+
- // MIR for `eliminate_fallthrough` before UnreachableEnumBranching
2+
+ // MIR for `eliminate_fallthrough` after UnreachableEnumBranching
33

44
fn eliminate_fallthrough(_1: S) -> u32 {
55
debug s => _1;

tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff renamed to tests/mir-opt/uninhabited_fallthrough_elimination.keep_fallthrough.UnreachableEnumBranching.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `keep_fallthrough` before UninhabitedEnumBranching
2-
+ // MIR for `keep_fallthrough` after UninhabitedEnumBranching
1+
- // MIR for `keep_fallthrough` before UnreachableEnumBranching
2+
+ // MIR for `keep_fallthrough` after UnreachableEnumBranching
33

44
fn keep_fallthrough(_1: S) -> u32 {
55
debug s => _1;

tests/mir-opt/uninhabited_fallthrough_elimination.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ enum S {
99

1010
use S::*;
1111

12-
// EMIT_MIR uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff
12+
// EMIT_MIR uninhabited_fallthrough_elimination.keep_fallthrough.UnreachableEnumBranching.diff
1313
fn keep_fallthrough(s: S) -> u32 {
1414
match s {
1515
A(_) => 1,
@@ -18,7 +18,7 @@ fn keep_fallthrough(s: S) -> u32 {
1818
}
1919
}
2020

21-
// EMIT_MIR uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff
21+
// EMIT_MIR uninhabited_fallthrough_elimination.eliminate_fallthrough.UnreachableEnumBranching.diff
2222
fn eliminate_fallthrough(s: S) -> u32 {
2323
match s {
2424
C => 1,

tests/mir-opt/uninhabited_enum_branching.byref.UninhabitedEnumBranching.panic-abort.diff renamed to tests/mir-opt/unreachable_enum_branching.byref.UnreachableEnumBranching.panic-abort.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `byref` before UninhabitedEnumBranching
2-
+ // MIR for `byref` after UninhabitedEnumBranching
1+
- // MIR for `byref` before UnreachableEnumBranching
2+
+ // MIR for `byref` after UnreachableEnumBranching
33

44
fn byref() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.byref.UninhabitedEnumBranching.panic-unwind.diff renamed to tests/mir-opt/unreachable_enum_branching.byref.UnreachableEnumBranching.panic-unwind.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `byref` before UninhabitedEnumBranching
2-
+ // MIR for `byref` after UninhabitedEnumBranching
1+
- // MIR for `byref` before UnreachableEnumBranching
2+
+ // MIR for `byref` after UnreachableEnumBranching
33

44
fn byref() -> () {
55
let mut _0: ();
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `custom_discriminant` before UninhabitedEnumBranching
2-
+ // MIR for `custom_discriminant` after UninhabitedEnumBranching
1+
- // MIR for `custom_discriminant` before UnreachableEnumBranching
2+
+ // MIR for `custom_discriminant` after UnreachableEnumBranching
33

44
fn custom_discriminant() -> () {
55
let mut _0: ();
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `custom_discriminant` before UninhabitedEnumBranching
2-
+ // MIR for `custom_discriminant` after UninhabitedEnumBranching
1+
- // MIR for `custom_discriminant` before UnreachableEnumBranching
2+
+ // MIR for `custom_discriminant` after UnreachableEnumBranching
33

44
fn custom_discriminant() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t1.UninhabitedEnumBranching.panic-abort.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-abort.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t1` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t1` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t1` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t1` after UnreachableEnumBranching
33

44
fn otherwise_t1() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t1.UninhabitedEnumBranching.panic-unwind.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-unwind.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t1` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t1` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t1` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t1` after UnreachableEnumBranching
33

44
fn otherwise_t1() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t2.UninhabitedEnumBranching.panic-abort.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-abort.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t2` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t2` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t2` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t2` after UnreachableEnumBranching
33

44
fn otherwise_t2() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t2.UninhabitedEnumBranching.panic-unwind.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-unwind.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t2` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t2` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t2` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t2` after UnreachableEnumBranching
33

44
fn otherwise_t2() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t3.UninhabitedEnumBranching.panic-abort.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-abort.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t3` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t3` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t3` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t3` after UnreachableEnumBranching
33

44
fn otherwise_t3() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t3.UninhabitedEnumBranching.panic-unwind.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-unwind.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t3` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t3` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t3` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t3` after UnreachableEnumBranching
33

44
fn otherwise_t3() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t4.UninhabitedEnumBranching.panic-abort.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-abort.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t4` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4` after UnreachableEnumBranching
33

44
fn otherwise_t4() -> () {
55
let mut _0: ();

tests/mir-opt/uninhabited_enum_branching.otherwise_t4.UninhabitedEnumBranching.panic-unwind.diff renamed to tests/mir-opt/unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-unwind.diff

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- // MIR for `otherwise_t4` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4` after UnreachableEnumBranching
33

44
fn otherwise_t4() -> () {
55
let mut _0: ();
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t4_uninhabited_default` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4_uninhabited_default` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4_unreachable_default` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4_unreachable_default` after UnreachableEnumBranching
33

4-
fn otherwise_t4_uninhabited_default() -> () {
4+
fn otherwise_t4_unreachable_default() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test4;
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t4_uninhabited_default` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4_uninhabited_default` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4_unreachable_default` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4_unreachable_default` after UnreachableEnumBranching
33

4-
fn otherwise_t4_uninhabited_default() -> () {
4+
fn otherwise_t4_unreachable_default() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test4;
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t4_uninhabited_default_2` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4_uninhabited_default_2` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4_unreachable_default_2` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4_unreachable_default_2` after UnreachableEnumBranching
33

4-
fn otherwise_t4_uninhabited_default_2() -> () {
4+
fn otherwise_t4_unreachable_default_2() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test4;
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t4_uninhabited_default_2` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t4_uninhabited_default_2` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t4_unreachable_default_2` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t4_unreachable_default_2` after UnreachableEnumBranching
33

4-
fn otherwise_t4_uninhabited_default_2() -> () {
4+
fn otherwise_t4_unreachable_default_2() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test4;
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t5_uninhabited_default` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t5_uninhabited_default` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t5_unreachable_default` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t5_unreachable_default` after UnreachableEnumBranching
33

4-
fn otherwise_t5_uninhabited_default() -> () {
4+
fn otherwise_t5_unreachable_default() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test5<T>;
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
- // MIR for `otherwise_t5_uninhabited_default` before UninhabitedEnumBranching
2-
+ // MIR for `otherwise_t5_uninhabited_default` after UninhabitedEnumBranching
1+
- // MIR for `otherwise_t5_unreachable_default` before UnreachableEnumBranching
2+
+ // MIR for `otherwise_t5_unreachable_default` after UnreachableEnumBranching
33

4-
fn otherwise_t5_uninhabited_default() -> () {
4+
fn otherwise_t5_unreachable_default() -> () {
55
let mut _0: ();
66
let _1: &str;
77
let mut _2: Test5<T>;

0 commit comments

Comments
 (0)