mirror of https://github.com/rust-lang/rust.git
Don't try to save an extra block
This is preparation for the next commit.
This commit is contained in:
parent
c5062f7318
commit
8a222ffd6b
|
@ -2021,19 +2021,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
|
||||
// The block that we should branch to if none of the
|
||||
// `target_candidates` match.
|
||||
let remainder_start = if !remaining_candidates.is_empty() {
|
||||
let remainder_start = self.cfg.start_new_block();
|
||||
self.match_candidates(
|
||||
span,
|
||||
scrutinee_span,
|
||||
remainder_start,
|
||||
otherwise_block,
|
||||
remaining_candidates,
|
||||
);
|
||||
remainder_start
|
||||
} else {
|
||||
otherwise_block
|
||||
};
|
||||
let remainder_start = self.cfg.start_new_block();
|
||||
|
||||
// For each outcome of test, process the candidates that still apply.
|
||||
let target_blocks: FxIndexMap<_, _> = target_candidates
|
||||
|
@ -2061,6 +2049,14 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
&test,
|
||||
target_blocks,
|
||||
);
|
||||
|
||||
self.match_candidates(
|
||||
span,
|
||||
scrutinee_span,
|
||||
remainder_start,
|
||||
otherwise_block,
|
||||
remaining_candidates,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,13 +27,13 @@ fn main() -> () {
|
|||
StorageLive(_5);
|
||||
PlaceMention(_1);
|
||||
_6 = discriminant(_1);
|
||||
switchInt(move _6) -> [1: bb4, otherwise: bb3];
|
||||
switchInt(move _6) -> [1: bb5, otherwise: bb4];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_3);
|
||||
StorageLive(_4);
|
||||
_4 = begin_panic::<&str>(const "explicit panic") -> bb8;
|
||||
_4 = begin_panic::<&str>(const "explicit panic") -> bb9;
|
||||
}
|
||||
|
||||
bb2: {
|
||||
|
@ -43,18 +43,22 @@ fn main() -> () {
|
|||
}
|
||||
|
||||
bb3: {
|
||||
goto -> bb7;
|
||||
goto -> bb8;
|
||||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb6, imaginary: bb3];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
falseEdge -> [real: bb7, imaginary: bb3];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
goto -> bb4;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_5 = ((_1 as Some).0: u8);
|
||||
_0 = const ();
|
||||
StorageDead(_5);
|
||||
|
@ -62,12 +66,12 @@ fn main() -> () {
|
|||
return;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
bb8: {
|
||||
StorageDead(_5);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb8 (cleanup): {
|
||||
bb9 (cleanup): {
|
||||
resume;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ fn main() -> () {
|
|||
}
|
||||
|
||||
bb1: {
|
||||
falseUnwind -> [real: bb2, unwind: bb14];
|
||||
falseUnwind -> [real: bb2, unwind: bb15];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
|
@ -25,7 +25,7 @@ fn main() -> () {
|
|||
StorageLive(_3);
|
||||
_3 = const true;
|
||||
PlaceMention(_3);
|
||||
switchInt(_3) -> [0: bb4, otherwise: bb6];
|
||||
switchInt(_3) -> [0: bb5, otherwise: bb7];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
|
@ -34,45 +34,49 @@ fn main() -> () {
|
|||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb8, imaginary: bb6];
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
goto -> bb3;
|
||||
falseEdge -> [real: bb9, imaginary: bb7];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
_0 = const ();
|
||||
goto -> bb13;
|
||||
goto -> bb4;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
goto -> bb3;
|
||||
_0 = const ();
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_2 = const 4_i32;
|
||||
goto -> bb11;
|
||||
goto -> bb4;
|
||||
}
|
||||
|
||||
bb9: {
|
||||
unreachable;
|
||||
_2 = const 4_i32;
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
goto -> bb11;
|
||||
unreachable;
|
||||
}
|
||||
|
||||
bb11: {
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb12: {
|
||||
FakeRead(ForLet(None), _2);
|
||||
StorageDead(_3);
|
||||
StorageLive(_5);
|
||||
StorageLive(_6);
|
||||
_6 = &_2;
|
||||
_5 = std::mem::drop::<&i32>(move _6) -> [return: bb12, unwind: bb14];
|
||||
_5 = std::mem::drop::<&i32>(move _6) -> [return: bb13, unwind: bb15];
|
||||
}
|
||||
|
||||
bb12: {
|
||||
bb13: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_5);
|
||||
_1 = const ();
|
||||
|
@ -80,13 +84,13 @@ fn main() -> () {
|
|||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb13: {
|
||||
bb14: {
|
||||
StorageDead(_3);
|
||||
StorageDead(_2);
|
||||
return;
|
||||
}
|
||||
|
||||
bb14 (cleanup): {
|
||||
bb15 (cleanup): {
|
||||
resume;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,180 +19,188 @@ fn test_complex() -> () {
|
|||
bb0: {
|
||||
StorageLive(_1);
|
||||
StorageLive(_2);
|
||||
_2 = E::f() -> [return: bb1, unwind: bb34];
|
||||
_2 = E::f() -> [return: bb1, unwind: bb36];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
PlaceMention(_2);
|
||||
_3 = discriminant(_2);
|
||||
switchInt(move _3) -> [0: bb3, otherwise: bb2];
|
||||
switchInt(move _3) -> [0: bb4, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
goto -> bb21;
|
||||
goto -> bb22;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
falseEdge -> [real: bb5, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb6, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageLive(_4);
|
||||
_4 = always_true() -> [return: bb6, unwind: bb34];
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
switchInt(move _4) -> [0: bb8, otherwise: bb7];
|
||||
StorageLive(_4);
|
||||
_4 = always_true() -> [return: bb7, unwind: bb36];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
switchInt(move _4) -> [0: bb9, otherwise: bb8];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageLive(_5);
|
||||
StorageLive(_6);
|
||||
StorageLive(_7);
|
||||
_7 = Droppy(const 0_u8);
|
||||
_6 = (_7.0: u8);
|
||||
_5 = Gt(move _6, const 0_u8);
|
||||
switchInt(move _5) -> [0: bb10, otherwise: bb9];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
goto -> bb14;
|
||||
switchInt(move _5) -> [0: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
drop(_7) -> [return: bb11, unwind: bb34];
|
||||
goto -> bb15;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
goto -> bb12;
|
||||
drop(_7) -> [return: bb12, unwind: bb36];
|
||||
}
|
||||
|
||||
bb11: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb18;
|
||||
goto -> bb13;
|
||||
}
|
||||
|
||||
bb12: {
|
||||
drop(_7) -> [return: bb13, unwind: bb34];
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb19;
|
||||
}
|
||||
|
||||
bb13: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb14;
|
||||
drop(_7) -> [return: bb14, unwind: bb36];
|
||||
}
|
||||
|
||||
bb14: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb15;
|
||||
}
|
||||
|
||||
bb15: {
|
||||
StorageLive(_8);
|
||||
StorageLive(_9);
|
||||
StorageLive(_10);
|
||||
_10 = Droppy(const 1_u8);
|
||||
_9 = (_10.0: u8);
|
||||
_8 = Gt(move _9, const 1_u8);
|
||||
switchInt(move _8) -> [0: bb16, otherwise: bb15];
|
||||
}
|
||||
|
||||
bb15: {
|
||||
drop(_10) -> [return: bb17, unwind: bb34];
|
||||
switchInt(move _8) -> [0: bb17, otherwise: bb16];
|
||||
}
|
||||
|
||||
bb16: {
|
||||
goto -> bb19;
|
||||
drop(_10) -> [return: bb18, unwind: bb36];
|
||||
}
|
||||
|
||||
bb17: {
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb18;
|
||||
goto -> bb20;
|
||||
}
|
||||
|
||||
bb18: {
|
||||
_1 = const ();
|
||||
goto -> bb22;
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb19;
|
||||
}
|
||||
|
||||
bb19: {
|
||||
drop(_10) -> [return: bb20, unwind: bb34];
|
||||
_1 = const ();
|
||||
goto -> bb23;
|
||||
}
|
||||
|
||||
bb20: {
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb21;
|
||||
drop(_10) -> [return: bb21, unwind: bb36];
|
||||
}
|
||||
|
||||
bb21: {
|
||||
_1 = const ();
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb22;
|
||||
}
|
||||
|
||||
bb22: {
|
||||
_1 = const ();
|
||||
goto -> bb23;
|
||||
}
|
||||
|
||||
bb23: {
|
||||
StorageDead(_8);
|
||||
StorageDead(_5);
|
||||
StorageDead(_4);
|
||||
StorageDead(_2);
|
||||
StorageDead(_1);
|
||||
StorageLive(_11);
|
||||
_11 = always_true() -> [return: bb23, unwind: bb34];
|
||||
}
|
||||
|
||||
bb23: {
|
||||
switchInt(move _11) -> [0: bb25, otherwise: bb24];
|
||||
_11 = always_true() -> [return: bb24, unwind: bb36];
|
||||
}
|
||||
|
||||
bb24: {
|
||||
goto -> bb32;
|
||||
switchInt(move _11) -> [0: bb26, otherwise: bb25];
|
||||
}
|
||||
|
||||
bb25: {
|
||||
goto -> bb26;
|
||||
goto -> bb34;
|
||||
}
|
||||
|
||||
bb26: {
|
||||
StorageLive(_12);
|
||||
_12 = E::f() -> [return: bb27, unwind: bb34];
|
||||
goto -> bb27;
|
||||
}
|
||||
|
||||
bb27: {
|
||||
PlaceMention(_12);
|
||||
_13 = discriminant(_12);
|
||||
switchInt(move _13) -> [1: bb29, otherwise: bb28];
|
||||
StorageLive(_12);
|
||||
_12 = E::f() -> [return: bb28, unwind: bb36];
|
||||
}
|
||||
|
||||
bb28: {
|
||||
goto -> bb32;
|
||||
PlaceMention(_12);
|
||||
_13 = discriminant(_12);
|
||||
switchInt(move _13) -> [1: bb31, otherwise: bb30];
|
||||
}
|
||||
|
||||
bb29: {
|
||||
falseEdge -> [real: bb31, imaginary: bb28];
|
||||
goto -> bb34;
|
||||
}
|
||||
|
||||
bb30: {
|
||||
goto -> bb28;
|
||||
goto -> bb29;
|
||||
}
|
||||
|
||||
bb31: {
|
||||
_0 = const ();
|
||||
goto -> bb33;
|
||||
falseEdge -> [real: bb33, imaginary: bb29];
|
||||
}
|
||||
|
||||
bb32: {
|
||||
_0 = const ();
|
||||
goto -> bb33;
|
||||
goto -> bb30;
|
||||
}
|
||||
|
||||
bb33: {
|
||||
_0 = const ();
|
||||
goto -> bb35;
|
||||
}
|
||||
|
||||
bb34: {
|
||||
_0 = const ();
|
||||
goto -> bb35;
|
||||
}
|
||||
|
||||
bb35: {
|
||||
StorageDead(_11);
|
||||
StorageDead(_12);
|
||||
return;
|
||||
}
|
||||
|
||||
bb34 (cleanup): {
|
||||
bb36 (cleanup): {
|
||||
resume;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ fn full_tested_match() -> () {
|
|||
_2 = Option::<i32>::Some(const 42_i32);
|
||||
PlaceMention(_2);
|
||||
_4 = discriminant(_2);
|
||||
switchInt(move _4) -> [0: bb5, 1: bb2, otherwise: bb1];
|
||||
switchInt(move _4) -> [0: bb6, 1: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -37,39 +37,43 @@ fn full_tested_match() -> () {
|
|||
}
|
||||
|
||||
bb2: {
|
||||
falseEdge -> [real: bb7, imaginary: bb3];
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
falseEdge -> [real: bb12, imaginary: bb5];
|
||||
falseEdge -> [real: bb8, imaginary: bb4];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
goto -> bb1;
|
||||
falseEdge -> [real: bb13, imaginary: bb6];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_1 = (const 3_i32, const 3_i32);
|
||||
goto -> bb13;
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
goto -> bb1;
|
||||
_1 = (const 3_i32, const 3_i32);
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageLive(_6);
|
||||
_6 = &((_2 as Some).0: i32);
|
||||
_3 = &fake shallow _2;
|
||||
StorageLive(_7);
|
||||
_7 = guard() -> [return: bb8, unwind: bb16];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
switchInt(move _7) -> [0: bb10, otherwise: bb9];
|
||||
_7 = guard() -> [return: bb9, unwind: bb17];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
switchInt(move _7) -> [0: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
StorageDead(_7);
|
||||
FakeRead(ForMatchGuard, _3);
|
||||
FakeRead(ForGuardBinding, _6);
|
||||
|
@ -81,20 +85,20 @@ fn full_tested_match() -> () {
|
|||
StorageDead(_8);
|
||||
StorageDead(_5);
|
||||
StorageDead(_6);
|
||||
goto -> bb13;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
goto -> bb11;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb11: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb3;
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb12: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
goto -> bb4;
|
||||
}
|
||||
|
||||
bb13: {
|
||||
StorageLive(_9);
|
||||
_9 = ((_2 as Some).0: i32);
|
||||
StorageLive(_10);
|
||||
|
@ -102,10 +106,10 @@ fn full_tested_match() -> () {
|
|||
_1 = (const 2_i32, move _10);
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb13;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb13: {
|
||||
bb14: {
|
||||
PlaceMention(_1);
|
||||
StorageDead(_2);
|
||||
StorageDead(_1);
|
||||
|
@ -113,16 +117,16 @@ fn full_tested_match() -> () {
|
|||
return;
|
||||
}
|
||||
|
||||
bb14: {
|
||||
bb15: {
|
||||
FakeRead(ForMatchedPlace(None), _1);
|
||||
unreachable;
|
||||
}
|
||||
|
||||
bb15: {
|
||||
goto -> bb14;
|
||||
bb16: {
|
||||
goto -> bb15;
|
||||
}
|
||||
|
||||
bb16 (cleanup): {
|
||||
bb17 (cleanup): {
|
||||
resume;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ fn full_tested_match2() -> () {
|
|||
_2 = Option::<i32>::Some(const 42_i32);
|
||||
PlaceMention(_2);
|
||||
_4 = discriminant(_2);
|
||||
switchInt(move _4) -> [0: bb5, 1: bb2, otherwise: bb1];
|
||||
switchInt(move _4) -> [0: bb6, 1: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -37,10 +37,14 @@ fn full_tested_match2() -> () {
|
|||
}
|
||||
|
||||
bb2: {
|
||||
falseEdge -> [real: bb7, imaginary: bb5];
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
falseEdge -> [real: bb8, imaginary: bb6];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageLive(_9);
|
||||
_9 = ((_2 as Some).0: i32);
|
||||
StorageLive(_10);
|
||||
|
@ -48,34 +52,34 @@ fn full_tested_match2() -> () {
|
|||
_1 = (const 2_i32, move _10);
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
goto -> bb13;
|
||||
}
|
||||
|
||||
bb4: {
|
||||
goto -> bb1;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
falseEdge -> [real: bb12, imaginary: bb3];
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
goto -> bb1;
|
||||
falseEdge -> [real: bb13, imaginary: bb4];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageLive(_6);
|
||||
_6 = &((_2 as Some).0: i32);
|
||||
_3 = &fake shallow _2;
|
||||
StorageLive(_7);
|
||||
_7 = guard() -> [return: bb8, unwind: bb16];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
switchInt(move _7) -> [0: bb10, otherwise: bb9];
|
||||
_7 = guard() -> [return: bb9, unwind: bb17];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
switchInt(move _7) -> [0: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
StorageDead(_7);
|
||||
FakeRead(ForMatchGuard, _3);
|
||||
FakeRead(ForGuardBinding, _6);
|
||||
|
@ -87,25 +91,25 @@ fn full_tested_match2() -> () {
|
|||
StorageDead(_8);
|
||||
StorageDead(_5);
|
||||
StorageDead(_6);
|
||||
goto -> bb13;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
goto -> bb11;
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb11: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
falseEdge -> [real: bb3, imaginary: bb5];
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb12: {
|
||||
_1 = (const 3_i32, const 3_i32);
|
||||
goto -> bb13;
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
falseEdge -> [real: bb4, imaginary: bb6];
|
||||
}
|
||||
|
||||
bb13: {
|
||||
_1 = (const 3_i32, const 3_i32);
|
||||
goto -> bb14;
|
||||
}
|
||||
|
||||
bb14: {
|
||||
PlaceMention(_1);
|
||||
StorageDead(_2);
|
||||
StorageDead(_1);
|
||||
|
@ -113,16 +117,16 @@ fn full_tested_match2() -> () {
|
|||
return;
|
||||
}
|
||||
|
||||
bb14: {
|
||||
bb15: {
|
||||
FakeRead(ForMatchedPlace(None), _1);
|
||||
unreachable;
|
||||
}
|
||||
|
||||
bb15: {
|
||||
goto -> bb14;
|
||||
bb16: {
|
||||
goto -> bb15;
|
||||
}
|
||||
|
||||
bb16 (cleanup): {
|
||||
bb17 (cleanup): {
|
||||
resume;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,8 +38,8 @@ fn main() -> () {
|
|||
StorageLive(_2);
|
||||
_2 = Option::<i32>::Some(const 1_i32);
|
||||
PlaceMention(_2);
|
||||
_5 = discriminant(_2);
|
||||
switchInt(move _5) -> [1: bb8, otherwise: bb2];
|
||||
_4 = discriminant(_2);
|
||||
switchInt(move _4) -> [1: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -48,15 +48,23 @@ fn main() -> () {
|
|||
}
|
||||
|
||||
bb2: {
|
||||
falseEdge -> [real: bb15, imaginary: bb3];
|
||||
falseEdge -> [real: bb15, imaginary: bb5];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_4 = discriminant(_2);
|
||||
switchInt(move _4) -> [1: bb6, otherwise: bb4];
|
||||
falseEdge -> [real: bb10, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_5 = discriminant(_2);
|
||||
switchInt(move _5) -> [1: bb7, otherwise: bb6];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageLive(_14);
|
||||
_14 = _2;
|
||||
_1 = const 4_i32;
|
||||
|
@ -64,24 +72,16 @@ fn main() -> () {
|
|||
goto -> bb21;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
falseEdge -> [real: bb16, imaginary: bb4];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
goto -> bb4;
|
||||
falseEdge -> [real: bb16, imaginary: bb6];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
falseEdge -> [real: bb10, imaginary: bb2];
|
||||
goto -> bb6;
|
||||
}
|
||||
|
||||
bb9: {
|
||||
goto -> bb2;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
|
@ -115,7 +115,7 @@ fn main() -> () {
|
|||
bb14: {
|
||||
StorageDead(_8);
|
||||
StorageDead(_7);
|
||||
falseEdge -> [real: bb9, imaginary: bb2];
|
||||
falseEdge -> [real: bb4, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb15: {
|
||||
|
@ -161,7 +161,7 @@ fn main() -> () {
|
|||
StorageDead(_13);
|
||||
StorageDead(_12);
|
||||
StorageDead(_11);
|
||||
falseEdge -> [real: bb7, imaginary: bb4];
|
||||
falseEdge -> [real: bb8, imaginary: bb6];
|
||||
}
|
||||
|
||||
bb21: {
|
||||
|
|
|
@ -6,7 +6,7 @@ fn match_bool(_1: bool) -> usize {
|
|||
|
||||
bb0: {
|
||||
PlaceMention(_1);
|
||||
switchInt(_1) -> [0: bb2, otherwise: bb4];
|
||||
switchInt(_1) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -20,17 +20,17 @@ fn match_bool(_1: bool) -> usize {
|
|||
}
|
||||
|
||||
bb3: {
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb6, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
bb4: {
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
_0 = const 10_usize;
|
||||
goto -> bb7;
|
||||
|
|
|
@ -8,7 +8,7 @@ fn match_enum(_1: E1) -> bool {
|
|||
bb0: {
|
||||
PlaceMention(_1);
|
||||
_2 = discriminant(_1);
|
||||
switchInt(move _2) -> [0: bb3, 1: bb5, 2: bb7, otherwise: bb2];
|
||||
switchInt(move _2) -> [0: bb4, 1: bb6, 2: bb8, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -21,40 +21,44 @@ fn match_enum(_1: E1) -> bool {
|
|||
}
|
||||
|
||||
bb3: {
|
||||
goto -> bb9;
|
||||
goto -> bb2;
|
||||
}
|
||||
|
||||
bb4: {
|
||||
goto -> bb2;
|
||||
goto -> bb10;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
goto -> bb9;
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
goto -> bb2;
|
||||
goto -> bb10;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_0 = const false;
|
||||
goto -> bb11;
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb8: {
|
||||
goto -> bb2;
|
||||
_0 = const false;
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb9: {
|
||||
falseEdge -> [real: bb10, imaginary: bb7];
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb10: {
|
||||
_0 = const true;
|
||||
goto -> bb11;
|
||||
falseEdge -> [real: bb11, imaginary: bb8];
|
||||
}
|
||||
|
||||
bb11: {
|
||||
_0 = const true;
|
||||
goto -> bb12;
|
||||
}
|
||||
|
||||
bb12: {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,52 +23,52 @@ fn constant_eq(_1: &str, _2: bool) -> u32 {
|
|||
StorageDead(_5);
|
||||
StorageDead(_4);
|
||||
PlaceMention(_3);
|
||||
_9 = <str as PartialEq>::eq((_3.0: &str), const "a") -> [return: bb11, unwind: bb19];
|
||||
_9 = <str as PartialEq>::eq((_3.0: &str), const "a") -> [return: bb9, unwind: bb19];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
switchInt((_3.1: bool)) -> [0: bb2, otherwise: bb3];
|
||||
switchInt((_3.1: bool)) -> [0: bb10, otherwise: bb11];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
falseEdge -> [real: bb12, imaginary: bb5];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb4];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb16, imaginary: bb1];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_8 = <str as PartialEq>::eq((_3.0: &str), const "b") -> [return: bb8, unwind: bb19];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb7];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
falseEdge -> [real: bb15, imaginary: bb3];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
switchInt(move _8) -> [0: bb1, otherwise: bb6];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
switchInt(move _9) -> [0: bb5, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
_0 = const 5_u32;
|
||||
goto -> bb18;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
falseEdge -> [real: bb17, imaginary: bb2];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
falseEdge -> [real: bb12, imaginary: bb7];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb6];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
falseEdge -> [real: bb16, imaginary: bb1];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_8 = <str as PartialEq>::eq((_3.0: &str), const "b") -> [return: bb10, unwind: bb19];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb9];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
falseEdge -> [real: bb15, imaginary: bb5];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
switchInt(move _8) -> [0: bb1, otherwise: bb8];
|
||||
}
|
||||
|
||||
bb11: {
|
||||
switchInt(move _9) -> [0: bb7, otherwise: bb4];
|
||||
falseEdge -> [real: bb17, imaginary: bb10];
|
||||
}
|
||||
|
||||
bb12: {
|
||||
|
@ -89,7 +89,7 @@ fn constant_eq(_1: &str, _2: bool) -> u32 {
|
|||
|
||||
bb14: {
|
||||
StorageDead(_10);
|
||||
falseEdge -> [real: bb5, imaginary: bb7];
|
||||
falseEdge -> [real: bb3, imaginary: bb5];
|
||||
}
|
||||
|
||||
bb15: {
|
||||
|
|
|
@ -22,59 +22,55 @@
|
|||
|
||||
bb1: {
|
||||
StorageDead(_3);
|
||||
_7 = Len((*_2));
|
||||
_8 = const 4_usize;
|
||||
_9 = Ge(move _7, move _8);
|
||||
- switchInt(move _9) -> [0: bb2, otherwise: bb7];
|
||||
+ switchInt(move _9) -> [0: bb2, otherwise: bb6];
|
||||
_4 = Len((*_2));
|
||||
_5 = const 4_usize;
|
||||
_6 = Ge(move _4, move _5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_4 = Len((*_2));
|
||||
_5 = const 3_usize;
|
||||
_6 = Ge(move _4, move _5);
|
||||
- switchInt(move _6) -> [0: bb3, otherwise: bb4];
|
||||
+ switchInt(move _6) -> [0: bb10, otherwise: bb3];
|
||||
_7 = Len((*_2));
|
||||
_8 = const 3_usize;
|
||||
_9 = Ge(move _7, move _8);
|
||||
- switchInt(move _9) -> [0: bb7, otherwise: bb8];
|
||||
+ switchInt(move _9) -> [0: bb10, otherwise: bb7];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
- _0 = const false;
|
||||
- goto -> bb14;
|
||||
+ switchInt((*_2)[0 of 3]) -> [47: bb4, otherwise: bb10];
|
||||
switchInt((*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
- switchInt((*_2)[0 of 3]) -> [47: bb5, otherwise: bb3];
|
||||
+ switchInt((*_2)[1 of 3]) -> [47: bb5, otherwise: bb10];
|
||||
switchInt((*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
- switchInt((*_2)[1 of 3]) -> [47: bb6, otherwise: bb3];
|
||||
+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10];
|
||||
switchInt((*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb3];
|
||||
+ switchInt((*_2)[0 of 4]) -> [47: bb7, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
- switchInt((*_2)[0 of 4]) -> [47: bb8, otherwise: bb2];
|
||||
+ switchInt((*_2)[1 of 4]) -> [47: bb8, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
- switchInt((*_2)[1 of 4]) -> [47: bb9, otherwise: bb2];
|
||||
+ switchInt((*_2)[2 of 4]) -> [47: bb9, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
- switchInt((*_2)[2 of 4]) -> [47: bb10, otherwise: bb2];
|
||||
- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
|
||||
+ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
- _0 = const false;
|
||||
- goto -> bb14;
|
||||
+ switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
- switchInt((*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
|
||||
+ switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
- switchInt((*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
|
||||
+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
|
||||
- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb7];
|
||||
- }
|
||||
-
|
||||
- bb11: {
|
||||
|
|
|
@ -22,59 +22,55 @@
|
|||
|
||||
bb1: {
|
||||
StorageDead(_3);
|
||||
_7 = Len((*_2));
|
||||
_8 = const 4_usize;
|
||||
_9 = Ge(move _7, move _8);
|
||||
- switchInt(move _9) -> [0: bb2, otherwise: bb7];
|
||||
+ switchInt(move _9) -> [0: bb2, otherwise: bb6];
|
||||
_4 = Len((*_2));
|
||||
_5 = const 4_usize;
|
||||
_6 = Ge(move _4, move _5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_4 = Len((*_2));
|
||||
_5 = const 3_usize;
|
||||
_6 = Ge(move _4, move _5);
|
||||
- switchInt(move _6) -> [0: bb3, otherwise: bb4];
|
||||
+ switchInt(move _6) -> [0: bb10, otherwise: bb3];
|
||||
_7 = Len((*_2));
|
||||
_8 = const 3_usize;
|
||||
_9 = Ge(move _7, move _8);
|
||||
- switchInt(move _9) -> [0: bb7, otherwise: bb8];
|
||||
+ switchInt(move _9) -> [0: bb10, otherwise: bb7];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
- _0 = const false;
|
||||
- goto -> bb14;
|
||||
+ switchInt((*_2)[0 of 3]) -> [47: bb4, otherwise: bb10];
|
||||
switchInt((*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
- switchInt((*_2)[0 of 3]) -> [47: bb5, otherwise: bb3];
|
||||
+ switchInt((*_2)[1 of 3]) -> [47: bb5, otherwise: bb10];
|
||||
switchInt((*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
- switchInt((*_2)[1 of 3]) -> [47: bb6, otherwise: bb3];
|
||||
+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10];
|
||||
switchInt((*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb3];
|
||||
+ switchInt((*_2)[0 of 4]) -> [47: bb7, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
- switchInt((*_2)[0 of 4]) -> [47: bb8, otherwise: bb2];
|
||||
+ switchInt((*_2)[1 of 4]) -> [47: bb8, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
- switchInt((*_2)[1 of 4]) -> [47: bb9, otherwise: bb2];
|
||||
+ switchInt((*_2)[2 of 4]) -> [47: bb9, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
- switchInt((*_2)[2 of 4]) -> [47: bb10, otherwise: bb2];
|
||||
- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
|
||||
+ switchInt((*_2)[3 of 4]) -> [47: bb10, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb7: {
|
||||
- _0 = const false;
|
||||
- goto -> bb14;
|
||||
+ switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
- switchInt((*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
|
||||
+ switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
- switchInt((*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
|
||||
+ switchInt((*_2)[2 of 3]) -> [47: bb11, 33: bb11, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
- switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
|
||||
- switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb13, otherwise: bb7];
|
||||
- }
|
||||
-
|
||||
- bb11: {
|
||||
|
|
|
@ -32,25 +32,33 @@
|
|||
|
||||
bb0: {
|
||||
PlaceMention(_2);
|
||||
- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb1];
|
||||
- switchInt((_2.0: bool)) -> [0: bb2, otherwise: bb1];
|
||||
+ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- switchInt((_2.1: bool)) -> [0: bb5, otherwise: bb2];
|
||||
- switchInt((_2.1: bool)) -> [0: bb4, otherwise: bb3];
|
||||
+ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
- switchInt((_2.0: bool)) -> [0: bb4, otherwise: bb3];
|
||||
- falseEdge -> [real: bb8, imaginary: bb1];
|
||||
+ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
- falseEdge -> [real: bb20, imaginary: bb4];
|
||||
- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5];
|
||||
- }
|
||||
-
|
||||
- bb4: {
|
||||
- falseEdge -> [real: bb13, imaginary: bb3];
|
||||
- }
|
||||
-
|
||||
- bb5: {
|
||||
- falseEdge -> [real: bb20, imaginary: bb6];
|
||||
- }
|
||||
-
|
||||
- bb6: {
|
||||
StorageLive(_15);
|
||||
_15 = (_2.1: bool);
|
||||
StorageLive(_16);
|
||||
|
@ -59,14 +67,6 @@
|
|||
+ goto -> bb16;
|
||||
}
|
||||
|
||||
- bb5: {
|
||||
- falseEdge -> [real: bb13, imaginary: bb2];
|
||||
- }
|
||||
-
|
||||
- bb6: {
|
||||
- falseEdge -> [real: bb8, imaginary: bb1];
|
||||
- }
|
||||
-
|
||||
- bb7: {
|
||||
+ bb4: {
|
||||
_0 = const 1_i32;
|
||||
|
@ -184,7 +184,7 @@
|
|||
StorageDead(_12);
|
||||
StorageDead(_8);
|
||||
StorageDead(_6);
|
||||
- falseEdge -> [real: bb2, imaginary: bb2];
|
||||
- falseEdge -> [real: bb3, imaginary: bb3];
|
||||
+ goto -> bb2;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,25 +32,33 @@
|
|||
|
||||
bb0: {
|
||||
PlaceMention(_2);
|
||||
- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb1];
|
||||
- switchInt((_2.0: bool)) -> [0: bb2, otherwise: bb1];
|
||||
+ switchInt((_2.0: bool)) -> [0: bb5, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- switchInt((_2.1: bool)) -> [0: bb5, otherwise: bb2];
|
||||
- switchInt((_2.1: bool)) -> [0: bb4, otherwise: bb3];
|
||||
+ switchInt((_2.1: bool)) -> [0: bb10, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
- switchInt((_2.0: bool)) -> [0: bb4, otherwise: bb3];
|
||||
- falseEdge -> [real: bb8, imaginary: bb1];
|
||||
+ switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb17];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
- falseEdge -> [real: bb20, imaginary: bb4];
|
||||
- switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5];
|
||||
- }
|
||||
-
|
||||
- bb4: {
|
||||
- falseEdge -> [real: bb13, imaginary: bb3];
|
||||
- }
|
||||
-
|
||||
- bb5: {
|
||||
- falseEdge -> [real: bb20, imaginary: bb6];
|
||||
- }
|
||||
-
|
||||
- bb6: {
|
||||
StorageLive(_15);
|
||||
_15 = (_2.1: bool);
|
||||
StorageLive(_16);
|
||||
|
@ -59,14 +67,6 @@
|
|||
+ goto -> bb16;
|
||||
}
|
||||
|
||||
- bb5: {
|
||||
- falseEdge -> [real: bb13, imaginary: bb2];
|
||||
- }
|
||||
-
|
||||
- bb6: {
|
||||
- falseEdge -> [real: bb8, imaginary: bb1];
|
||||
- }
|
||||
-
|
||||
- bb7: {
|
||||
+ bb4: {
|
||||
_0 = const 1_i32;
|
||||
|
@ -184,7 +184,7 @@
|
|||
StorageDead(_12);
|
||||
StorageDead(_8);
|
||||
StorageDead(_6);
|
||||
- falseEdge -> [real: bb2, imaginary: bb2];
|
||||
- falseEdge -> [real: bb3, imaginary: bb3];
|
||||
+ goto -> bb2;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ fn shortcut_second_or() -> () {
|
|||
_1 = (move _2, const 0_i32);
|
||||
StorageDead(_2);
|
||||
PlaceMention(_1);
|
||||
switchInt(((_1.0: (i32, i32)).0: i32)) -> [0: bb4, otherwise: bb2];
|
||||
switchInt(((_1.0: (i32, i32)).0: i32)) -> [0: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
|
@ -27,15 +27,15 @@ fn shortcut_second_or() -> () {
|
|||
}
|
||||
|
||||
bb2: {
|
||||
switchInt(((_1.0: (i32, i32)).1: i32)) -> [1: bb3, otherwise: bb1];
|
||||
switchInt(((_1.0: (i32, i32)).1: i32)) -> [1: bb4, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb3: {
|
||||
switchInt((_1.1: i32)) -> [2: bb7, 3: bb8, otherwise: bb1];
|
||||
switchInt((_1.1: i32)) -> [2: bb5, 3: bb6, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
switchInt((_1.1: i32)) -> [2: bb5, 3: bb6, otherwise: bb1];
|
||||
switchInt((_1.1: i32)) -> [2: bb7, 3: bb8, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
|
|
Loading…
Reference in New Issue