Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 6316601

Browse files
committed
Added regression test for literal propagation and for scalar pair propagation
1 parent 2d03399 commit 6316601

File tree

4 files changed

+121
-0
lines changed

4 files changed

+121
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// EMIT_MIR rustc.main.ConstProp.diff
2+
fn main() {
3+
let x = 1;
4+
consume(x);
5+
}
6+
7+
#[inline(never)]
8+
fn consume(_: u32) { }
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
- // MIR for `main` before ConstProp
2+
+ // MIR for `main` after ConstProp
3+
4+
fn main() -> () {
5+
let mut _0: (); // return place in scope 0 at $DIR/scalar_literal_propagation.rs:2:11: 2:11
6+
let _1: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
7+
let _2: (); // in scope 0 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
8+
let mut _3: u32; // in scope 0 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
9+
scope 1 {
10+
debug x => _1; // in scope 1 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
11+
}
12+
13+
bb0: {
14+
StorageLive(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:3:9: 3:10
15+
_1 = const 1u32; // scope 0 at $DIR/scalar_literal_propagation.rs:3:13: 3:14
16+
// ty::Const
17+
// + ty: u32
18+
// + val: Value(Scalar(0x00000001))
19+
// mir::Constant
20+
// + span: $DIR/scalar_literal_propagation.rs:3:13: 3:14
21+
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
22+
StorageLive(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
23+
StorageLive(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
24+
_3 = _1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:13: 4:14
25+
_2 = const consume(move _3) -> bb1; // scope 1 at $DIR/scalar_literal_propagation.rs:4:5: 4:15
26+
// ty::Const
27+
// + ty: fn(u32) {consume}
28+
// + val: Value(Scalar(<ZST>))
29+
// mir::Constant
30+
// + span: $DIR/scalar_literal_propagation.rs:4:5: 4:12
31+
// + literal: Const { ty: fn(u32) {consume}, val: Value(Scalar(<ZST>)) }
32+
}
33+
34+
bb1: {
35+
StorageDead(_3); // scope 1 at $DIR/scalar_literal_propagation.rs:4:14: 4:15
36+
StorageDead(_2); // scope 1 at $DIR/scalar_literal_propagation.rs:4:15: 4:16
37+
_0 = const (); // scope 0 at $DIR/scalar_literal_propagation.rs:2:11: 5:2
38+
// ty::Const
39+
// + ty: ()
40+
// + val: Value(Scalar(<ZST>))
41+
// mir::Constant
42+
// + span: $DIR/scalar_literal_propagation.rs:2:11: 5:2
43+
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
44+
StorageDead(_1); // scope 0 at $DIR/scalar_literal_propagation.rs:5:1: 5:2
45+
return; // scope 0 at $DIR/scalar_literal_propagation.rs:5:2: 5:2
46+
}
47+
}
48+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// EMIT_MIR rustc.main.ConstProp.diff
2+
fn main() {
3+
let x = (1, 2);
4+
5+
consume(x);
6+
}
7+
8+
#[inline(never)]
9+
fn consume(_: (u32, u32)) { }
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
- // MIR for `main` before ConstProp
2+
+ // MIR for `main` after ConstProp
3+
4+
fn main() -> () {
5+
let mut _0: (); // return place in scope 0 at $DIR/tuple_literal_propagation.rs:2:11: 2:11
6+
let _1: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
7+
let _2: (); // in scope 0 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
8+
let mut _3: (u32, u32); // in scope 0 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
9+
scope 1 {
10+
debug x => _1; // in scope 1 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
11+
}
12+
13+
bb0: {
14+
StorageLive(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:3:9: 3:10
15+
_1 = (const 1u32, const 2u32); // scope 0 at $DIR/tuple_literal_propagation.rs:3:13: 3:19
16+
// ty::Const
17+
// + ty: u32
18+
// + val: Value(Scalar(0x00000001))
19+
// mir::Constant
20+
- // + span: $DIR/tuple_literal_propagation.rs:3:14: 3:15
21+
+ // + span: $DIR/tuple_literal_propagation.rs:3:13: 3:19
22+
// + literal: Const { ty: u32, val: Value(Scalar(0x00000001)) }
23+
// ty::Const
24+
// + ty: u32
25+
// + val: Value(Scalar(0x00000002))
26+
// mir::Constant
27+
- // + span: $DIR/tuple_literal_propagation.rs:3:17: 3:18
28+
+ // + span: $DIR/tuple_literal_propagation.rs:3:13: 3:19
29+
// + literal: Const { ty: u32, val: Value(Scalar(0x00000002)) }
30+
StorageLive(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
31+
StorageLive(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
32+
_3 = _1; // scope 1 at $DIR/tuple_literal_propagation.rs:5:13: 5:14
33+
_2 = const consume(move _3) -> bb1; // scope 1 at $DIR/tuple_literal_propagation.rs:5:5: 5:15
34+
// ty::Const
35+
// + ty: fn((u32, u32)) {consume}
36+
// + val: Value(Scalar(<ZST>))
37+
// mir::Constant
38+
// + span: $DIR/tuple_literal_propagation.rs:5:5: 5:12
39+
// + literal: Const { ty: fn((u32, u32)) {consume}, val: Value(Scalar(<ZST>)) }
40+
}
41+
42+
bb1: {
43+
StorageDead(_3); // scope 1 at $DIR/tuple_literal_propagation.rs:5:14: 5:15
44+
StorageDead(_2); // scope 1 at $DIR/tuple_literal_propagation.rs:5:15: 5:16
45+
_0 = const (); // scope 0 at $DIR/tuple_literal_propagation.rs:2:11: 6:2
46+
// ty::Const
47+
// + ty: ()
48+
// + val: Value(Scalar(<ZST>))
49+
// mir::Constant
50+
// + span: $DIR/tuple_literal_propagation.rs:2:11: 6:2
51+
// + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
52+
StorageDead(_1); // scope 0 at $DIR/tuple_literal_propagation.rs:6:1: 6:2
53+
return; // scope 0 at $DIR/tuple_literal_propagation.rs:6:2: 6:2
54+
}
55+
}
56+

0 commit comments

Comments
 (0)