1
Fork 0

Fix dest-prop mir-opt tests

This commit is contained in:
Jonas Schievink 2020-09-12 15:10:51 +02:00
parent 402f863d8a
commit 665a98d21f
8 changed files with 25 additions and 81 deletions

View file

@ -17,12 +17,9 @@
bb0: { bb0: {
- StorageLive(_1); // scope 0 at $DIR/branch.rs:13:9: 13:10 - StorageLive(_1); // scope 0 at $DIR/branch.rs:13:9: 13:10
- _1 = const val() -> bb1; // scope 0 at $DIR/branch.rs:13:13: 13:18 - _1 = val() -> bb1; // scope 0 at $DIR/branch.rs:13:13: 13:18
+ nop; // scope 0 at $DIR/branch.rs:13:9: 13:10 + nop; // scope 0 at $DIR/branch.rs:13:9: 13:10
+ _2 = const val() -> bb1; // scope 0 at $DIR/branch.rs:13:13: 13:18 + _2 = val() -> bb1; // scope 0 at $DIR/branch.rs:13:13: 13:18
// ty::Const
// + ty: fn() -> i32 {val}
// + val: Value(Scalar(<ZST>))
// mir::Constant // mir::Constant
// + span: $DIR/branch.rs:13:13: 13:16 // + span: $DIR/branch.rs:13:13: 13:16
// + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) } // + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) }
@ -32,10 +29,7 @@
- StorageLive(_2); // scope 1 at $DIR/branch.rs:15:9: 15:10 - StorageLive(_2); // scope 1 at $DIR/branch.rs:15:9: 15:10
+ nop; // scope 1 at $DIR/branch.rs:15:9: 15:10 + nop; // scope 1 at $DIR/branch.rs:15:9: 15:10
StorageLive(_3); // scope 1 at $DIR/branch.rs:15:16: 15:22 StorageLive(_3); // scope 1 at $DIR/branch.rs:15:16: 15:22
_3 = const cond() -> bb2; // scope 1 at $DIR/branch.rs:15:16: 15:22 _3 = cond() -> bb2; // scope 1 at $DIR/branch.rs:15:16: 15:22
// ty::Const
// + ty: fn() -> bool {cond}
// + val: Value(Scalar(<ZST>))
// mir::Constant // mir::Constant
// + span: $DIR/branch.rs:15:16: 15:20 // + span: $DIR/branch.rs:15:16: 15:20
// + literal: Const { ty: fn() -> bool {cond}, val: Value(Scalar(<ZST>)) } // + literal: Const { ty: fn() -> bool {cond}, val: Value(Scalar(<ZST>)) }
@ -47,10 +41,7 @@
bb3: { bb3: {
StorageLive(_4); // scope 1 at $DIR/branch.rs:18:9: 18:14 StorageLive(_4); // scope 1 at $DIR/branch.rs:18:9: 18:14
_4 = const val() -> bb5; // scope 1 at $DIR/branch.rs:18:9: 18:14 _4 = val() -> bb5; // scope 1 at $DIR/branch.rs:18:9: 18:14
// ty::Const
// + ty: fn() -> i32 {val}
// + val: Value(Scalar(<ZST>))
// mir::Constant // mir::Constant
// + span: $DIR/branch.rs:18:9: 18:12 // + span: $DIR/branch.rs:18:9: 18:12
// + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) } // + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) }
@ -72,12 +63,6 @@
bb6: { bb6: {
StorageDead(_3); // scope 1 at $DIR/branch.rs:20:6: 20:7 StorageDead(_3); // scope 1 at $DIR/branch.rs:20:6: 20:7
_0 = const (); // scope 0 at $DIR/branch.rs:12:11: 21:2 _0 = const (); // scope 0 at $DIR/branch.rs:12:11: 21:2
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/branch.rs:12:11: 21:2
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
- StorageDead(_2); // scope 1 at $DIR/branch.rs:21:1: 21:2 - StorageDead(_2); // scope 1 at $DIR/branch.rs:21:1: 21:2
- StorageDead(_1); // scope 0 at $DIR/branch.rs:21:1: 21:2 - StorageDead(_1); // scope 0 at $DIR/branch.rs:21:1: 21:2
+ nop; // scope 1 at $DIR/branch.rs:21:1: 21:2 + nop; // scope 1 at $DIR/branch.rs:21:1: 21:2

View file

@ -8,7 +8,7 @@ fn cond() -> bool {
true true
} }
// EMIT_MIR rustc.main.DestinationPropagation.diff // EMIT_MIR branch.main.DestinationPropagation.diff
fn main() { fn main() {
let x = val(); let x = val();

View file

@ -19,7 +19,7 @@
- debug z => _3; // in scope 3 at $DIR/cycle.rs:11:9: 11:10 - debug z => _3; // in scope 3 at $DIR/cycle.rs:11:9: 11:10
+ debug z => _4; // in scope 3 at $DIR/cycle.rs:11:9: 11:10 + debug z => _4; // in scope 3 at $DIR/cycle.rs:11:9: 11:10
scope 4 { scope 4 {
debug _x => _6; // in scope 4 at $SRC_DIR/libcore/mem/mod.rs:LL:COL debug _x => _6; // in scope 4 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
} }
} }
} }
@ -27,12 +27,9 @@
bb0: { bb0: {
- StorageLive(_1); // scope 0 at $DIR/cycle.rs:9:9: 9:14 - StorageLive(_1); // scope 0 at $DIR/cycle.rs:9:9: 9:14
- _1 = const val() -> bb1; // scope 0 at $DIR/cycle.rs:9:17: 9:22 - _1 = val() -> bb1; // scope 0 at $DIR/cycle.rs:9:17: 9:22
+ nop; // scope 0 at $DIR/cycle.rs:9:9: 9:14 + nop; // scope 0 at $DIR/cycle.rs:9:9: 9:14
+ _4 = const val() -> bb1; // scope 0 at $DIR/cycle.rs:9:17: 9:22 + _4 = val() -> bb1; // scope 0 at $DIR/cycle.rs:9:17: 9:22
// ty::Const
// + ty: fn() -> i32 {val}
// + val: Value(Scalar(<ZST>))
// mir::Constant // mir::Constant
// + span: $DIR/cycle.rs:9:17: 9:20 // + span: $DIR/cycle.rs:9:17: 9:20
// + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) } // + literal: Const { ty: fn() -> i32 {val}, val: Value(Scalar(<ZST>)) }
@ -59,26 +56,14 @@
StorageLive(_6); // scope 3 at $DIR/cycle.rs:14:10: 14:11 StorageLive(_6); // scope 3 at $DIR/cycle.rs:14:10: 14:11
- _6 = _1; // scope 3 at $DIR/cycle.rs:14:10: 14:11 - _6 = _1; // scope 3 at $DIR/cycle.rs:14:10: 14:11
+ _6 = _4; // scope 3 at $DIR/cycle.rs:14:10: 14:11 + _6 = _4; // scope 3 at $DIR/cycle.rs:14:10: 14:11
_5 = const (); // scope 4 at $SRC_DIR/libcore/mem/mod.rs:LL:COL _5 = const (); // scope 4 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
// ty::Const drop(_6) -> bb2; // scope 4 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $SRC_DIR/libcore/mem/mod.rs:LL:COL
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
drop(_6) -> bb2; // scope 4 at $SRC_DIR/libcore/mem/mod.rs:LL:COL
} }
bb2: { bb2: {
StorageDead(_6); // scope 3 at $DIR/cycle.rs:14:11: 14:12 StorageDead(_6); // scope 3 at $DIR/cycle.rs:14:11: 14:12
StorageDead(_5); // scope 3 at $DIR/cycle.rs:14:12: 14:13 StorageDead(_5); // scope 3 at $DIR/cycle.rs:14:12: 14:13
_0 = const (); // scope 0 at $DIR/cycle.rs:8:11: 15:2 _0 = const (); // scope 0 at $DIR/cycle.rs:8:11: 15:2
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/cycle.rs:8:11: 15:2
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
- StorageDead(_3); // scope 2 at $DIR/cycle.rs:15:1: 15:2 - StorageDead(_3); // scope 2 at $DIR/cycle.rs:15:1: 15:2
- StorageDead(_2); // scope 1 at $DIR/cycle.rs:15:1: 15:2 - StorageDead(_2); // scope 1 at $DIR/cycle.rs:15:1: 15:2
- StorageDead(_1); // scope 0 at $DIR/cycle.rs:15:1: 15:2 - StorageDead(_1); // scope 0 at $DIR/cycle.rs:15:1: 15:2

View file

@ -4,7 +4,7 @@ fn val() -> i32 {
1 1
} }
// EMIT_MIR rustc.main.DestinationPropagation.diff // EMIT_MIR cycle.main.DestinationPropagation.diff
fn main() { fn main() {
let mut x = val(); let mut x = val();
let y = x; let y = x;

View file

@ -16,35 +16,24 @@
bb0: { bb0: {
- StorageLive(_2); // scope 0 at $DIR/simple.rs:5:9: 5:16 - StorageLive(_2); // scope 0 at $DIR/simple.rs:5:9: 5:16
- _2 = [const 0u8; 1024]; // scope 0 at $DIR/simple.rs:5:19: 5:28 - _2 = [const 0_u8; 1024]; // scope 0 at $DIR/simple.rs:5:19: 5:28
+ nop; // scope 0 at $DIR/simple.rs:5:9: 5:16 + nop; // scope 0 at $DIR/simple.rs:5:9: 5:16
+ _0 = [const 0u8; 1024]; // scope 0 at $DIR/simple.rs:5:19: 5:28 + _0 = [const 0_u8; 1024]; // scope 0 at $DIR/simple.rs:5:19: 5:28
// ty::Const
// + ty: u8
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $DIR/simple.rs:5:20: 5:21
// + literal: Const { ty: u8, val: Value(Scalar(0x00)) }
StorageLive(_3); // scope 1 at $DIR/simple.rs:6:5: 6:19 StorageLive(_3); // scope 1 at $DIR/simple.rs:6:5: 6:19
StorageLive(_4); // scope 1 at $DIR/simple.rs:6:5: 6:9 StorageLive(_4); // scope 1 at $DIR/simple.rs:6:5: 6:9
_4 = _1; // scope 1 at $DIR/simple.rs:6:5: 6:9 _4 = _1; // scope 1 at $DIR/simple.rs:6:5: 6:9
- StorageLive(_5); // scope 1 at $DIR/simple.rs:6:10: 6:18 StorageLive(_5); // scope 1 at $DIR/simple.rs:6:10: 6:18
- StorageLive(_6); // scope 1 at $DIR/simple.rs:6:10: 6:18 StorageLive(_6); // scope 1 at $DIR/simple.rs:6:10: 6:18
- _6 = &mut _2; // scope 1 at $DIR/simple.rs:6:10: 6:18 - _6 = &mut _2; // scope 1 at $DIR/simple.rs:6:10: 6:18
- _5 = move _6; // scope 1 at $DIR/simple.rs:6:10: 6:18 + _6 = &mut _0; // scope 1 at $DIR/simple.rs:6:10: 6:18
+ nop; // scope 1 at $DIR/simple.rs:6:10: 6:18 _5 = &mut (*_6); // scope 1 at $DIR/simple.rs:6:10: 6:18
+ nop; // scope 1 at $DIR/simple.rs:6:10: 6:18
+ _5 = &mut _0; // scope 1 at $DIR/simple.rs:6:10: 6:18
+ nop; // scope 1 at $DIR/simple.rs:6:10: 6:18
_3 = move _4(move _5) -> bb1; // scope 1 at $DIR/simple.rs:6:5: 6:19 _3 = move _4(move _5) -> bb1; // scope 1 at $DIR/simple.rs:6:5: 6:19
} }
bb1: { bb1: {
- StorageDead(_5); // scope 1 at $DIR/simple.rs:6:18: 6:19 StorageDead(_5); // scope 1 at $DIR/simple.rs:6:18: 6:19
+ nop; // scope 1 at $DIR/simple.rs:6:18: 6:19
StorageDead(_4); // scope 1 at $DIR/simple.rs:6:18: 6:19 StorageDead(_4); // scope 1 at $DIR/simple.rs:6:18: 6:19
- StorageDead(_6); // scope 1 at $DIR/simple.rs:6:19: 6:20 StorageDead(_6); // scope 1 at $DIR/simple.rs:6:19: 6:20
+ nop; // scope 1 at $DIR/simple.rs:6:19: 6:20
StorageDead(_3); // scope 1 at $DIR/simple.rs:6:19: 6:20 StorageDead(_3); // scope 1 at $DIR/simple.rs:6:19: 6:20
- _0 = _2; // scope 1 at $DIR/simple.rs:7:5: 7:8 - _0 = _2; // scope 1 at $DIR/simple.rs:7:5: 7:8
- StorageDead(_2); // scope 0 at $DIR/simple.rs:8:1: 8:2 - StorageDead(_2); // scope 0 at $DIR/simple.rs:8:1: 8:2

View file

@ -1,6 +1,6 @@
//! Copy of `nrvo-simple.rs`, to ensure that full dest-prop handles it too. //! Copy of `nrvo-simple.rs`, to ensure that full dest-prop handles it too.
// EMIT_MIR rustc.nrvo.DestinationPropagation.diff // EMIT_MIR simple.nrvo.DestinationPropagation.diff
fn nrvo(init: fn(&mut [u8; 1024])) -> [u8; 1024] { fn nrvo(init: fn(&mut [u8; 1024])) -> [u8; 1024] {
let mut buf = [0; 1024]; let mut buf = [0; 1024];
init(&mut buf); init(&mut buf);

View file

@ -12,17 +12,14 @@
scope 2 { scope 2 {
} }
scope 3 { scope 3 {
debug _x => _4; // in scope 3 at $SRC_DIR/libcore/mem/mod.rs:LL:COL debug _x => _4; // in scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
} }
} }
bb0: { bb0: {
StorageLive(_1); // scope 0 at $DIR/union.rs:13:9: 13:11 StorageLive(_1); // scope 0 at $DIR/union.rs:13:9: 13:11
StorageLive(_2); // scope 0 at $DIR/union.rs:13:23: 13:28 StorageLive(_2); // scope 0 at $DIR/union.rs:13:23: 13:28
_2 = const val() -> bb1; // scope 0 at $DIR/union.rs:13:23: 13:28 _2 = val() -> bb1; // scope 0 at $DIR/union.rs:13:23: 13:28
// ty::Const
// + ty: fn() -> u32 {val}
// + val: Value(Scalar(<ZST>))
// mir::Constant // mir::Constant
// + span: $DIR/union.rs:13:23: 13:26 // + span: $DIR/union.rs:13:23: 13:26
// + literal: Const { ty: fn() -> u32 {val}, val: Value(Scalar(<ZST>)) } // + literal: Const { ty: fn() -> u32 {val}, val: Value(Scalar(<ZST>)) }
@ -34,26 +31,14 @@
StorageLive(_3); // scope 1 at $DIR/union.rs:15:5: 15:27 StorageLive(_3); // scope 1 at $DIR/union.rs:15:5: 15:27
StorageLive(_4); // scope 1 at $DIR/union.rs:15:10: 15:26 StorageLive(_4); // scope 1 at $DIR/union.rs:15:10: 15:26
_4 = (_1.0: u32); // scope 2 at $DIR/union.rs:15:19: 15:24 _4 = (_1.0: u32); // scope 2 at $DIR/union.rs:15:19: 15:24
_3 = const (); // scope 3 at $SRC_DIR/libcore/mem/mod.rs:LL:COL _3 = const (); // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
// ty::Const drop(_4) -> bb2; // scope 3 at $SRC_DIR/core/src/mem/mod.rs:LL:COL
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $SRC_DIR/libcore/mem/mod.rs:LL:COL
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
drop(_4) -> bb2; // scope 3 at $SRC_DIR/libcore/mem/mod.rs:LL:COL
} }
bb2: { bb2: {
StorageDead(_4); // scope 1 at $DIR/union.rs:15:26: 15:27 StorageDead(_4); // scope 1 at $DIR/union.rs:15:26: 15:27
StorageDead(_3); // scope 1 at $DIR/union.rs:15:27: 15:28 StorageDead(_3); // scope 1 at $DIR/union.rs:15:27: 15:28
_0 = const (); // scope 0 at $DIR/union.rs:8:11: 16:2 _0 = const (); // scope 0 at $DIR/union.rs:8:11: 16:2
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/union.rs:8:11: 16:2
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
StorageDead(_1); // scope 0 at $DIR/union.rs:16:1: 16:2 StorageDead(_1); // scope 0 at $DIR/union.rs:16:1: 16:2
return; // scope 0 at $DIR/union.rs:16:2: 16:2 return; // scope 0 at $DIR/union.rs:16:2: 16:2
} }

View file

@ -4,7 +4,7 @@ fn val() -> u32 {
1 1
} }
// EMIT_MIR rustc.main.DestinationPropagation.diff // EMIT_MIR union.main.DestinationPropagation.diff
fn main() { fn main() {
union Un { union Un {
us: u32, us: u32,