Skip to content

Commit 401f19f

Browse files
committed
Add a mir-opt test for an unneeded drop_in_place
1 parent 70c02bc commit 401f19f

3 files changed

+47
-0
lines changed

tests/mir-opt/remove_unneeded_drops.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,17 @@ fn cannot_opt_generic<T>(x: T) {
4949
}
5050
}
5151

52+
// EMIT_MIR remove_unneeded_drops.slice_in_place.RemoveUnneededDrops.diff
53+
unsafe fn slice_in_place(ptr: *mut [char]) {
54+
std::ptr::drop_in_place(ptr)
55+
}
56+
5257
fn main() {
5358
// CHECK-LABEL: fn main(
5459
opt(true);
5560
opt_generic_copy(42);
5661
cannot_opt_generic(42);
5762
dont_opt(vec![true]);
63+
let mut a = ['o', 'k'];
64+
unsafe { slice_in_place(&raw mut a) };
5865
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
- // MIR for `slice_in_place` before RemoveUnneededDrops
2+
+ // MIR for `slice_in_place` after RemoveUnneededDrops
3+
4+
fn slice_in_place(_1: *mut [char]) -> () {
5+
debug ptr => _1;
6+
let mut _0: ();
7+
let mut _2: *mut [char];
8+
9+
bb0: {
10+
StorageLive(_2);
11+
_2 = copy _1;
12+
_0 = drop_in_place::<[char]>(move _2) -> [return: bb1, unwind unreachable];
13+
}
14+
15+
bb1: {
16+
StorageDead(_2);
17+
return;
18+
}
19+
}
20+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
- // MIR for `slice_in_place` before RemoveUnneededDrops
2+
+ // MIR for `slice_in_place` after RemoveUnneededDrops
3+
4+
fn slice_in_place(_1: *mut [char]) -> () {
5+
debug ptr => _1;
6+
let mut _0: ();
7+
let mut _2: *mut [char];
8+
9+
bb0: {
10+
StorageLive(_2);
11+
_2 = copy _1;
12+
_0 = drop_in_place::<[char]>(move _2) -> [return: bb1, unwind continue];
13+
}
14+
15+
bb1: {
16+
StorageDead(_2);
17+
return;
18+
}
19+
}
20+

0 commit comments

Comments
 (0)