Added regression test for literal propagation and for scalar pair propagation

This commit is contained in:
Félix Fischer 2020-04-22 21:39:47 -04:00
parent 2d03399f53
commit 6316601ec4
4 changed files with 121 additions and 0 deletions

View file

@ -0,0 +1,8 @@
// EMIT_MIR rustc.main.ConstProp.diff
fn main() {
let x = 1;
consume(x);
}
#[inline(never)]
fn consume(_: u32) { }

View file

@ -0,0 +1,48 @@
- // MIR for `main` before ConstProp
+ // MIR for `main` after ConstProp
fn main() -> () {
let mut _0: (); // return place in scope 0 at $DIR/scalar_literal_propagation.rs:2:11: 2:11
let _1: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
let _2: (); // in scope 0 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
let mut _3: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
scope 1 {
debug x => _1; // in scope 1 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
}
bb0: {
StorageLive(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
_1 = const 1u32; // scope 0 at $DIR/scalar_literal_propagation.rs:3:13: 3:14
// ty::Const
// + ty: u32
// + val: Value(Scalar(0x00000001))
// mir::Constant
// + span: $DIR/scalar_literal_propagation.rs:3:13: 3:14
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
StorageLive(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
StorageLive(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
_3 = _1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
_2 = const consume(move _3) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
// ty::Const
// + ty: fn(u32) {consume}
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/scalar_literal_propagation.rs:4:5: 4:12
// + literal: Const { ty: fn(u32) {consume}, val: Value(Scalar(<ZST>)) }
}
bb1: {
StorageDead(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:4:14: 4:15
StorageDead(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:4:15: 4:16
_0 = const (); // scope 0 at $DIR/scalar_literal_propagation.rs:2:11: 5:2
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/scalar_literal_propagation.rs:2:11: 5:2
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
StorageDead(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:5:1: 5:2
return; // scope 0 at $DIR/scalar_literal_propagation.rs:5:2: 5:2
}
}

View file

@ -0,0 +1,9 @@
// EMIT_MIR rustc.main.ConstProp.diff
fn main() {
let x = (1, 2);
consume(x);
}
#[inline(never)]
fn consume(_: (u32, u32)) { }

View file

@ -0,0 +1,56 @@
- // MIR for `main` before ConstProp
+ // MIR for `main` after ConstProp
fn main() -> () {
let mut _0: (); // return place in scope 0 at $DIR/tuple_literal_propagation.rs:2:11: 2:11
let _1: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
let _2: (); // in scope 0 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
let mut _3: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
scope 1 {
debug x => _1; // in scope 1 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
}
bb0: {
StorageLive(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
_1 = (const 1u32, const 2u32); // scope 0 at $DIR/tuple_literal_propagation.rs:3:13: 3:19
// ty::Const
// + ty: u32
// + val: Value(Scalar(0x00000001))
// mir::Constant
- // + span: $DIR/tuple_literal_propagation.rs:3:14: 3:15
+ // + span: $DIR/tuple_literal_propagation.rs:3:13: 3:19
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
// ty::Const
// + ty: u32
// + val: Value(Scalar(0x00000002))
// mir::Constant
- // + span: $DIR/tuple_literal_propagation.rs:3:17: 3:18
+ // + span: $DIR/tuple_literal_propagation.rs:3:13: 3:19
// + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
StorageLive(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
StorageLive(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
_3 = _1; // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
_2 = const consume(move _3) -> bb1; // scope 1 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
// ty::Const
// + ty: fn((u32, u32)) {consume}
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/tuple_literal_propagation.rs:5:5: 5:12
// + literal: Const { ty: fn((u32, u32)) {consume}, val: Value(Scalar(<ZST>)) }
}
bb1: {
StorageDead(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:5:14: 5:15
StorageDead(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:5:15: 5:16
_0 = const (); // scope 0 at $DIR/tuple_literal_propagation.rs:2:11: 6:2
// ty::Const
// + ty: ()
// + val: Value(Scalar(<ZST>))
// mir::Constant
// + span: $DIR/tuple_literal_propagation.rs:2:11: 6:2
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
StorageDead(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:6:1: 6:2
return; // scope 0 at $DIR/tuple_literal_propagation.rs:6:2: 6:2
}
}