Skip to content

Instantly share code, notes, and snippets.

@nikomatsakis
Created May 22, 2018 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikomatsakis/6bcf9c827d6b962dde4d5ba16792f118 to your computer and use it in GitHub Desktop.
Save nikomatsakis/6bcf9c827d6b962dde4d5ba16792f118 to your computer and use it in GitHub Desktop.
// 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