blob: b84e55cac46168fcddc1d0c9070bcd272a9ec264 [file]
- // MIR for `main::{closure#0}` before StateTransform
+ // MIR for `main::{closure#0}` after StateTransform
- fn main::{closure#0}(_1: {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}, _2: u8) -> ()
- yields ()
- {
+ fn main::{closure#0}(_1: Pin<&mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}>, _2: u8) -> CoroutineState<(), ()> {
+ coroutine layout {
+ field _s0: HasDrop;
+ variant_fields = {
+ Unresumed(0): [],
+ Returned (1): [],
+ Panicked (2): [],
+ Suspend0 (3): [_s0],
+ }
+ storage_conflicts = BitMatrix(1x1) {(_s0, _s0)}
+ }
debug _x => _2;
- let mut _0: ();
+ coroutine debug _d => _s0;
+ let mut _0: std::ops::CoroutineState<(), ()>;
let _3: HasDrop;
let mut _4: !;
let mut _5: ();
let _6: u8;
let mut _7: ();
let _8: ();
+ let mut _9: ();
+ let mut _10: u32;
+ let mut _11: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13};
scope 1 {
- debug _d => _3;
+ debug _d => (((*_11) as variant#3).0: HasDrop);
}
bb0: {
- StorageLive(_3);
- _3 = HasDrop;
- StorageLive(_4);
- goto -> bb1;
+ _11 = copy (_1.0: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13});
+ _10 = discriminant((*_11));
+ switchInt(move _10) -> [0: bb6, 3: bb4, otherwise: bb5];
}
bb1: {
StorageLive(_6);
StorageLive(_7);
_7 = ();
- _6 = yield(move _7) -> [resume: bb2, drop: bb4];
+ _0 = CoroutineState::<(), ()>::Yielded(move _7);
+ StorageDead(_4);
+ StorageDead(_6);
+ StorageDead(_7);
+ discriminant((*_11)) = 3;
+ return;
}
bb2: {
StorageDead(_7);
StorageDead(_6);
StorageLive(_8);
_8 = callee() -> [return: bb3, unwind unreachable];
}
bb3: {
StorageDead(_8);
_5 = const ();
goto -> bb1;
}
bb4: {
- StorageDead(_7);
- StorageDead(_6);
- StorageDead(_4);
- drop(_3) -> [return: bb5, unwind unreachable];
+ StorageLive(_4);
+ StorageLive(_6);
+ StorageLive(_7);
+ _6 = move _2;
+ goto -> bb2;
}
bb5: {
- StorageDead(_3);
- drop(_1) -> [return: bb6, unwind unreachable];
+ unreachable;
}
bb6: {
- coroutine_drop;
+ nop;
+ (((*_11) as variant#3).0: HasDrop) = HasDrop;
+ StorageLive(_4);
+ goto -> bb1;
}
}