diff options
Diffstat (limited to 'tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir')
-rw-r--r-- | tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir new file mode 100644 index 000000000..7e050e585 --- /dev/null +++ b/tests/mir-opt/generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir @@ -0,0 +1,91 @@ +// MIR for `main::{closure#0}` 0 generator_drop +/* generator_layout = GeneratorLayout { + field_tys: { + _0: GeneratorSavedTy { + ty: std::string::String, + source_info: SourceInfo { + span: $DIR/generator_drop_cleanup.rs:11:13: 11:15 (#0), + scope: scope[0], + }, + ignore_for_traits: false, + }, + }, + variant_fields: { + Unresumed(0): [], + Returned (1): [], + Panicked (2): [], + Suspend0 (3): [_0], + }, + storage_conflicts: BitMatrix(1x1) { + (_0, _0), + }, +} */ + +fn main::{closure#0}(_1: *mut [generator@$DIR/generator_drop_cleanup.rs:10:15: 10:17]) -> () { + let mut _0: (); + let mut _2: (); + let _3: std::string::String; + let _4: (); + let mut _5: (); + let mut _6: (); + let mut _7: (); + let mut _8: u32; + scope 1 { + debug _s => (((*_1) as variant#3).0: std::string::String); + } + + bb0: { + _8 = discriminant((*_1)); + switchInt(move _8) -> [0: bb7, 3: bb10, otherwise: bb11]; + } + + bb1: { + StorageDead(_5); + StorageDead(_4); + drop((((*_1) as variant#3).0: std::string::String)) -> [return: bb2, unwind: bb5]; + } + + bb2: { + nop; + goto -> bb8; + } + + bb3: { + return; + } + + bb4 (cleanup): { + resume; + } + + bb5 (cleanup): { + nop; + goto -> bb4; + } + + bb6: { + return; + } + + bb7: { + goto -> bb9; + } + + bb8: { + goto -> bb3; + } + + bb9: { + goto -> bb6; + } + + bb10: { + StorageLive(_4); + StorageLive(_5); + goto -> bb1; + } + + bb11: { + return; + } +} |