Skip to content

Commit

Permalink
Rollup merge of rust-lang#127028 - Nadrieril:fix-or-pat-expansion, r=…
Browse files Browse the repository at this point in the history
…matthewjasper

Fix regression in the MIR lowering of or-patterns

In rust-lang#126553 I made a silly indexing mistake and regressed the MIR lowering of or-patterns. This fixes it.

r? `@compiler-errors` because I'd like this to be merged quickly 🙏
  • Loading branch information
matthiaskrgr committed Jul 9, 2024
2 parents a2d5819 + 834f043 commit 64bebff
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 0 deletions.
3 changes: 3 additions & 0 deletions compiler/rustc_mir_build/src/build/matches/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1468,6 +1468,9 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
break;
}
}
if expand_until != 0 {
expand_until = i + 1;
}
}
let (candidates_to_expand, remaining_candidates) = candidates.split_at_mut(expand_until);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// MIR for `match_enum` after built

fn match_enum(_1: E1) -> bool {
debug x => _1;
let mut _0: bool;
let mut _2: isize;

bb0: {
PlaceMention(_1);
_2 = discriminant(_1);
switchInt(move _2) -> [0: bb3, 1: bb5, 2: bb7, otherwise: bb2];
}

bb1: {
FakeRead(ForMatchedPlace(None), _1);
unreachable;
}

bb2: {
goto -> bb1;
}

bb3: {
goto -> bb9;
}

bb4: {
goto -> bb2;
}

bb5: {
goto -> bb9;
}

bb6: {
goto -> bb2;
}

bb7: {
_0 = const false;
goto -> bb11;
}

bb8: {
goto -> bb2;
}

bb9: {
falseEdge -> [real: bb10, imaginary: bb7];
}

bb10: {
_0 = const true;
goto -> bb11;
}

bb11: {
return;
}
}
14 changes: 14 additions & 0 deletions tests/mir-opt/building/match/simple_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,18 @@ fn match_bool(x: bool) -> usize {
}
}

pub enum E1 {
V1,
V2,
V3,
}

// EMIT_MIR simple_match.match_enum.built.after.mir
pub fn match_enum(x: E1) -> bool {
match x {
E1::V1 | E1::V2 => true,
E1::V3 => false,
}
}

fn main() {}

0 comments on commit 64bebff

Please sign in to comment.