blob: 1ce52d353af342b0d6e04b8d41c3e4299c8390b4 [file]
// MIR for `foo::{closure#0}` 0 coroutine_drop
fn foo::{closure#0}(_1: &mut {async fn body of foo()}) -> () {
debug _task_context => _2;
debug x => ((*_1).0: &u32);
debug y => ((*_1).1: u32);
let mut _0: ();
let mut _2: &mut std::task::Context<'_>;
let _3: &u32;
let mut _9: {async block@$DIR/async_fn.rs:21:13: 21:18};
let mut _10: {async block@$DIR/async_fn.rs:21:13: 21:18};
let mut _11: &u32;
let mut _12: &u32;
let mut _14: ();
let _15: ();
let mut _16: std::task::Poll<u32>;
let mut _17: std::pin::Pin<&mut {async block@$DIR/async_fn.rs:21:13: 21:18}>;
let mut _18: &mut {async block@$DIR/async_fn.rs:21:13: 21:18};
let mut _19: &mut {async block@$DIR/async_fn.rs:21:13: 21:18};
let mut _20: &mut std::task::Context<'_>;
let mut _21: &mut std::task::Context<'_>;
let mut _22: &mut std::task::Context<'_>;
let mut _23: isize;
let mut _25: !;
let mut _26: &mut std::task::Context<'_>;
let mut _27: ();
let mut _30: u32;
let mut _31: u32;
let mut _32: u32;
let mut _33: u32;
let mut _34: u32;
let mut _35: u32;
scope 1 {
debug x => (((*_1) as variant#3).0: &u32);
let _4: u32;
scope 2 {
debug y => (((*_1) as variant#3).1: u32);
let _5: &u32;
scope 3 {
debug y => _5;
let _6: u32;
scope 4 {
debug z => (((*_1) as variant#3).2: u32);
let _7: &u32;
scope 5 {
debug z => _7;
let _8: u32;
let mut _13: {async block@$DIR/async_fn.rs:21:13: 21:18};
scope 6 {
debug y => _8;
let _28: u32;
scope 9 {
debug a => _28;
let _29: &u32;
scope 10 {
debug a => _29;
}
}
}
scope 7 {
debug __awaitee => (((*_1) as variant#3).3: {async block@$DIR/async_fn.rs:21:13: 21:18});
let _24: u32;
scope 8 {
debug result => _24;
}
}
}
}
}
}
}
bb0: {
_35 = discriminant((*_1));
switchInt(move _35) -> [0: bb9, 3: bb12, otherwise: bb13];
}
bb1: {
StorageDead(_27);
StorageDead(_26);
drop((((*_1) as variant#3).3: {async block@$DIR/async_fn.rs:21:13: 21:18})) -> [return: bb2, unwind: bb6];
}
bb2: {
nop;
goto -> bb3;
}
bb3: {
StorageDead(_9);
StorageDead(_8);
StorageDead(_7);
nop;
StorageDead(_5);
nop;
nop;
goto -> bb10;
}
bb4: {
return;
}
bb5 (cleanup): {
resume;
}
bb6 (cleanup): {
nop;
goto -> bb7;
}
bb7 (cleanup): {
StorageDead(_9);
StorageDead(_8);
StorageDead(_7);
nop;
StorageDead(_5);
nop;
nop;
goto -> bb5;
}
bb8: {
return;
}
bb9: {
goto -> bb11;
}
bb10: {
goto -> bb4;
}
bb11: {
goto -> bb8;
}
bb12: {
StorageLive(_5);
StorageLive(_7);
StorageLive(_8);
StorageLive(_9);
StorageLive(_26);
StorageLive(_27);
goto -> bb1;
}
bb13: {
return;
}
}