Auto merge of #127028 - Nadrieril:fix-or-pat-expansion, r=matthewjasper
Fix regression in the MIR lowering of or-patterns In https://github.com/rust-lang/rust/pull/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 🙏
This commit is contained in:
commit
9dcaa7f92c
3 changed files with 77 additions and 0 deletions
|
@ -1468,6 +1468,9 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if expand_until != 0 {
|
||||||
|
expand_until = i + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let (candidates_to_expand, remaining_candidates) = candidates.split_at_mut(expand_until);
|
let (candidates_to_expand, remaining_candidates) = candidates.split_at_mut(expand_until);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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() {}
|
fn main() {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue