Skip to content

Commit 109d5c7

Browse files
committed
add MIR artifacts
1 parent d61f95f commit 109d5c7

13 files changed

+626
-3
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
- // MIR for `array_bound` before InstCombine
2+
+ // MIR for `array_bound` after InstCombine
3+
4+
fn array_bound(_1: usize, _2: &[u8; N]) -> u8 {
5+
debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:6:36: 6:41
6+
debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:6:50: 6:55
7+
let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:6:70: 6:72
8+
let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
9+
let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
10+
let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
11+
let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
12+
let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
13+
let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
14+
let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
15+
let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
16+
let mut _11: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
17+
18+
bb0: {
19+
StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
20+
StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
21+
_4 = _1; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
22+
StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
23+
StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
24+
StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
25+
- _7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
26+
+ _7 = _2; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
27+
StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
28+
_11 = _7; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
29+
_6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
30+
StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:7:20: 7:21
31+
- _5 = Len((*_11)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
32+
+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
33+
StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
34+
StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
35+
_3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
36+
StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
37+
StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
38+
switchInt(move _3) -> [false: bb3, otherwise: bb1]; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
39+
}
40+
41+
bb1: {
42+
StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
43+
_8 = _1; // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
44+
- _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
45+
+ _9 = const N; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
46+
_10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
47+
assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb2; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
48+
}
49+
50+
bb2: {
51+
_0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
52+
StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:9:5: 9:6
53+
goto -> bb4; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
54+
}
55+
56+
bb3: {
57+
_0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:10:9: 10:11
58+
goto -> bb4; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
59+
}
60+
61+
bb4: {
62+
StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:11:5: 11:6
63+
return; // scope 0 at $DIR/lower_array_len.rs:12:2: 12:2
64+
}
65+
}
66+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
- // MIR for `array_bound` before NormalizeArrayLen
2+
+ // MIR for `array_bound` after NormalizeArrayLen
3+
4+
fn array_bound(_1: usize, _2: &[u8; N]) -> u8 {
5+
debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:6:36: 6:41
6+
debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:6:50: 6:55
7+
let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:6:70: 6:72
8+
let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
9+
let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
10+
let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
11+
let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
12+
let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
13+
let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
14+
let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
15+
let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
16+
+ let mut _11: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
17+
18+
bb0: {
19+
StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
20+
StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
21+
_4 = _1; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
22+
StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
23+
StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
24+
StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
25+
_7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
26+
+ StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
27+
+ _11 = _7; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
28+
_6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
29+
StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:7:20: 7:21
30+
- _5 = Len((*_6)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
31+
+ _5 = Len((*_11)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
32+
+ StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
33+
goto -> bb1; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
34+
}
35+
36+
bb1: {
37+
StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
38+
_3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
39+
StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
40+
StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
41+
switchInt(move _3) -> [false: bb4, otherwise: bb2]; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
42+
}
43+
44+
bb2: {
45+
StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
46+
_8 = _1; // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
47+
_9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
48+
_10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
49+
assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb3; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
50+
}
51+
52+
bb3: {
53+
_0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
54+
StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:9:5: 9:6
55+
goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
56+
}
57+
58+
bb4: {
59+
_0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:10:9: 10:11
60+
goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
61+
}
62+
63+
bb5: {
64+
StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:11:5: 11:6
65+
return; // scope 0 at $DIR/lower_array_len.rs:12:2: 12:2
66+
}
67+
}
68+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
- // MIR for `array_bound` before SimplifyLocals
2+
+ // MIR for `array_bound` after SimplifyLocals
3+
4+
fn array_bound(_1: usize, _2: &[u8; N]) -> u8 {
5+
debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:6:36: 6:41
6+
debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:6:50: 6:55
7+
let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:6:70: 6:72
8+
let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
9+
let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
10+
let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
11+
- let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
12+
- let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
13+
- let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
14+
- let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
15+
- let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
16+
- let mut _11: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
17+
+ let _6: usize; // in scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
18+
+ let mut _7: usize; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
19+
+ let mut _8: bool; // in scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
20+
21+
bb0: {
22+
StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
23+
StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
24+
_4 = _1; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:13
25+
StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
26+
- StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
27+
- StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
28+
- _7 = _2; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
29+
- StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
30+
- _11 = _7; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
31+
- _6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
32+
- StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:7:20: 7:21
33+
_5 = const N; // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
34+
- StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:7:16: 7:27
35+
- StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
36+
_3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
37+
StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
38+
StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:7:26: 7:27
39+
switchInt(move _3) -> [false: bb3, otherwise: bb1]; // scope 0 at $DIR/lower_array_len.rs:7:8: 7:27
40+
}
41+
42+
bb1: {
43+
- StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
44+
- _8 = _1; // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
45+
- _9 = const N; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
46+
- _10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
47+
- assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb2; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
48+
+ StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
49+
+ _6 = _1; // scope 0 at $DIR/lower_array_len.rs:8:15: 8:20
50+
+ _7 = const N; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
51+
+ _8 = Lt(_6, _7); // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
52+
+ assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> bb2; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
53+
}
54+
55+
bb2: {
56+
- _0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
57+
- StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:9:5: 9:6
58+
+ _0 = (*_2)[_6]; // scope 0 at $DIR/lower_array_len.rs:8:9: 8:21
59+
+ StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:9:5: 9:6
60+
goto -> bb4; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
61+
}
62+
63+
bb3: {
64+
_0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:10:9: 10:11
65+
goto -> bb4; // scope 0 at $DIR/lower_array_len.rs:7:5: 11:6
66+
}
67+
68+
bb4: {
69+
StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:11:5: 11:6
70+
return; // scope 0 at $DIR/lower_array_len.rs:12:2: 12:2
71+
}
72+
}
73+
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
- // MIR for `array_bound_mut` before InstCombine
2+
+ // MIR for `array_bound_mut` after InstCombine
3+
4+
fn array_bound_mut(_1: usize, _2: &mut [u8; N]) -> u8 {
5+
debug index => _1; // in scope 0 at $DIR/lower_array_len.rs:17:40: 17:45
6+
debug slice => _2; // in scope 0 at $DIR/lower_array_len.rs:17:54: 17:59
7+
let mut _0: u8; // return place in scope 0 at $DIR/lower_array_len.rs:17:78: 17:80
8+
let mut _3: bool; // in scope 0 at $DIR/lower_array_len.rs:18:8: 18:27
9+
let mut _4: usize; // in scope 0 at $DIR/lower_array_len.rs:18:8: 18:13
10+
let mut _5: usize; // in scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
11+
let mut _6: &[u8]; // in scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
12+
let mut _7: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
13+
let _8: usize; // in scope 0 at $DIR/lower_array_len.rs:19:15: 19:20
14+
let mut _9: usize; // in scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
15+
let mut _10: bool; // in scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
16+
let _11: usize; // in scope 0 at $DIR/lower_array_len.rs:21:15: 21:16
17+
let mut _12: usize; // in scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
18+
let mut _13: bool; // in scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
19+
let mut _14: &[u8; N]; // in scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
20+
21+
bb0: {
22+
StorageLive(_3); // scope 0 at $DIR/lower_array_len.rs:18:8: 18:27
23+
StorageLive(_4); // scope 0 at $DIR/lower_array_len.rs:18:8: 18:13
24+
_4 = _1; // scope 0 at $DIR/lower_array_len.rs:18:8: 18:13
25+
StorageLive(_5); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
26+
StorageLive(_6); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
27+
StorageLive(_7); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
28+
_7 = &(*_2); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
29+
StorageLive(_14); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
30+
_14 = _7; // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
31+
_6 = move _7 as &[u8] (Pointer(Unsize)); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
32+
StorageDead(_7); // scope 0 at $DIR/lower_array_len.rs:18:20: 18:21
33+
- _5 = Len((*_14)); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
34+
+ _5 = const N; // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
35+
StorageDead(_14); // scope 0 at $DIR/lower_array_len.rs:18:16: 18:27
36+
StorageDead(_6); // scope 0 at $DIR/lower_array_len.rs:18:26: 18:27
37+
_3 = Lt(move _4, move _5); // scope 0 at $DIR/lower_array_len.rs:18:8: 18:27
38+
StorageDead(_5); // scope 0 at $DIR/lower_array_len.rs:18:26: 18:27
39+
StorageDead(_4); // scope 0 at $DIR/lower_array_len.rs:18:26: 18:27
40+
switchInt(move _3) -> [false: bb3, otherwise: bb1]; // scope 0 at $DIR/lower_array_len.rs:18:8: 18:27
41+
}
42+
43+
bb1: {
44+
StorageLive(_8); // scope 0 at $DIR/lower_array_len.rs:19:15: 19:20
45+
_8 = _1; // scope 0 at $DIR/lower_array_len.rs:19:15: 19:20
46+
- _9 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
47+
+ _9 = const N; // scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
48+
_10 = Lt(_8, _9); // scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
49+
assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> bb2; // scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
50+
}
51+
52+
bb2: {
53+
_0 = (*_2)[_8]; // scope 0 at $DIR/lower_array_len.rs:19:9: 19:21
54+
StorageDead(_8); // scope 0 at $DIR/lower_array_len.rs:20:5: 20:6
55+
goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:18:5: 24:6
56+
}
57+
58+
bb3: {
59+
StorageLive(_11); // scope 0 at $DIR/lower_array_len.rs:21:15: 21:16
60+
_11 = const 0_usize; // scope 0 at $DIR/lower_array_len.rs:21:15: 21:16
61+
- _12 = Len((*_2)); // scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
62+
+ _12 = const N; // scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
63+
_13 = Lt(_11, _12); // scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
64+
assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> bb4; // scope 0 at $DIR/lower_array_len.rs:21:9: 21:17
65+
}
66+
67+
bb4: {
68+
(*_2)[_11] = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:21:9: 21:22
69+
StorageDead(_11); // scope 0 at $DIR/lower_array_len.rs:21:22: 21:23
70+
_0 = const 42_u8; // scope 0 at $DIR/lower_array_len.rs:23:9: 23:11
71+
goto -> bb5; // scope 0 at $DIR/lower_array_len.rs:18:5: 24:6
72+
}
73+
74+
bb5: {
75+
StorageDead(_3); // scope 0 at $DIR/lower_array_len.rs:24:5: 24:6
76+
return; // scope 0 at $DIR/lower_array_len.rs:25:2: 25:2
77+
}
78+
}
79+

0 commit comments

Comments
 (0)