Skip to content

Commit 9485afb

Browse files
committed
Fortify RemoveUnneededDrops test.
1 parent 75e7cf5 commit 9485afb

13 files changed

+94
-222
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- // MIR for `cannot_opt_generic` before RemoveUnneededDrops
2+
+ // MIR for `cannot_opt_generic` after RemoveUnneededDrops
3+
4+
fn cannot_opt_generic(_1: T) -> () {
5+
let mut _0: ();
6+
7+
bb0: {
8+
drop(_1) -> [return: bb1, unwind unreachable];
9+
}
10+
11+
bb1: {
12+
return;
13+
}
14+
}
15+

tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/mir-opt/remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- // MIR for `dont_opt` before RemoveUnneededDrops
2+
+ // MIR for `dont_opt` after RemoveUnneededDrops
3+
4+
fn dont_opt(_1: Vec<bool>) -> () {
5+
let mut _0: ();
6+
7+
bb0: {
8+
drop(_1) -> [return: bb1, unwind unreachable];
9+
}
10+
11+
bb1: {
12+
return;
13+
}
14+
}
15+

tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/mir-opt/remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- // MIR for `opt` before RemoveUnneededDrops
2+
+ // MIR for `opt` after RemoveUnneededDrops
3+
4+
fn opt(_1: bool) -> () {
5+
let mut _0: ();
6+
7+
bb0: {
8+
- drop(_1) -> [return: bb1, unwind unreachable];
9+
- }
10+
-
11+
- bb1: {
12+
return;
13+
}
14+
}
15+

tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- // MIR for `opt_generic_copy` before RemoveUnneededDrops
2+
+ // MIR for `opt_generic_copy` after RemoveUnneededDrops
3+
4+
fn opt_generic_copy(_1: T) -> () {
5+
let mut _0: ();
6+
7+
bb0: {
8+
- drop(_1) -> [return: bb1, unwind unreachable];
9+
- }
10+
-
11+
- bb1: {
12+
return;
13+
}
14+
}
15+

tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff

Lines changed: 0 additions & 26 deletions
This file was deleted.

tests/mir-opt/remove_unneeded_drops.rs

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,56 @@
1-
// skip-filecheck
2-
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
1+
//@ test-mir-pass: RemoveUnneededDrops
2+
3+
#![feature(custom_mir, core_intrinsics)]
4+
use std::intrinsics::mir::*;
5+
36
// EMIT_MIR remove_unneeded_drops.opt.RemoveUnneededDrops.diff
7+
#[custom_mir(dialect = "runtime")]
48
fn opt(x: bool) {
5-
drop(x);
9+
// CHECK-LABEL: fn opt(
10+
// CHECK-NOT: drop(
11+
mir! {
12+
{ Drop(x, ReturnTo(bb1), UnwindUnreachable()) }
13+
bb1 = { Return() }
14+
}
615
}
716

817
// EMIT_MIR remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff
18+
#[custom_mir(dialect = "runtime")]
919
fn dont_opt(x: Vec<bool>) {
10-
drop(x);
20+
// CHECK-LABEL: fn dont_opt(
21+
// CHECK: drop(
22+
mir! {
23+
{ Drop(x, ReturnTo(bb1), UnwindUnreachable()) }
24+
bb1 = { Return() }
25+
}
1126
}
1227

1328
// EMIT_MIR remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff
29+
#[custom_mir(dialect = "runtime")]
1430
fn opt_generic_copy<T: Copy>(x: T) {
15-
drop(x);
31+
// CHECK-LABEL: fn opt_generic_copy(
32+
// CHECK-NOT: drop(
33+
mir! {
34+
{ Drop(x, ReturnTo(bb1), UnwindUnreachable()) }
35+
bb1 = { Return() }
36+
}
1637
}
1738

1839
// EMIT_MIR remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff
1940
// since the pass is not running on monomorphisized code,
2041
// we can't (but probably should) optimize this
42+
#[custom_mir(dialect = "runtime")]
2143
fn cannot_opt_generic<T>(x: T) {
22-
drop(x);
44+
// CHECK-LABEL: fn cannot_opt_generic(
45+
// CHECK: drop(
46+
mir! {
47+
{ Drop(x, ReturnTo(bb1), UnwindUnreachable()) }
48+
bb1 = { Return() }
49+
}
2350
}
2451

2552
fn main() {
53+
// CHECK-LABEL: fn main(
2654
opt(true);
2755
opt_generic_copy(42);
2856
cannot_opt_generic(42);

0 commit comments

Comments
 (0)