rust/tests/mir-opt/slice_drop_shim.core.ptr-dr...

56 lines
1.1 KiB
Rust

// MIR for `std::ptr::drop_in_place` before AddMovesForPackedDrops
fn std::ptr::drop_in_place(_1: *mut [String]) -> () {
let mut _0: ();
let mut _2: usize;
let mut _3: usize;
let mut _4: *mut std::string::String;
let mut _5: bool;
let mut _6: *mut std::string::String;
let mut _7: bool;
bb0: {
goto -> bb8;
}
bb1: {
return;
}
bb2 (cleanup): {
resume;
}
bb3 (cleanup): {
_4 = &raw mut (*_1)[_3];
_3 = Add(move _3, const 1_usize);
drop((*_4)) -> [return: bb4, unwind terminate(cleanup)];
}
bb4 (cleanup): {
_5 = Eq(_3, _2);
switchInt(move _5) -> [0: bb3, otherwise: bb2];
}
bb5: {
_6 = &raw mut (*_1)[_3];
_3 = Add(move _3, const 1_usize);
drop((*_6)) -> [return: bb6, unwind: bb4];
}
bb6: {
_7 = Eq(_3, _2);
switchInt(move _7) -> [0: bb5, otherwise: bb1];
}
bb7: {
_2 = Len((*_1));
_3 = const 0_usize;
goto -> bb6;
}
bb8: {
goto -> bb7;
}
}