Consistently merge simplifiable or-patterns
This commit is contained in:
parent
08d7379961
commit
d1d9aa3108
2 changed files with 13 additions and 20 deletions
|
@ -1293,8 +1293,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||||
// At least one of the candidates has been split into subcandidates.
|
// At least one of the candidates has been split into subcandidates.
|
||||||
// We need to change the candidate list to include those.
|
// We need to change the candidate list to include those.
|
||||||
let mut new_candidates = Vec::new();
|
let mut new_candidates = Vec::new();
|
||||||
|
for candidate in candidates.iter_mut() {
|
||||||
for candidate in candidates {
|
|
||||||
candidate.visit_leaves(|leaf_candidate| new_candidates.push(leaf_candidate));
|
candidate.visit_leaves(|leaf_candidate| new_candidates.push(leaf_candidate));
|
||||||
}
|
}
|
||||||
self.match_simplified_candidates(
|
self.match_simplified_candidates(
|
||||||
|
@ -1304,6 +1303,10 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||||
otherwise_block,
|
otherwise_block,
|
||||||
&mut *new_candidates,
|
&mut *new_candidates,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
for candidate in candidates {
|
||||||
|
self.merge_trivial_subcandidates(candidate);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.match_simplified_candidates(
|
self.match_simplified_candidates(
|
||||||
span,
|
span,
|
||||||
|
|
|
@ -26,18 +26,20 @@
|
||||||
_3 = _1;
|
_3 = _1;
|
||||||
_2 = move _3 as [u32; 4] (Transmute);
|
_2 = move _3 as [u32; 4] (Transmute);
|
||||||
StorageDead(_3);
|
StorageDead(_3);
|
||||||
switchInt(_2[0 of 4]) -> [0: bb1, otherwise: bb6];
|
switchInt(_2[0 of 4]) -> [0: bb1, otherwise: bb4];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb1: {
|
bb1: {
|
||||||
switchInt(_2[1 of 4]) -> [0: bb2, otherwise: bb6];
|
switchInt(_2[1 of 4]) -> [0: bb2, otherwise: bb4];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb2: {
|
bb2: {
|
||||||
switchInt(_2[2 of 4]) -> [0: bb4, 4294901760: bb5, otherwise: bb6];
|
switchInt(_2[2 of 4]) -> [0: bb3, 4294901760: bb3, otherwise: bb4];
|
||||||
}
|
}
|
||||||
|
|
||||||
bb3: {
|
bb3: {
|
||||||
|
StorageLive(_4);
|
||||||
|
_4 = _2[3 of 4];
|
||||||
StorageLive(_5);
|
StorageLive(_5);
|
||||||
StorageLive(_6);
|
StorageLive(_6);
|
||||||
_6 = _4;
|
_6 = _4;
|
||||||
|
@ -46,27 +48,15 @@
|
||||||
_0 = Option::<[u8; 4]>::Some(move _5);
|
_0 = Option::<[u8; 4]>::Some(move _5);
|
||||||
StorageDead(_5);
|
StorageDead(_5);
|
||||||
StorageDead(_4);
|
StorageDead(_4);
|
||||||
goto -> bb7;
|
goto -> bb5;
|
||||||
}
|
}
|
||||||
|
|
||||||
bb4: {
|
bb4: {
|
||||||
StorageLive(_4);
|
_0 = Option::<[u8; 4]>::None;
|
||||||
_4 = _2[3 of 4];
|
goto -> bb5;
|
||||||
goto -> bb3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bb5: {
|
bb5: {
|
||||||
StorageLive(_4);
|
|
||||||
_4 = _2[3 of 4];
|
|
||||||
goto -> bb3;
|
|
||||||
}
|
|
||||||
|
|
||||||
bb6: {
|
|
||||||
_0 = Option::<[u8; 4]>::None;
|
|
||||||
goto -> bb7;
|
|
||||||
}
|
|
||||||
|
|
||||||
bb7: {
|
|
||||||
StorageDead(_2);
|
StorageDead(_2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue