Skip to content

Commit 51d5932

Browse files
committed
Try turning on ConstDebugInfo pass
1 parent daf2968 commit 51d5932

5 files changed

+36
-46
lines changed

Diff for: compiler/rustc_mir_transform/src/const_debuginfo.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub struct ConstDebugInfo;
1616

1717
impl<'tcx> MirPass<'tcx> for ConstDebugInfo {
1818
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
19-
sess.opts.unstable_opts.unsound_mir_opts && sess.mir_opt_level() > 0
19+
sess.mir_opt_level() > 0
2020
}
2121

2222
fn run_pass(&self, _tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {

Diff for: src/test/mir-opt/const_prop/optimizes_into_variable.main.SimplifyLocals.after.64bit.mir

+3-12
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,17 @@
22

33
fn main() -> () {
44
let mut _0: (); // return place in scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +0:11
5-
let _1: i32; // in scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
65
scope 1 {
7-
debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
8-
let _2: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
6+
debug x => const 4_i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
97
scope 2 {
10-
debug y => _2; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
11-
let _3: u32; // in scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
8+
debug y => const 3_i32; // in scope 2 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
129
scope 3 {
13-
debug z => _3; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
10+
debug z => const 42_u32; // in scope 3 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
1411
}
1512
}
1613
}
1714

1815
bb0: {
19-
StorageLive(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
20-
StorageLive(_2); // scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
21-
StorageLive(_3); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
22-
StorageDead(_3); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
23-
StorageDead(_2); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
24-
StorageDead(_1); // scope 0 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
2516
return; // scope 0 at $DIR/optimizes_into_variable.rs:+4:2: +4:2
2617
}
2718
}

Diff for: src/test/mir-opt/dead-store-elimination/constant_local_debuginfo.main.DeadStoreElimination.diff

+6-4
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@
99
let mut _5: i32; // in scope 0 at $DIR/constant-local-debuginfo.rs:+4:9: +4:10
1010
let mut _6: i32; // in scope 0 at $DIR/constant-local-debuginfo.rs:+4:13: +4:14
1111
scope 1 {
12-
debug a => _1; // in scope 1 at $DIR/constant-local-debuginfo.rs:+1:9: +1:10
12+
debug a => const 1_i32; // in scope 1 at $DIR/constant-local-debuginfo.rs:+1:9: +1:10
1313
let _2: i32; // in scope 1 at $DIR/constant-local-debuginfo.rs:+2:9: +2:10
1414
scope 2 {
15-
debug b => _2; // in scope 2 at $DIR/constant-local-debuginfo.rs:+2:9: +2:10
15+
debug b => const 4_i32; // in scope 2 at $DIR/constant-local-debuginfo.rs:+2:9: +2:10
1616
}
1717
}
1818

1919
bb0: {
2020
StorageLive(_1); // scope 0 at $DIR/constant-local-debuginfo.rs:+1:9: +1:10
21-
_1 = const 1_i32; // scope 0 at $DIR/constant-local-debuginfo.rs:+1:13: +1:14
21+
- _1 = const 1_i32; // scope 0 at $DIR/constant-local-debuginfo.rs:+1:13: +1:14
22+
+ nop; // scope 0 at $DIR/constant-local-debuginfo.rs:+1:13: +1:14
2223
StorageLive(_2); // scope 1 at $DIR/constant-local-debuginfo.rs:+2:9: +2:10
23-
_2 = const 4_i32; // scope 1 at $DIR/constant-local-debuginfo.rs:+2:13: +2:14
24+
- _2 = const 4_i32; // scope 1 at $DIR/constant-local-debuginfo.rs:+2:13: +2:14
25+
+ nop; // scope 1 at $DIR/constant-local-debuginfo.rs:+2:13: +2:14
2426
StorageLive(_3); // scope 2 at $DIR/constant-local-debuginfo.rs:+4:5: +4:15
2527
StorageLive(_4); // scope 2 at $DIR/constant-local-debuginfo.rs:+4:9: +4:14
2628
StorageLive(_5); // scope 2 at $DIR/constant-local-debuginfo.rs:+4:9: +4:10

Diff for: src/test/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.mir

+25-28
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,22 @@ fn num_to_digit(_1: char) -> u32 {
66
let mut _2: char; // in scope 0 at $DIR/issue-59352.rs:+2:8: +2:11
77
let mut _3: std::option::Option<u32>; // in scope 0 at $DIR/issue-59352.rs:+2:26: +2:41
88
let mut _4: char; // in scope 0 at $DIR/issue-59352.rs:+2:26: +2:29
9-
let mut _5: u32; // in scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
10-
let mut _12: isize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
9+
let mut _11: isize; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
1110
scope 1 (inlined char::methods::<impl char>::is_digit) { // at $DIR/issue-59352.rs:14:8: 14:23
1211
debug self => _2; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
13-
debug radix => _5; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
14-
let mut _6: &std::option::Option<u32>; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
15-
let _7: std::option::Option<u32>; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
16-
let mut _8: char; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
12+
debug radix => const 8_u32; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
13+
let mut _5: &std::option::Option<u32>; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
14+
let _6: std::option::Option<u32>; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
15+
let mut _7: char; // in scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
1716
scope 2 (inlined Option::<u32>::is_some) { // at $SRC_DIR/core/src/char/methods.rs:LL:COL
18-
debug self => _6; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
19-
let mut _9: isize; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
17+
debug self => _5; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
18+
let mut _8: isize; // in scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
2019
}
2120
}
2221
scope 3 (inlined #[track_caller] Option::<u32>::unwrap) { // at $DIR/issue-59352.rs:14:26: 14:50
2322
debug self => _3; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
24-
let mut _10: isize; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
25-
let mut _11: !; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
23+
let mut _9: isize; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
24+
let mut _10: !; // in scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
2625
scope 4 {
2726
debug val => _0; // in scope 4 at $SRC_DIR/core/src/option.rs:LL:COL
2827
}
@@ -31,19 +30,18 @@ fn num_to_digit(_1: char) -> u32 {
3130
bb0: {
3231
StorageLive(_2); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:11
3332
_2 = _1; // scope 0 at $DIR/issue-59352.rs:+2:8: +2:11
34-
StorageLive(_5); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
33+
StorageLive(_5); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
3534
StorageLive(_6); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
3635
StorageLive(_7); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
37-
StorageLive(_8); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
38-
_8 = _2; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
39-
_7 = char::methods::<impl char>::to_digit(move _8, const 8_u32) -> bb5; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
36+
_7 = _2; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
37+
_6 = char::methods::<impl char>::to_digit(move _7, const 8_u32) -> bb5; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
4038
// mir::Constant
4139
// + span: $SRC_DIR/core/src/char/methods.rs:LL:COL
4240
// + literal: Const { ty: fn(char, u32) -> Option<u32> {char::methods::<impl char>::to_digit}, val: Value(<ZST>) }
4341
}
4442

4543
bb1: {
46-
StorageDead(_12); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
44+
StorageDead(_11); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
4745
StorageLive(_3); // scope 0 at $DIR/issue-59352.rs:+2:26: +2:41
4846
StorageLive(_4); // scope 0 at $DIR/issue-59352.rs:+2:26: +2:29
4947
_4 = _1; // scope 0 at $DIR/issue-59352.rs:+2:26: +2:29
@@ -55,12 +53,12 @@ fn num_to_digit(_1: char) -> u32 {
5553

5654
bb2: {
5755
StorageDead(_4); // scope 0 at $DIR/issue-59352.rs:+2:40: +2:41
58-
_10 = discriminant(_3); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
59-
switchInt(move _10) -> [0_isize: bb6, 1_isize: bb8, otherwise: bb7]; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
56+
_9 = discriminant(_3); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
57+
switchInt(move _9) -> [0_isize: bb6, 1_isize: bb8, otherwise: bb7]; // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
6058
}
6159

6260
bb3: {
63-
StorageDead(_12); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
61+
StorageDead(_11); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
6462
_0 = const 0_u32; // scope 0 at $DIR/issue-59352.rs:+2:60: +2:61
6563
goto -> bb4; // scope 0 at $DIR/issue-59352.rs:+2:5: +2:63
6664
}
@@ -70,21 +68,20 @@ fn num_to_digit(_1: char) -> u32 {
7068
}
7169

7270
bb5: {
73-
_6 = &_7; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
74-
StorageDead(_8); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
75-
_9 = discriminant((*_6)); // scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
76-
StorageLive(_12); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
77-
_12 = move _9; // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
78-
StorageDead(_6); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
71+
_5 = &_6; // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
7972
StorageDead(_7); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
80-
StorageDead(_5); // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
73+
_8 = discriminant((*_5)); // scope 2 at $SRC_DIR/core/src/option.rs:LL:COL
74+
StorageLive(_11); // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
75+
_11 = move _8; // scope 2 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
76+
StorageDead(_5); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
77+
StorageDead(_6); // scope 1 at $SRC_DIR/core/src/char/methods.rs:LL:COL
8178
StorageDead(_2); // scope 0 at $DIR/issue-59352.rs:+2:22: +2:23
82-
switchInt(move _12) -> [1_isize: bb1, otherwise: bb3]; // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
79+
switchInt(move _11) -> [1_isize: bb1, otherwise: bb3]; // scope 0 at $DIR/issue-59352.rs:+2:8: +2:23
8380
}
8481

8582
bb6: {
86-
StorageLive(_11); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
87-
_11 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value"); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
83+
StorageLive(_10); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
84+
_10 = core::panicking::panic(const "called `Option::unwrap()` on a `None` value"); // scope 3 at $SRC_DIR/core/src/option.rs:LL:COL
8885
// mir::Constant
8986
// + span: $SRC_DIR/core/src/option.rs:LL:COL
9087
// + literal: Const { ty: fn(&'static str) -> ! {core::panicking::panic}, val: Value(<ZST>) }

Diff for: src/test/mir-opt/lower_intrinsics_e2e.f_u64.PreCodegen.after.mir

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ fn f_u64() -> () {
44
let mut _0: (); // return place in scope 0 at $DIR/lower_intrinsics_e2e.rs:+0:16: +0:16
55
let mut _1: u64; // in scope 0 at $DIR/lower_intrinsics_e2e.rs:+1:5: +1:21
66
scope 1 (inlined f_dispatch::<u64>) { // at $DIR/lower_intrinsics_e2e.rs:15:5: 15:21
7-
debug t => _1; // in scope 1 at $DIR/lower_intrinsics_e2e.rs:19:22: 19:23
7+
debug t => const 0_u64; // in scope 1 at $DIR/lower_intrinsics_e2e.rs:19:22: 19:23
88
let _2: (); // in scope 1 at $DIR/lower_intrinsics_e2e.rs:23:9: 23:21
99
let mut _3: u64; // in scope 1 at $DIR/lower_intrinsics_e2e.rs:23:19: 23:20
1010
scope 2 (inlined std::mem::size_of::<u64>) { // at $DIR/lower_intrinsics_e2e.rs:20:8: 20:32

0 commit comments

Comments
 (0)