rust/tests/mir-opt/building/enum_cast.droppy.built.after.mir

72 lines
1.4 KiB
Rust

// MIR for `droppy` after built
fn droppy() -> () {
let mut _0: ();
let _1: ();
let _2: Droppy;
let _4: Droppy;
let mut _5: isize;
let mut _6: u8;
let mut _7: bool;
let _8: Droppy;
scope 1 {
debug x => _2;
scope 2 {
debug y => _3;
}
scope 3 {
let _3: usize;
}
}
scope 4 {
debug z => _8;
}
bb0: {
StorageLive(_1);
StorageLive(_2);
_2 = Droppy::C;
FakeRead(ForLet(None), _2);
StorageLive(_3);
StorageLive(_4);
_4 = move _2;
_5 = discriminant(_4);
_6 = _5 as u8 (IntToInt);
_7 = Le(_6, const 2_u8);
assume(move _7);
_3 = move _5 as usize (IntToInt);
drop(_4) -> [return: bb1, unwind: bb4];
}
bb1: {
StorageDead(_4);
FakeRead(ForLet(None), _3);
_1 = const ();
StorageDead(_3);
drop(_2) -> [return: bb2, unwind: bb5];
}
bb2: {
StorageDead(_2);
StorageDead(_1);
StorageLive(_8);
_8 = Droppy::B;
FakeRead(ForLet(None), _8);
_0 = const ();
drop(_8) -> [return: bb3, unwind: bb5];
}
bb3: {
StorageDead(_8);
return;
}
bb4 (cleanup): {
drop(_2) -> [return: bb5, unwind terminate (panic in a destructor during cleanup)];
}
bb5 (cleanup): {
resume;
}
}