Created
November 15, 2018 19:16
-
-
Save Nemo157/ecd934261d28e59c013a1499c37ce00d to your computer and use it in GitHub Desktop.
This file contains hidden or 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::{{closure}}` | |
// source = MirSource { def_id: DefId(0/1:9 ~ generators[317d]::main[0]::{{closure}}[0]), promoted: None } | |
// pass_name = generator_resume | |
// disambiguator = 0 | |
// generator_layout = GeneratorLayout { fields: [LocalDecl { mutability: Not, is_user_variable: Some(Set(Var(VarBindingForm { binding_mode: BindByValue(MutImmutable), opt_ty_info: None, opt_match_place: Some((None, src/test/debuginfo/generators.rs:37:17: 37:18)), pat_span: src/test/debuginfo/generators.rs:37:13: 37:14 }))), internal: false, is_block_tail: None, ty: i32, user_ty: UserTypeProjections { contents: [] }, name: Some(d), source_info: SourceInfo { span: src/test/debuginfo/generators.rs:37:13: 37:14, scope: scope[2] }, visibility_scope: scope[1] }] } | |
fn main::{{closure}}(_1: std::pin::Pin<&mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}]>) -> std::ops::GeneratorState<(), ()>{ | |
let mut _0: std::ops::GeneratorState<(), ()>; // return place | |
scope 1 { | |
} | |
scope 2 { | |
} | |
let mut _2: (); | |
let mut _3: (); | |
let mut _4: (); | |
let mut _5: (); | |
let mut _6: i32; | |
let mut _7: (); | |
bb0: { | |
switchInt(((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).1: u32)) -> [0u32: bb1, 1u32: bb10, 2u32: bb11, 3u32: bb9, otherwise: bb12]; // bb0[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
} | |
bb1: { | |
nop; // bb1[0]: scope 0 at src/test/debuginfo/generators.rs:37:13: 37:14 | |
((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).2: i32) = const 6i32; // bb1[1]: scope 0 at src/test/debuginfo/generators.rs:37:17: 37:18 | |
// ty::Const | |
// + ty: i32 | |
// + val: Scalar(Bits { size: 4, bits: 6 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:37:17: 37:18 | |
// + ty: i32 | |
// + literal: Const { ty: i32, val: Scalar(Bits { size: 4, bits: 6 }) } | |
StorageLive(_4); // bb1[2]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
_4 = (); // bb1[3]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
_0 = std::ops::GeneratorState<(), ()>::Yielded(move _4,); // bb1[4]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).1: u32) = const 3u32; // bb1[5]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
// ty::Const | |
// + ty: u32 | |
// + val: Scalar(Bits { size: 4, bits: 3 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:38:9: 38:14 | |
// + ty: u32 | |
// + literal: Const { ty: u32, val: Scalar(Bits { size: 4, bits: 3 }) } | |
return; // bb1[6]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
} | |
bb2: { // cleanup | |
((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).1: u32) = const 1u32; // bb2[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
// ty::Const | |
// + ty: u32 | |
// + val: Scalar(Bits { size: 4, bits: 1 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:36:17: 41:6 | |
// + ty: u32 | |
// + literal: Const { ty: u32, val: Scalar(Bits { size: 4, bits: 1 }) } | |
resume; // bb2[1]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
} | |
bb3: { | |
_3 = (); // bb3[0]: scope 1 at src/test/debuginfo/generators.rs:38:9: 38:14 | |
StorageDead(_4); // bb3[1]: scope 1 at src/test/debuginfo/generators.rs:38:13: 38:14 | |
_5 = const _zzz() -> [return: bb4, unwind: bb5]; // bb3[2]: scope 1 at src/test/debuginfo/generators.rs:39:9: 39:15 | |
// ty::Const | |
// + ty: fn() {_zzz} | |
// + val: Scalar(Bits { size: 0, bits: 0 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:39:9: 39:13 | |
// + ty: fn() {_zzz} | |
// + literal: Const { ty: fn() {_zzz}, val: Scalar(Bits { size: 0, bits: 0 }) } | |
} | |
bb4: { | |
StorageLive(_6); // bb4[0]: scope 1 at src/test/debuginfo/generators.rs:40:13: 40:14 | |
_6 = ((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).2: i32); // bb4[1]: scope 1 at src/test/debuginfo/generators.rs:40:13: 40:14 | |
(*((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).0: &mut i32)) = move _6; // bb4[2]: scope 1 at src/test/debuginfo/generators.rs:40:9: 40:14 | |
StorageDead(_6); // bb4[3]: scope 1 at src/test/debuginfo/generators.rs:40:13: 40:14 | |
_7 = (); // bb4[4]: scope 0 at src/test/debuginfo/generators.rs:36:20: 41:6 | |
nop; // bb4[5]: scope 0 at src/test/debuginfo/generators.rs:41:5: 41:6 | |
goto -> bb7; // bb4[6]: scope 0 at src/test/debuginfo/generators.rs:41:5: 41:6 | |
} | |
bb5: { // cleanup | |
goto -> bb8; // bb5[0]: scope 0 at src/test/debuginfo/generators.rs:41:5: 41:6 | |
} | |
bb6: { | |
_0 = std::ops::GeneratorState<(), ()>::Complete(move _7,); // bb6[0]: scope 0 at src/test/debuginfo/generators.rs:41:6: 41:6 | |
((*(_1.0: &mut [generator@src/test/debuginfo/generators.rs:36:17: 41:6 a:&mut i32 {i32, ()}])).1: u32) = const 1u32; // bb6[1]: scope 0 at src/test/debuginfo/generators.rs:41:6: 41:6 | |
// ty::Const | |
// + ty: u32 | |
// + val: Scalar(Bits { size: 4, bits: 1 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:41:6: 41:6 | |
// + ty: u32 | |
// + literal: Const { ty: u32, val: Scalar(Bits { size: 4, bits: 1 }) } | |
return; // bb6[2]: scope 0 at src/test/debuginfo/generators.rs:41:6: 41:6 | |
} | |
bb7: { | |
goto -> bb6; // bb7[0]: scope 0 at src/test/debuginfo/generators.rs:41:5: 41:6 | |
} | |
bb8: { // cleanup | |
goto -> bb2; // bb8[0]: scope 0 at src/test/debuginfo/generators.rs:41:5: 41:6 | |
} | |
bb9: { | |
StorageLive(_4); // bb9[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
goto -> bb3; // bb9[1]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
} | |
bb10: { | |
assert(const false, "generator resumed after completion") -> bb10; // bb10[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
// ty::Const | |
// + ty: bool | |
// + val: Scalar(Bits { size: 1, bits: 0 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:36:17: 41:6 | |
// + ty: bool | |
// + literal: Const { ty: bool, val: Scalar(Bits { size: 1, bits: 0 }) } | |
} | |
bb11: { | |
assert(const false, "generator resumed after panicking") -> bb11; // bb11[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
// ty::Const | |
// + ty: bool | |
// + val: Scalar(Bits { size: 1, bits: 0 }) | |
// mir::Constant | |
// + span: src/test/debuginfo/generators.rs:36:17: 41:6 | |
// + ty: bool | |
// + literal: Const { ty: bool, val: Scalar(Bits { size: 1, bits: 0 }) } | |
} | |
bb12: { | |
unreachable; // bb12[0]: scope 0 at src/test/debuginfo/generators.rs:36:17: 41:6 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment