Skip to content

Commit cc8336b

Browse files
committed
coverage: Don't store a body span in FunctionCoverageInfo
1 parent cd2b978 commit cc8336b

10 files changed

+14
-19
lines changed

compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/covfun.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,14 @@ fn fill_region_tables<'tcx>(
105105
ids_info: &'tcx CoverageIdsInfo,
106106
covfun: &mut CovfunRecord<'tcx>,
107107
) {
108-
// Currently a function's mappings must all be in the same file as its body span.
108+
// Currently a function's mappings must all be in the same file, so use the
109+
// first mapping's span to determine the file.
109110
let source_map = tcx.sess.source_map();
110-
let source_file = source_map.lookup_source_file(fn_cov_info.body_span.lo());
111+
let Some(first_span) = (try { fn_cov_info.mappings.first()?.span }) else {
112+
debug_assert!(false, "function has no mappings: {:?}", covfun.mangled_function_name);
113+
return;
114+
};
115+
let source_file = source_map.lookup_source_file(first_span.lo());
111116

112117
// Look up the global file ID for that file.
113118
let global_file_id = global_file_table.global_file_id_for_file(&source_file);

compiler/rustc_middle/src/mir/coverage.rs

-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ pub struct Mapping {
194194
#[derive(TyEncodable, TyDecodable, Hash, HashStable)]
195195
pub struct FunctionCoverageInfo {
196196
pub function_source_hash: u64,
197-
pub body_span: Span,
198197

199198
/// Used in conjunction with `priority_list` to create physical counters
200199
/// and counter expressions, after MIR optimizations.

compiler/rustc_middle/src/mir/pretty.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -620,9 +620,8 @@ fn write_function_coverage_info(
620620
function_coverage_info: &coverage::FunctionCoverageInfo,
621621
w: &mut dyn io::Write,
622622
) -> io::Result<()> {
623-
let coverage::FunctionCoverageInfo { body_span, mappings, .. } = function_coverage_info;
623+
let coverage::FunctionCoverageInfo { mappings, .. } = function_coverage_info;
624624

625-
writeln!(w, "{INDENT}coverage body span: {body_span:?}")?;
626625
for coverage::Mapping { kind, span } in mappings {
627626
writeln!(w, "{INDENT}coverage {kind:?} => {span:?};")?;
628627
}

compiler/rustc_mir_transform/src/coverage/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ fn instrument_function_for_coverage<'tcx>(tcx: TyCtxt<'tcx>, mir_body: &mut mir:
107107

108108
mir_body.function_coverage_info = Some(Box::new(FunctionCoverageInfo {
109109
function_source_hash: hir_info.function_source_hash,
110-
body_span: hir_info.body_span,
111110

112111
node_flow_data,
113112
priority_list,

tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
debug a => _9;
2727
}
2828

29-
+ coverage body span: $DIR/branch_match_arms.rs:14:11: 21:2 (#0)
3029
+ coverage Code { bcb: bcb0 } => $DIR/branch_match_arms.rs:14:1: 15:21 (#0);
3130
+ coverage Code { bcb: bcb1 } => $DIR/branch_match_arms.rs:16:17: 16:33 (#0);
3231
+ coverage Code { bcb: bcb3 } => $DIR/branch_match_arms.rs:17:17: 17:33 (#0);

tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
fn bar() -> bool {
55
let mut _0: bool;
66

7-
+ coverage body span: $DIR/instrument_coverage.rs:29:18: 31:2 (#0)
8-
+ coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:29:1: 31:2 (#0);
7+
+ coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:27:1: 29:2 (#0);
98
+
109
bb0: {
1110
+ Coverage::VirtualCounter(bcb0);

tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff

+5-6
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
let mut _2: bool;
88
let mut _3: !;
99

10-
+ coverage body span: $DIR/instrument_coverage.rs:14:11: 20:2 (#0)
11-
+ coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:14:1: 14:11 (#0);
12-
+ coverage Code { bcb: bcb1 } => $DIR/instrument_coverage.rs:16:12: 16:17 (#0);
13-
+ coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:17:13: 17:18 (#0);
14-
+ coverage Code { bcb: bcb3 } => $DIR/instrument_coverage.rs:18:10: 18:10 (#0);
15-
+ coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:20:2: 20:2 (#0);
10+
+ coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:13:1: 13:11 (#0);
11+
+ coverage Code { bcb: bcb1 } => $DIR/instrument_coverage.rs:15:12: 15:17 (#0);
12+
+ coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:16:13: 16:18 (#0);
13+
+ coverage Code { bcb: bcb3 } => $DIR/instrument_coverage.rs:17:10: 17:10 (#0);
14+
+ coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:19:2: 19:2 (#0);
1615
+
1716
bb0: {
1817
+ Coverage::VirtualCounter(bcb0);

tests/mir-opt/coverage/instrument_coverage.rs

-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
// EMIT_MIR instrument_coverage.main.InstrumentCoverage.diff
99
// CHECK-LABEL: fn main()
10-
// CHECK: coverage body span:
1110
// CHECK: coverage Code { bcb: bcb{{[0-9]+}} } =>
1211
// CHECK: bb0:
1312
// CHECK: Coverage::VirtualCounter
@@ -21,7 +20,6 @@ fn main() {
2120

2221
// EMIT_MIR instrument_coverage.bar.InstrumentCoverage.diff
2322
// CHECK-LABEL: fn bar()
24-
// CHECK: coverage body span:
2523
// CHECK: coverage Code { bcb: bcb{{[0-9]+}} } =>
2624
// CHECK: bb0:
2725
// CHECK: Coverage::VirtualCounter

tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
coverage branch { true: BlockMarkerId(0), false: BlockMarkerId(1) } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0)
99

10-
coverage body span: $DIR/instrument_coverage_cleanup.rs:13:11: 15:2 (#0)
1110
coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:13:1: 14:36 (#0);
1211
coverage Code { bcb: bcb3 } => $DIR/instrument_coverage_cleanup.rs:14:37: 14:39 (#0);
1312
coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:39: 14:39 (#0);

tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
coverage branch { true: BlockMarkerId(0), false: BlockMarkerId(1) } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0)
99

10-
+ coverage body span: $DIR/instrument_coverage_cleanup.rs:13:11: 15:2 (#0)
1110
+ coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:13:1: 14:36 (#0);
1211
+ coverage Code { bcb: bcb3 } => $DIR/instrument_coverage_cleanup.rs:14:37: 14:39 (#0);
1312
+ coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:39: 14:39 (#0);

0 commit comments

Comments
 (0)