Created
May 22, 2018 14:16
-
-
Save nikomatsakis/6bcf9c827d6b962dde4d5ba16792f118 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MIR for `main` | |
// source = MirSource { def_id: DefId(0/0:6 ~ issue_47680[317d]::main[0]), promoted: None } | |
// pass_name = nll | |
// disambiguator = 0 | |
| Free Region Mapping | |
| '_#0r | Global | ['_#0r, '_#1r] | |
| '_#1r | Local | ['_#1r] | |
| | |
| Inferred Region Values | |
| '_#0r | {'_#0r, bb0[0..=4], bb1[0], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb8[0], bb9[0], bb10[0..=4], bb11[0..=2]} | |
| '_#1r | {'_#1r, bb0[0..=4], bb1[0], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb8[0], bb9[0], bb10[0..=4], bb11[0..=2]} | |
| '_#2r | {bb0[3..=4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#3r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#4r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#5r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#6r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#7r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#8r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#9r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| '_#10r | {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[0..=4], bb11[0..=2]} | |
| | |
| Inference Constraints | |
| '_#0r live at {'_#0r, bb0[0..=4], bb1[0], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb8[0], bb9[0], bb10[0..=4], bb11[0..=2]} | |
| '_#1r live at {'_#1r, bb0[0..=4], bb1[0], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb8[0], bb9[0], bb10[0..=4], bb11[0..=2]} | |
| '_#2r live at {bb0[3]} | |
| '_#3r live at {bb3[2]} | |
| '_#4r live at {bb10[1]} | |
| '_#5r live at {bb10[2]} | |
| '_#6r live at {bb0[4], bb2[0], bb3[0..=3], bb4[0..=3], bb5[0..=1], bb6[0], bb7[0], bb10[3..=4], bb11[0..=2]} | |
| '_#7r live at {bb4[0..=3], bb6[0], bb10[0..=1]} | |
| '_#8r live at {bb3[3]} | |
| '_#9r live at {bb10[2]} | |
| '_#10r live at {bb3[3]} | |
| '_#2r: '_#6r @ bb0[4] due to issue-47680.rs:10:20: 10:30 | |
| '_#3r: '_#8r @ bb3[3] due to issue-47680.rs:13:15: 13:19 | |
| '_#4r: '_#7r @ bb10[1] due to issue-47680.rs:14:18: 14:19 | |
| '_#4r: '_#9r @ bb10[2] due to issue-47680.rs:14:18: 14:19 | |
| '_#5r: '_#6r @ bb10[3] due to issue-47680.rs:14:26: 14:34 | |
| '_#6r: '_#3r @ bb3[3] due to issue-47680.rs:13:15: 13:19 | |
| '_#7r: '_#4r @ bb10[1] due to issue-47680.rs:14:18: 14:19 | |
| '_#8r: '_#10r @ bb3[3] due to issue-47680.rs:13:15: 13:32 | |
| '_#9r: '_#5r @ bb10[3] due to issue-47680.rs:14:26: 14:34 | |
| '_#10r: '_#7r @ bb4[0] due to issue-47680.rs:13:15: 13:32 | |
fn main() -> (){ | |
let mut _0: (); // return place | |
scope 1 { | |
let mut _1: &mut Thing; // "temp" in scope 1 at issue-47680.rs:10:9: 10:17 | |
scope 3 { | |
let _8: &mut Thing; // "v" in scope 3 at issue-47680.rs:14:18: 14:19 | |
} | |
} | |
scope 2 { | |
} | |
let mut _2: Thing; | |
let mut _3: !; | |
let mut _4: (); | |
let mut _5: std::option::Option<&mut Thing>; | |
let mut _6: &mut Thing; | |
let mut _7: isize; | |
let mut _9: isize; | |
| Live variables on entry to bb0: [] | |
bb0: { | |
| Live variables on entry to bb0[0]: [] | |
StorageLive(_1); // bb0[0]: scope 0 at issue-47680.rs:10:9: 10:17 | |
| Live variables on entry to bb0[1]: [] | |
StorageLive(_2); // bb0[1]: scope 0 at issue-47680.rs:10:25: 10:30 | |
| Live variables on entry to bb0[2]: [] | |
_2 = Thing::{{constructor}}; // bb0[2]: scope 0 at issue-47680.rs:10:25: 10:30 | |
| Live variables on entry to bb0[3]: [_2] | |
_1 = &mut _2; // bb0[3]: scope 0 at issue-47680.rs:10:20: 10:30 | |
| Live variables on entry to bb0[4]: [_1] | |
goto -> bb2; // bb0[4]: scope 1 at issue-47680.rs:12:5: 17:6 | |
} | |
| Live variables on entry to bb1: [] | |
bb1: { // cleanup | |
| Live variables on entry to bb1[0]: [] | |
resume; // bb1[0]: scope 0 at issue-47680.rs:9:1: 18:2 | |
} | |
| Live variables on entry to bb2: [_1] | |
bb2: { | |
| Live variables on entry to bb2[0]: [_1] | |
falseUnwind -> [real: bb3, cleanup: bb1]; // bb2[0]: scope 1 at issue-47680.rs:12:5: 17:6 | |
} | |
| Live variables on entry to bb3: [_1] | |
bb3: { | |
| Live variables on entry to bb3[0]: [_1] | |
StorageLive(_5); // bb3[0]: scope 1 at issue-47680.rs:13:15: 13:32 | |
| Live variables on entry to bb3[1]: [_1] | |
StorageLive(_6); // bb3[1]: scope 1 at issue-47680.rs:13:15: 13:19 | |
| Live variables on entry to bb3[2]: [_1] | |
_6 = &mut (*_1); // bb3[2]: scope 1 at issue-47680.rs:13:15: 13:19 | |
| Live variables on entry to bb3[3]: [_1, _6] | |
_5 = const Thing::maybe_next(move _6) -> [return: bb4, unwind: bb1]; // bb3[3]: scope 1 at issue-47680.rs:13:15: 13:32 | |
// ty::Const | |
// + ty: for<'r> fn(&'r mut Thing) -> std::option::Option<&'r mut Thing> {Thing::maybe_next} | |
// + val: Value(ByVal(Undef)) | |
// mir::Constant | |
// + span: issue-47680.rs:13:15: 13:32 | |
// + ty: for<'r> fn(&'r mut Thing) -> std::option::Option<&'r mut Thing> {Thing::maybe_next} | |
// + literal: const Thing::maybe_next | |
} | |
| Live variables on entry to bb4: [_1, _5] | |
bb4: { | |
| Live variables on entry to bb4[0]: [_1, _5] | |
StorageDead(_6); // bb4[0]: scope 1 at issue-47680.rs:13:31: 13:32 | |
| Live variables on entry to bb4[1]: [_1, _5] | |
_7 = discriminant(_5); // bb4[1]: scope 1 at issue-47680.rs:13:9: 16:10 | |
| Live variables on entry to bb4[2]: [_1, _5] | |
_9 = discriminant(_5); // bb4[2]: scope 1 at issue-47680.rs:14:13: 14:20 | |
| Live variables on entry to bb4[3]: [_1, _5, _9] | |
switchInt(move _9) -> [0isize: bb7, 1isize: bb6, otherwise: bb9]; // bb4[3]: scope 1 at issue-47680.rs:14:13: 14:20 | |
} | |
| Live variables on entry to bb5: [_1] | |
bb5: { | |
| Live variables on entry to bb5[0]: [_1] | |
_4 = (); // bb5[0]: scope 1 at issue-47680.rs:15:21: 15:24 | |
| Live variables on entry to bb5[1]: [_1] | |
goto -> bb11; // bb5[1]: scope 1 at issue-47680.rs:13:9: 16:10 | |
} | |
| Live variables on entry to bb6: [_1, _5] | |
bb6: { | |
| Live variables on entry to bb6[0]: [_1, _5] | |
falseEdges -> [real: bb10, imaginary: bb7]; // bb6[0]: scope 1 at issue-47680.rs:14:13: 14:20 | |
} | |
| Live variables on entry to bb7: [_1] | |
bb7: { | |
| Live variables on entry to bb7[0]: [_1] | |
falseEdges -> [real: bb5, imaginary: bb8]; // bb7[0]: scope 1 at issue-47680.rs:15:13: 15:17 | |
} | |
| Live variables on entry to bb8: [] | |
bb8: { | |
| Live variables on entry to bb8[0]: [] | |
unreachable; // bb8[0]: scope 1 at issue-47680.rs:13:9: 16:10 | |
} | |
| Live variables on entry to bb9: [] | |
bb9: { | |
| Live variables on entry to bb9[0]: [] | |
unreachable; // bb9[0]: scope 0 at issue-47680.rs:18:2: 18:2 | |
} | |
| Live variables on entry to bb10: [_5] | |
bb10: { | |
| Live variables on entry to bb10[0]: [_5] | |
StorageLive(_8); // bb10[0]: scope 1 at issue-47680.rs:14:18: 14:19 | |
| Live variables on entry to bb10[1]: [_5] | |
_8 = move ((_5 as Some).0: &mut Thing); // bb10[1]: scope 1 at issue-47680.rs:14:18: 14:19 | |
| Live variables on entry to bb10[2]: [_8] | |
_1 = &mut (*_8); // bb10[2]: scope 3 at issue-47680.rs:14:26: 14:34 | |
| Live variables on entry to bb10[3]: [_1] | |
_4 = (); // bb10[3]: scope 3 at issue-47680.rs:14:24: 14:37 | |
| Live variables on entry to bb10[4]: [_1] | |
goto -> bb11; // bb10[4]: scope 1 at issue-47680.rs:13:9: 16:10 | |
} | |
| Live variables on entry to bb11: [_1] | |
bb11: { | |
| Live variables on entry to bb11[0]: [_1] | |
StorageDead(_8); // bb11[0]: scope 1 at issue-47680.rs:16:9: 16:10 | |
| Live variables on entry to bb11[1]: [_1] | |
StorageDead(_5); // bb11[1]: scope 1 at issue-47680.rs:17:5: 17:6 | |
| Live variables on entry to bb11[2]: [_1] | |
goto -> bb2; // bb11[2]: scope 1 at issue-47680.rs:12:5: 17:6 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment