This commit is contained in:
Simon Vandel Sillesen 2020-09-19 23:50:51 +02:00
parent 04834139c4
commit 0e06456ecb
6 changed files with 265 additions and 349 deletions

View File

@ -1,88 +1,76 @@
- // MIR for `opt1` before EarlyOtherwiseBranch
+ // MIR for `opt1` after EarlyOtherwiseBranch
fn opt1(_1: std::option::Option<usize>, _2: std::option::Option<usize>) -> usize {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:5:9: 5:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:5:27: 5:28
let mut _0: usize; // return place in scope 0 at $DIR/early_otherwise_branch.rs:5:47: 5:52
let mut _3: (std::option::Option<usize>, std::option::Option<usize>); // in scope 0 at $DIR/early_otherwise_branch.rs:6:11: 6:16
let mut _4: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch.rs:6:12: 6:13
let mut _5: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch.rs:6:14: 6:15
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
let _8: usize; // in scope 0 at $DIR/early_otherwise_branch.rs:7:15: 7:16
let _9: usize; // in scope 0 at $DIR/early_otherwise_branch.rs:7:24: 7:25
+ let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
+ let mut _11: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
fn opt1(_1: Option<u32>, _2: Option<u32>) -> u32 {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:3:9: 3:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:3:25: 3:26
let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch.rs:3:44: 3:47
let mut _3: (std::option::Option<u32>, std::option::Option<u32>); // in scope 0 at $DIR/early_otherwise_branch.rs:4:11: 4:17
let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch.rs:4:12: 4:13
let mut _5: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch.rs:4:15: 4:16
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
let _8: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:5:15: 5:16
let _9: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:5:24: 5:25
+ let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
+ let mut _11: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
scope 1 {
debug a => _8; // in scope 1 at $DIR/early_otherwise_branch.rs:7:15: 7:16
debug b => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:7:24: 7:25
debug a => _8; // in scope 1 at $DIR/early_otherwise_branch.rs:5:15: 5:16
debug b => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:5:24: 5:25
}
bb0: {
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:6:11: 6:16
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:6:12: 6:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:6:12: 6:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:6:14: 6:15
_5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:6:14: 6:15
(_3.0: std::option::Option<usize>) = move _4; // scope 0 at $DIR/early_otherwise_branch.rs:6:11: 6:16
(_3.1: std::option::Option<usize>) = move _5; // scope 0 at $DIR/early_otherwise_branch.rs:6:11: 6:16
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:6:15: 6:16
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:6:15: 6:16
_7 = discriminant((_3.0: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
- switchInt(move _7) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ _10 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ _11 = Ne(_10, _7); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
+ switchInt(move _11) -> [false: bb6, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:7:10: 7:17
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:4:11: 4:17
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:4:12: 4:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:4:12: 4:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:4:15: 4:16
_5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:4:15: 4:16
(_3.0: std::option::Option<u32>) = move _4; // scope 0 at $DIR/early_otherwise_branch.rs:4:11: 4:17
(_3.1: std::option::Option<u32>) = move _5; // scope 0 at $DIR/early_otherwise_branch.rs:4:11: 4:17
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:4:16: 4:17
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:4:16: 4:17
_7 = discriminant((_3.0: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
- switchInt(move _7) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ _10 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ _11 = Ne(_10, _7); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
+ switchInt(move _11) -> [false: bb6, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:5:10: 5:17
}
bb1: {
_0 = const 1_usize; // scope 0 at $DIR/early_otherwise_branch.rs:8:14: 8:15
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000001))
// mir::Constant
// + span: $DIR/early_otherwise_branch.rs:8:14: 8:15
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:6:5: 9:6
_0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch.rs:6:14: 6:15
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:4:5: 7:6
}
bb2: {
_6 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
switchInt(move _6) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
_6 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
switchInt(move _6) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
}
bb3: {
StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch.rs:7:15: 7:16
_8 = (((_3.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch.rs:7:15: 7:16
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:7:24: 7:25
_9 = (((_3.1: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch.rs:7:24: 7:25
_0 = const 0_usize; // scope 1 at $DIR/early_otherwise_branch.rs:7:31: 7:32
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch.rs:7:31: 7:32
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:7:31: 7:32
StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch.rs:7:31: 7:32
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:6:5: 9:6
StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch.rs:5:15: 5:16
_8 = (((_3.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:5:15: 5:16
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:5:24: 5:25
_9 = (((_3.1: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:5:24: 5:25
_0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch.rs:5:31: 5:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:5:31: 5:32
StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch.rs:5:31: 5:32
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch.rs:4:5: 7:6
}
bb4: {
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:10:1: 10:2
return; // scope 0 at $DIR/early_otherwise_branch.rs:10:2: 10:2
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:8:1: 8:2
return; // scope 0 at $DIR/early_otherwise_branch.rs:8:2: 8:2
+ }
+
+ bb5 (cleanup): {
+ resume; // scope 0 at $DIR/early_otherwise_branch.rs:5:1: 10:2
+ resume; // scope 0 at $DIR/early_otherwise_branch.rs:3:1: 8:2
+ }
+
+ bb6: {
+ switchInt(_7) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:7:19: 7:26
+ switchInt(_7) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch.rs:5:19: 5:26
}
}

View File

@ -1,105 +1,87 @@
- // MIR for `opt2` before EarlyOtherwiseBranch
+ // MIR for `opt2` after EarlyOtherwiseBranch
fn opt2(_1: std::option::Option<usize>, _2: std::option::Option<usize>) -> usize {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:13:9: 13:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:13:27: 13:28
let mut _0: usize; // return place in scope 0 at $DIR/early_otherwise_branch.rs:13:47: 13:52
let mut _3: (std::option::Option<usize>, std::option::Option<usize>); // in scope 0 at $DIR/early_otherwise_branch.rs:14:11: 14:16
let mut _4: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch.rs:14:12: 14:13
let mut _5: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch.rs:14:14: 14:15
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:15:19: 15:26
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
let _9: usize; // in scope 0 at $DIR/early_otherwise_branch.rs:15:15: 15:16
let _10: usize; // in scope 0 at $DIR/early_otherwise_branch.rs:15:24: 15:25
+ let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
+ let mut _12: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
fn opt2(_1: Option<u32>, _2: Option<u32>) -> u32 {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch.rs:11:9: 11:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch.rs:11:25: 11:26
let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch.rs:11:44: 11:47
let mut _3: (std::option::Option<u32>, std::option::Option<u32>); // in scope 0 at $DIR/early_otherwise_branch.rs:12:11: 12:17
let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch.rs:12:12: 12:13
let mut _5: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch.rs:12:15: 12:16
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:13:19: 13:26
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
let _9: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:13:15: 13:16
let _10: u32; // in scope 0 at $DIR/early_otherwise_branch.rs:13:24: 13:25
+ let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
+ let mut _12: bool; // in scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
scope 1 {
debug a => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:15:15: 15:16
debug b => _10; // in scope 1 at $DIR/early_otherwise_branch.rs:15:24: 15:25
debug a => _9; // in scope 1 at $DIR/early_otherwise_branch.rs:13:15: 13:16
debug b => _10; // in scope 1 at $DIR/early_otherwise_branch.rs:13:24: 13:25
}
bb0: {
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:14:11: 14:16
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:14:12: 14:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:14:12: 14:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:14:14: 14:15
_5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:14:14: 14:15
(_3.0: std::option::Option<usize>) = move _4; // scope 0 at $DIR/early_otherwise_branch.rs:14:11: 14:16
(_3.1: std::option::Option<usize>) = move _5; // scope 0 at $DIR/early_otherwise_branch.rs:14:11: 14:16
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:14:15: 14:16
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:14:15: 14:16
_8 = discriminant((_3.0: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
- switchInt(move _8) -> [0_isize: bb1, 1_isize: bb3, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ _11 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ _12 = Ne(_11, _8); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
+ switchInt(move _12) -> [false: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:15:10: 15:17
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch.rs:12:11: 12:17
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch.rs:12:12: 12:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch.rs:12:12: 12:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch.rs:12:15: 12:16
_5 = _2; // scope 0 at $DIR/early_otherwise_branch.rs:12:15: 12:16
(_3.0: std::option::Option<u32>) = move _4; // scope 0 at $DIR/early_otherwise_branch.rs:12:11: 12:17
(_3.1: std::option::Option<u32>) = move _5; // scope 0 at $DIR/early_otherwise_branch.rs:12:11: 12:17
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch.rs:12:16: 12:17
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch.rs:12:16: 12:17
_8 = discriminant((_3.0: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
- switchInt(move _8) -> [0_isize: bb1, 1_isize: bb3, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ _11 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ _12 = Ne(_11, _8); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
+ switchInt(move _12) -> [false: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:13:10: 13:17
}
bb1: {
_6 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
switchInt(move _6) -> [0_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
_6 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
switchInt(move _6) -> [0_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
}
bb2: {
_0 = const 1_usize; // scope 0 at $DIR/early_otherwise_branch.rs:17:14: 17:15
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000001))
// mir::Constant
// + span: $DIR/early_otherwise_branch.rs:17:14: 17:15
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:14:5: 18:6
_0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch.rs:15:14: 15:15
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:12:5: 16:6
}
bb3: {
_7 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch.rs:15:19: 15:26
switchInt(move _7) -> [1_isize: bb4, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:15:19: 15:26
_7 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch.rs:13:19: 13:26
switchInt(move _7) -> [1_isize: bb4, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:13:19: 13:26
}
bb4: {
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:15:15: 15:16
_9 = (((_3.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch.rs:15:15: 15:16
StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:15:24: 15:25
_10 = (((_3.1: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch.rs:15:24: 15:25
_0 = const 0_usize; // scope 1 at $DIR/early_otherwise_branch.rs:15:31: 15:32
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch.rs:15:31: 15:32
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:15:31: 15:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:15:31: 15:32
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:14:5: 18:6
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch.rs:13:15: 13:16
_9 = (((_3.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:13:15: 13:16
StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch.rs:13:24: 13:25
_10 = (((_3.1: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch.rs:13:24: 13:25
_0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch.rs:13:31: 13:32
StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch.rs:13:31: 13:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch.rs:13:31: 13:32
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:12:5: 16:6
}
bb5: {
_0 = const 0_usize; // scope 0 at $DIR/early_otherwise_branch.rs:16:25: 16:26
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch.rs:16:25: 16:26
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:14:5: 18:6
_0 = const 0_u32; // scope 0 at $DIR/early_otherwise_branch.rs:14:25: 14:26
goto -> bb6; // scope 0 at $DIR/early_otherwise_branch.rs:12:5: 16:6
}
bb6: {
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:19:1: 19:2
return; // scope 0 at $DIR/early_otherwise_branch.rs:19:2: 19:2
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch.rs:17:1: 17:2
return; // scope 0 at $DIR/early_otherwise_branch.rs:17:2: 17:2
+ }
+
+ bb7 (cleanup): {
+ resume; // scope 0 at $DIR/early_otherwise_branch.rs:13:1: 19:2
+ resume; // scope 0 at $DIR/early_otherwise_branch.rs:11:1: 17:2
+ }
+
+ bb8: {
+ switchInt(_8) -> [0_isize: bb5, 1_isize: bb4, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:16:16: 16:20
+ switchInt(_8) -> [0_isize: bb5, 1_isize: bb4, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch.rs:14:16: 14:20
}
}

View File

@ -1,117 +1,105 @@
- // MIR for `opt1` before EarlyOtherwiseBranch
+ // MIR for `opt1` after EarlyOtherwiseBranch
fn opt1(_1: std::option::Option<usize>, _2: std::option::Option<usize>, _3: std::option::Option<usize>) -> usize {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:9: 5:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:27: 5:28
debug z => _3; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:44: 5:45
let mut _0: usize; // return place in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:64: 5:69
let mut _4: (std::option::Option<usize>, std::option::Option<usize>, std::option::Option<usize>); // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:11: 6:18
let mut _5: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:12: 6:13
let mut _6: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:14: 6:15
let mut _7: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:16: 6:17
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
let _11: usize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:15: 7:16
let _12: usize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:24: 7:25
let _13: usize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:33: 7:34
+ let mut _14: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ let mut _15: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ let mut _16: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
+ let mut _17: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
fn opt1(_1: Option<u32>, _2: Option<u32>, _3: Option<u32>) -> u32 {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:4:9: 4:10
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:4:25: 4:26
debug z => _3; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:4:41: 4:42
let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:4:60: 4:63
let mut _4: (std::option::Option<u32>, std::option::Option<u32>, std::option::Option<u32>); // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:11: 5:20
let mut _5: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:12: 5:13
let mut _6: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:15: 5:16
let mut _7: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:18: 5:19
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
let _11: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:15: 6:16
let _12: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:24: 6:25
let _13: u32; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:33: 6:34
+ let mut _14: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ let mut _15: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ let mut _16: isize; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
+ let mut _17: bool; // in scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
scope 1 {
debug a => _11; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:15: 7:16
debug b => _12; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:24: 7:25
debug c => _13; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:33: 7:34
debug a => _11; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:15: 6:16
debug b => _12; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:24: 6:25
debug c => _13; // in scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:33: 6:34
}
bb0: {
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:11: 6:18
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:12: 6:13
_5 = _1; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:12: 6:13
StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:14: 6:15
_6 = _2; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:14: 6:15
StorageLive(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:16: 6:17
_7 = _3; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:16: 6:17
(_4.0: std::option::Option<usize>) = move _5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:11: 6:18
(_4.1: std::option::Option<usize>) = move _6; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:11: 6:18
(_4.2: std::option::Option<usize>) = move _7; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:11: 6:18
StorageDead(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:17: 6:18
StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:17: 6:18
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:17: 6:18
_10 = discriminant((_4.0: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
- switchInt(move _10) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ StorageLive(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ _14 = discriminant((_4.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ StorageLive(_15); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ _15 = Ne(_14, _10); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ StorageDead(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
+ switchInt(move _15) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:10: 7:17
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:11: 5:20
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:12: 5:13
_5 = _1; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:12: 5:13
StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:15: 5:16
_6 = _2; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:15: 5:16
StorageLive(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:18: 5:19
_7 = _3; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:18: 5:19
(_4.0: std::option::Option<u32>) = move _5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:11: 5:20
(_4.1: std::option::Option<u32>) = move _6; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:11: 5:20
(_4.2: std::option::Option<u32>) = move _7; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:11: 5:20
StorageDead(_7); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:19: 5:20
StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:19: 5:20
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:19: 5:20
_10 = discriminant((_4.0: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
- switchInt(move _10) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ StorageLive(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ _14 = discriminant((_4.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ StorageLive(_15); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ _15 = Ne(_14, _10); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ StorageDead(_14); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
+ switchInt(move _15) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:10: 6:17
}
bb1: {
_0 = const 1_usize; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:8:14: 8:15
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000001))
// mir::Constant
// + span: $DIR/early_otherwise_branch_3_element_tuple.rs:8:14: 8:15
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:5: 9:6
_0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:14: 7:15
goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:5: 8:6
}
bb2: {
_9 = discriminant((_4.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
- switchInt(move _9) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ StorageLive(_16); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ _16 = discriminant((_4.2: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ _17 = Ne(_16, _9); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ StorageDead(_16); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ switchInt(move _17) -> [false: bb8, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
_9 = discriminant((_4.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
- switchInt(move _9) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ StorageLive(_16); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ _16 = discriminant((_4.2: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ _17 = Ne(_16, _9); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ StorageDead(_16); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ switchInt(move _17) -> [false: bb8, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
}
bb3: {
_8 = discriminant((_4.2: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
switchInt(move _8) -> [1_isize: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
_8 = discriminant((_4.2: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
switchInt(move _8) -> [1_isize: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
}
bb4: {
StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:15: 7:16
_11 = (((_4.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:15: 7:16
StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:24: 7:25
_12 = (((_4.1: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:24: 7:25
StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:33: 7:34
_13 = (((_4.2: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:33: 7:34
_0 = const 0_usize; // scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:40: 7:41
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch_3_element_tuple.rs:7:40: 7:41
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:40: 7:41
StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:40: 7:41
StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:40: 7:41
goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:5: 9:6
StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:15: 6:16
_11 = (((_4.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:15: 6:16
StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:24: 6:25
_12 = (((_4.1: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:24: 6:25
StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:33: 6:34
_13 = (((_4.2: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:33: 6:34
_0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:40: 6:41
StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:40: 6:41
StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:40: 6:41
StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:40: 6:41
goto -> bb5; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:5: 8:6
}
bb5: {
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:10:1: 10:2
return; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:10:2: 10:2
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:9:1: 9:2
return; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:9:2: 9:2
+ }
+
+ bb6 (cleanup): {
+ resume; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:5:1: 10:2
+ resume; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:4:1: 9:2
+ }
+
+ bb7: {
+ switchInt(_10) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:19: 7:26
+ switchInt(_10) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:19: 6:26
+ }
+
+ bb8: {
+ switchInt(_9) -> [1_isize: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:7:28: 7:35
+ switchInt(_9) -> [1_isize: bb4, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_3_element_tuple.rs:6:28: 6:35
}
}

View File

@ -84,12 +84,6 @@
bb2: {
StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:25: 24:27
((_0 as Err).0: ()) = const (); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:28
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/early_otherwise_branch_68867.rs:24:21: 24:28
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:28
StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:27: 24:28
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:6: 25:7

View File

@ -1,114 +1,90 @@
- // MIR for `noopt1` before EarlyOtherwiseBranch
+ // MIR for `noopt1` after EarlyOtherwiseBranch
fn noopt1(_1: std::option::Option<usize>, _2: std::option::Option<usize>) -> usize {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:11: 8:12
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:29: 8:30
let mut _0: usize; // return place in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:49: 8:54
let mut _3: (std::option::Option<usize>, std::option::Option<usize>); // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:11: 9:16
let mut _4: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:12: 9:13
let mut _5: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:14: 9:15
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:16: 12:23
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:19: 10:26
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:10: 10:17
let _9: usize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
let _10: usize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:24: 10:25
let _11: usize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:15: 11:16
let _12: usize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:21: 12:22
fn noopt1(_1: Option<u32>, _2: Option<u32>) -> u32 {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:7:11: 7:12
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:7:27: 7:28
let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_noopt.rs:7:46: 7:49
let mut _3: (std::option::Option<u32>, std::option::Option<u32>); // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:11: 8:17
let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:12: 8:13
let mut _5: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:15: 8:16
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:16: 11:23
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:19: 9:26
let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:10: 9:17
let _9: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
let _10: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:24: 9:25
let _11: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
let _12: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:21: 11:22
scope 1 {
debug a => _9; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
debug b => _10; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:10:24: 10:25
debug a => _9; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
debug b => _10; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:9:24: 9:25
}
scope 2 {
debug a => _11; // in scope 2 at $DIR/early_otherwise_branch_noopt.rs:11:15: 11:16
debug a => _11; // in scope 2 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
}
scope 3 {
debug b => _12; // in scope 3 at $DIR/early_otherwise_branch_noopt.rs:12:21: 12:22
debug b => _12; // in scope 3 at $DIR/early_otherwise_branch_noopt.rs:11:21: 11:22
}
bb0: {
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:11: 9:16
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:12: 9:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:12: 9:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:14: 9:15
_5 = _2; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:14: 9:15
(_3.0: std::option::Option<usize>) = move _4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:11: 9:16
(_3.1: std::option::Option<usize>) = move _5; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:11: 9:16
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
_8 = discriminant((_3.0: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:10: 10:17
switchInt(move _8) -> [0_isize: bb1, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:10: 10:17
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:11: 8:17
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:12: 8:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:12: 8:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:15: 8:16
_5 = _2; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:15: 8:16
(_3.0: std::option::Option<u32>) = move _4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:11: 8:17
(_3.1: std::option::Option<u32>) = move _5; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:11: 8:17
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:16: 8:17
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:16: 8:17
_8 = discriminant((_3.0: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:10: 9:17
switchInt(move _8) -> [0_isize: bb1, otherwise: bb3]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:10: 9:17
}
bb1: {
_6 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:16: 12:23
switchInt(move _6) -> [0_isize: bb2, otherwise: bb6]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:16: 12:23
_6 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:16: 11:23
switchInt(move _6) -> [0_isize: bb2, otherwise: bb6]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:16: 11:23
}
bb2: {
_0 = const 3_usize; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:13:25: 13:26
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000003))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:13:25: 13:26
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000003)) }
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:5: 14:6
_0 = const 3_u32; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:25: 12:26
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:5: 13:6
}
bb3: {
_7 = discriminant((_3.1: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:19: 10:26
switchInt(move _7) -> [0_isize: bb5, otherwise: bb4]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:19: 10:26
_7 = discriminant((_3.1: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:19: 9:26
switchInt(move _7) -> [0_isize: bb5, otherwise: bb4]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:19: 9:26
}
bb4: {
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
_9 = (((_3.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:24: 10:25
_10 = (((_3.1: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:24: 10:25
_0 = const 0_usize; // scope 1 at $DIR/early_otherwise_branch_noopt.rs:10:31: 10:32
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:10:31: 10:32
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:31: 10:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:31: 10:32
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:5: 14:6
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
_9 = (((_3.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:15: 9:16
StorageLive(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:24: 9:25
_10 = (((_3.1: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:24: 9:25
_0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch_noopt.rs:9:31: 9:32
StorageDead(_10); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:31: 9:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:31: 9:32
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:5: 13:6
}
bb5: {
StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:15: 11:16
_11 = (((_3.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:15: 11:16
_0 = const 1_usize; // scope 2 at $DIR/early_otherwise_branch_noopt.rs:11:28: 11:29
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000001))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:11:28: 11:29
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:28: 11:29
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:5: 14:6
StorageLive(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
_11 = (((_3.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:15: 10:16
_0 = const 1_u32; // scope 2 at $DIR/early_otherwise_branch_noopt.rs:10:28: 10:29
StorageDead(_11); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:10:28: 10:29
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:5: 13:6
}
bb6: {
StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:21: 12:22
_12 = (((_3.1: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:21: 12:22
_0 = const 2_usize; // scope 3 at $DIR/early_otherwise_branch_noopt.rs:12:28: 12:29
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000002))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:12:28: 12:29
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000002)) }
StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:12:28: 12:29
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:9:5: 14:6
StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:21: 11:22
_12 = (((_3.1: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:21: 11:22
_0 = const 2_u32; // scope 3 at $DIR/early_otherwise_branch_noopt.rs:11:28: 11:29
StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:11:28: 11:29
goto -> bb7; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:8:5: 13:6
}
bb7: {
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:15:1: 15:2
return; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:15:2: 15:2
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:14:1: 14:2
return; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:14:2: 14:2
}
}

View File

@ -1,72 +1,60 @@
- // MIR for `noopt2` before EarlyOtherwiseBranch
+ // MIR for `noopt2` after EarlyOtherwiseBranch
fn noopt2(_1: std::option::Option<usize>, _2: std::option::Option<bool>) -> usize {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:11: 19:12
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:29: 19:30
let mut _0: usize; // return place in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:48: 19:53
let mut _3: (std::option::Option<usize>, std::option::Option<bool>); // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:11: 20:16
let mut _4: std::option::Option<usize>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:12: 20:13
let mut _5: std::option::Option<bool>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:14: 20:15
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:19: 21:26
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:10: 21:17
let _8: usize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:15: 21:16
let _9: bool; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:24: 21:25
fn noopt2(_1: Option<u32>, _2: Option<bool>) -> u32 {
debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:18:11: 18:12
debug y => _2; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:18:27: 18:28
let mut _0: u32; // return place in scope 0 at $DIR/early_otherwise_branch_noopt.rs:18:47: 18:50
let mut _3: (std::option::Option<u32>, std::option::Option<bool>); // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:11: 19:17
let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:12: 19:13
let mut _5: std::option::Option<bool>; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:15: 19:16
let mut _6: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:19: 20:26
let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:10: 20:17
let _8: u32; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
let _9: bool; // in scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:24: 20:25
scope 1 {
debug a => _8; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:21:15: 21:16
debug b => _9; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:21:24: 21:25
debug a => _8; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
debug b => _9; // in scope 1 at $DIR/early_otherwise_branch_noopt.rs:20:24: 20:25
}
bb0: {
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:11: 20:16
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:12: 20:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:12: 20:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:14: 20:15
_5 = _2; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:14: 20:15
(_3.0: std::option::Option<usize>) = move _4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:11: 20:16
(_3.1: std::option::Option<bool>) = move _5; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:11: 20:16
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
_7 = discriminant((_3.0: std::option::Option<usize>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:10: 21:17
switchInt(move _7) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:10: 21:17
StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:11: 19:17
StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:12: 19:13
_4 = _1; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:12: 19:13
StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:15: 19:16
_5 = _2; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:15: 19:16
(_3.0: std::option::Option<u32>) = move _4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:11: 19:17
(_3.1: std::option::Option<bool>) = move _5; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:11: 19:17
StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:16: 19:17
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:16: 19:17
_7 = discriminant((_3.0: std::option::Option<u32>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:10: 20:17
switchInt(move _7) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:10: 20:17
}
bb1: {
_0 = const 1_usize; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:22:14: 22:15
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000001))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:22:14: 22:15
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000001)) }
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:5: 23:6
_0 = const 1_u32; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:14: 21:15
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:5: 22:6
}
bb2: {
_6 = discriminant((_3.1: std::option::Option<bool>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:19: 21:26
switchInt(move _6) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:19: 21:26
_6 = discriminant((_3.1: std::option::Option<bool>)); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:19: 20:26
switchInt(move _6) -> [1_isize: bb3, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:19: 20:26
}
bb3: {
StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:15: 21:16
_8 = (((_3.0: std::option::Option<usize>) as Some).0: usize); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:15: 21:16
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:24: 21:25
_9 = (((_3.1: std::option::Option<bool>) as Some).0: bool); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:24: 21:25
_0 = const 0_usize; // scope 1 at $DIR/early_otherwise_branch_noopt.rs:21:31: 21:32
// ty::Const
// + ty: usize
// + val: Value(Scalar(0x0000000000000000))
// mir::Constant
// + span: $DIR/early_otherwise_branch_noopt.rs:21:31: 21:32
// + literal: Const { ty: usize, val: Value(Scalar(0x0000000000000000)) }
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:31: 21:32
StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:21:31: 21:32
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:5: 23:6
StorageLive(_8); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
_8 = (((_3.0: std::option::Option<u32>) as Some).0: u32); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:15: 20:16
StorageLive(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:24: 20:25
_9 = (((_3.1: std::option::Option<bool>) as Some).0: bool); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:24: 20:25
_0 = const 0_u32; // scope 1 at $DIR/early_otherwise_branch_noopt.rs:20:31: 20:32
StorageDead(_9); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:31: 20:32
StorageDead(_8); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:20:31: 20:32
goto -> bb4; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:19:5: 22:6
}
bb4: {
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:24:1: 24:2
return; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:24:2: 24:2
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_noopt.rs:23:1: 23:2
return; // scope 0 at $DIR/early_otherwise_branch_noopt.rs:23:2: 23:2
}
}