2020-11-10 18:00:00 -06:00
|
|
|
- // MIR for `main` before Inline
|
|
|
|
+ // MIR for `main` after Inline
|
|
|
|
|
|
|
|
fn main() -> () {
|
|
|
|
let mut _0: (); // return place in scope 0 at $DIR/inline-generator.rs:8:11: 8:11
|
2021-05-13 05:04:41 -05:00
|
|
|
let _1: std::ops::GeneratorState<i32, bool>; // in scope 0 at $DIR/inline-generator.rs:9:9: 9:11
|
|
|
|
let mut _2: std::pin::Pin<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>; // in scope 0 at $DIR/inline-generator.rs:9:14: 9:32
|
|
|
|
let mut _3: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]; // in scope 0 at $DIR/inline-generator.rs:9:23: 9:31
|
|
|
|
let mut _4: [generator@$DIR/inline-generator.rs:15:5: 15:41]; // in scope 0 at $DIR/inline-generator.rs:9:28: 9:31
|
2020-11-10 18:00:00 -06:00
|
|
|
+ let mut _7: bool; // in scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
scope 1 {
|
|
|
|
debug _r => _1; // in scope 1 at $DIR/inline-generator.rs:9:9: 9:11
|
|
|
|
}
|
|
|
|
+ scope 2 (inlined g) { // at $DIR/inline-generator.rs:9:28: 9:31
|
|
|
|
+ }
|
2021-06-11 19:00:00 -05:00
|
|
|
+ scope 3 (inlined Pin::<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>::new) { // at $DIR/inline-generator.rs:9:14: 9:32
|
2022-02-27 09:09:52 -06:00
|
|
|
+ debug pointer => _3; // in scope 3 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ let mut _5: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]; // in scope 3 at $SRC_DIR/core/src/pin.rs:LL:COL
|
2020-11-10 18:00:00 -06:00
|
|
|
+ scope 4 {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ scope 5 (inlined Pin::<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>::new_unchecked) { // at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ debug pointer => _5; // in scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ let mut _6: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]; // in scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ scope 6 (inlined g::{closure#0}) { // at $DIR/inline-generator.rs:9:14: 9:46
|
2022-02-27 09:09:52 -06:00
|
|
|
+ debug a => _11; // in scope 6 at $DIR/inline-generator.rs:15:6: 15:7
|
|
|
|
+ let mut _8: i32; // in scope 6 at $DIR/inline-generator.rs:15:17: 15:39
|
|
|
|
+ let mut _9: bool; // in scope 6 at $DIR/inline-generator.rs:15:20: 15:21
|
|
|
|
+ let mut _10: bool; // in scope 6 at $DIR/inline-generator.rs:15:9: 15:9
|
|
|
|
+ let _11: bool; // in scope 6 at $DIR/inline-generator.rs:15:6: 15:7
|
|
|
|
+ let mut _12: u32; // in scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
|
|
|
|
bb0: {
|
|
|
|
StorageLive(_1); // scope 0 at $DIR/inline-generator.rs:9:9: 9:11
|
|
|
|
StorageLive(_2); // scope 0 at $DIR/inline-generator.rs:9:14: 9:32
|
|
|
|
StorageLive(_3); // scope 0 at $DIR/inline-generator.rs:9:23: 9:31
|
|
|
|
StorageLive(_4); // scope 0 at $DIR/inline-generator.rs:9:28: 9:31
|
|
|
|
- _4 = g() -> bb1; // scope 0 at $DIR/inline-generator.rs:9:28: 9:31
|
|
|
|
- // mir::Constant
|
|
|
|
- // + span: $DIR/inline-generator.rs:9:28: 9:29
|
2022-02-21 01:10:07 -06:00
|
|
|
- // + literal: Const { ty: fn() -> impl Generator<bool> {g}, val: Value(Scalar(<ZST>)) }
|
2020-11-10 18:00:00 -06:00
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bb1: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ discriminant(_4) = 0; // scope 2 at $DIR/inline-generator.rs:15:5: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
_3 = &mut _4; // scope 0 at $DIR/inline-generator.rs:9:23: 9:31
|
2022-02-16 03:56:01 -06:00
|
|
|
- _2 = Pin::<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>::new(move _3) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/inline-generator.rs:9:14: 9:32
|
2020-11-10 18:00:00 -06:00
|
|
|
- // mir::Constant
|
|
|
|
- // + span: $DIR/inline-generator.rs:9:14: 9:22
|
|
|
|
- // + user_ty: UserType(0)
|
2022-02-16 03:56:01 -06:00
|
|
|
- // + literal: Const { ty: fn(&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]) -> Pin<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]> {Pin::<&mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>::new}, val: Value(Scalar(<ZST>)) }
|
2020-11-10 18:00:00 -06:00
|
|
|
- }
|
|
|
|
-
|
|
|
|
- bb2: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ StorageLive(_5); // scope 4 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ _5 = move _3; // scope 4 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ StorageLive(_6); // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ _6 = move _5; // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ (_2.0: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]) = move _6; // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ StorageDead(_6); // scope 5 at $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
+ StorageDead(_5); // scope 4 at $SRC_DIR/core/src/pin.rs:LL:COL
|
2020-11-10 18:00:00 -06:00
|
|
|
StorageDead(_3); // scope 0 at $DIR/inline-generator.rs:9:31: 9:32
|
2022-02-16 03:56:01 -06:00
|
|
|
- _1 = <[generator@$DIR/inline-generator.rs:15:5: 15:41] as Generator<bool>>::resume(move _2, const false) -> [return: bb3, unwind: bb4]; // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
2020-11-10 18:00:00 -06:00
|
|
|
- // mir::Constant
|
|
|
|
- // + span: $DIR/inline-generator.rs:9:33: 9:39
|
2022-02-16 03:56:01 -06:00
|
|
|
- // + literal: Const { ty: for<'r> fn(Pin<&'r mut [generator@$DIR/inline-generator.rs:15:5: 15:41]>, bool) -> GeneratorState<<[generator@$DIR/inline-generator.rs:15:5: 15:41] as Generator<bool>>::Yield, <[generator@$DIR/inline-generator.rs:15:5: 15:41] as Generator<bool>>::Return> {<[generator@$DIR/inline-generator.rs:15:5: 15:41] as Generator<bool>>::resume}, val: Value(Scalar(<ZST>)) }
|
2020-11-10 18:00:00 -06:00
|
|
|
+ StorageLive(_7); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
+ _7 = const false; // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
2021-03-05 18:00:00 -06:00
|
|
|
+ StorageLive(_10); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
+ StorageLive(_11); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
+ StorageLive(_12); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
2022-02-27 09:09:52 -06:00
|
|
|
+ _12 = discriminant((*(_2.0: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]))); // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
|
|
|
+ switchInt(move _12) -> [0_u32: bb3, 1_u32: bb8, 3_u32: bb7, otherwise: bb9]; // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
- bb3: {
|
|
|
|
+ bb1: {
|
2021-03-05 18:00:00 -06:00
|
|
|
+ StorageDead(_12); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
+ StorageDead(_11); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
+ StorageDead(_10); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
2020-11-10 18:00:00 -06:00
|
|
|
+ StorageDead(_7); // scope 0 at $DIR/inline-generator.rs:9:14: 9:46
|
|
|
|
StorageDead(_2); // scope 0 at $DIR/inline-generator.rs:9:45: 9:46
|
|
|
|
StorageDead(_4); // scope 0 at $DIR/inline-generator.rs:9:46: 9:47
|
|
|
|
_0 = const (); // scope 0 at $DIR/inline-generator.rs:8:11: 10:2
|
|
|
|
StorageDead(_1); // scope 0 at $DIR/inline-generator.rs:10:1: 10:2
|
|
|
|
return; // scope 0 at $DIR/inline-generator.rs:10:2: 10:2
|
|
|
|
}
|
|
|
|
|
|
|
|
- bb4 (cleanup): {
|
|
|
|
+ bb2 (cleanup): {
|
|
|
|
resume; // scope 0 at $DIR/inline-generator.rs:8:1: 10:2
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb3: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ _11 = move _7; // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
|
|
|
+ StorageLive(_8); // scope 6 at $DIR/inline-generator.rs:15:17: 15:39
|
|
|
|
+ StorageLive(_9); // scope 6 at $DIR/inline-generator.rs:15:20: 15:21
|
|
|
|
+ _9 = _11; // scope 6 at $DIR/inline-generator.rs:15:20: 15:21
|
|
|
|
+ switchInt(move _9) -> [false: bb5, otherwise: bb4]; // scope 6 at $DIR/inline-generator.rs:15:20: 15:21
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb4: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ _8 = const 7_i32; // scope 6 at $DIR/inline-generator.rs:15:24: 15:25
|
|
|
|
+ goto -> bb6; // scope 6 at $DIR/inline-generator.rs:15:17: 15:39
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb5: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ _8 = const 13_i32; // scope 6 at $DIR/inline-generator.rs:15:35: 15:37
|
|
|
|
+ goto -> bb6; // scope 6 at $DIR/inline-generator.rs:15:17: 15:39
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb6: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ StorageDead(_9); // scope 6 at $DIR/inline-generator.rs:15:38: 15:39
|
|
|
|
+ ((_1 as Yielded).0: i32) = move _8; // scope 6 at $DIR/inline-generator.rs:15:11: 15:39
|
|
|
|
+ discriminant(_1) = 0; // scope 6 at $DIR/inline-generator.rs:15:11: 15:39
|
|
|
|
+ discriminant((*(_2.0: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]))) = 3; // scope 6 at $DIR/inline-generator.rs:15:11: 15:39
|
2020-11-10 18:00:00 -06:00
|
|
|
+ goto -> bb1; // scope 0 at $DIR/inline-generator.rs:15:11: 15:39
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb7: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ StorageLive(_8); // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
|
|
|
+ _10 = move _7; // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
|
|
|
+ StorageDead(_8); // scope 6 at $DIR/inline-generator.rs:15:38: 15:39
|
|
|
|
+ ((_1 as Complete).0: bool) = move _10; // scope 6 at $DIR/inline-generator.rs:15:41: 15:41
|
|
|
|
+ discriminant(_1) = 1; // scope 6 at $DIR/inline-generator.rs:15:41: 15:41
|
|
|
|
+ discriminant((*(_2.0: &mut [generator@$DIR/inline-generator.rs:15:5: 15:41]))) = 1; // scope 6 at $DIR/inline-generator.rs:15:41: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
+ goto -> bb1; // scope 0 at $DIR/inline-generator.rs:15:41: 15:41
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb8: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ assert(const false, "generator resumed after completion") -> [success: bb8, unwind: bb2]; // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bb9: {
|
2022-02-27 09:09:52 -06:00
|
|
|
+ unreachable; // scope 6 at $DIR/inline-generator.rs:15:5: 15:41
|
2020-11-10 18:00:00 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|