about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/coverage/mod.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2023-09-13 12:15:40 +1000
committerZalathar <Zalathar@users.noreply.github.com>2023-10-18 21:22:40 +1100
commita18c5f3b751dbfa6c192dc48a6c6f28250e9bc97 (patch)
tree0beb479be41134927ab18e56e3054623a4d4fd6e /compiler/rustc_mir_transform/src/coverage/mod.rs
parentc479bc7f3b8bb0441bef0634b0a60cfdd1ac0914 (diff)
downloadrust-a18c5f3b751dbfa6c192dc48a6c6f28250e9bc97.tar.gz
rust-a18c5f3b751dbfa6c192dc48a6c6f28250e9bc97.zip
coverage: Store the number of counters/expressions in function coverage info
Coverage codegen can now allocate arrays based on the number of
counters/expressions originally used by the instrumentor.

The existing query that inspects coverage statements is still used for
determining the number of counters passed to `llvm.instrprof.increment`. If
some high-numbered counters were removed by MIR optimizations, the instrumented
binary can potentially use less memory and disk space at runtime.
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/mod.rs')
-rw-r--r--compiler/rustc_mir_transform/src/coverage/mod.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/mod.rs b/compiler/rustc_mir_transform/src/coverage/mod.rs
index 1ce6ecc3bb5..e1b656bd981 100644
--- a/compiler/rustc_mir_transform/src/coverage/mod.rs
+++ b/compiler/rustc_mir_transform/src/coverage/mod.rs
@@ -214,6 +214,8 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> {
 
         self.mir_body.function_coverage_info = Some(Box::new(FunctionCoverageInfo {
             function_source_hash: self.function_source_hash,
+            num_counters: self.coverage_counters.num_counters(),
+            num_expressions: self.coverage_counters.num_expressions(),
         }));
     }