summaryrefslogtreecommitdiffstats
path: root/tests/mir-opt/box_expr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mir-opt/box_expr.rs')
-rw-r--r--tests/mir-opt/box_expr.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/tests/mir-opt/box_expr.rs b/tests/mir-opt/box_expr.rs
index 780420bda..0421e232a 100644
--- a/tests/mir-opt/box_expr.rs
+++ b/tests/mir-opt/box_expr.rs
@@ -1,9 +1,22 @@
-// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+// unit-test: ElaborateDrops
+// needs-unwind
#![feature(rustc_attrs, stmt_expr_attributes)]
-// EMIT_MIR box_expr.main.ElaborateDrops.before.mir
+// EMIT_MIR box_expr.main.ElaborateDrops.diff
fn main() {
+ // CHECK-LABEL: fn main(
+ // CHECK: [[box:_.*]] = ShallowInitBox(
+ // CHECK: [[ptr:_.*]] = ((([[box]].0: std::ptr::Unique<S>).0: std::ptr::NonNull<S>).0: *const S);
+ // CHECK: (*[[ptr]]) = S::new() -> [return: [[ret:bb.*]], unwind: [[unwind:bb.*]]];
+ // CHECK: [[ret]]: {
+ // CHECK: [[box2:_.*]] = move [[box]];
+ // CHECK: [[box3:_.*]] = move [[box2]];
+ // CHECK: std::mem::drop::<Box<S>>(move [[box3]])
+ // CHECK: [[unwind]] (cleanup): {
+ // CHECK: [[boxref:_.*]] = &mut [[box]];
+ // CHECK: <Box<S> as Drop>::drop(move [[boxref]])
+
let x = #[rustc_box]
Box::new(S::new());
drop(x);