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.
This commit is contained in:
Zalathar 2023-09-13 12:15:40 +10:00
parent c479bc7f3b
commit a18c5f3b75
8 changed files with 69 additions and 102 deletions

View file

@ -126,6 +126,14 @@ impl CoverageCounters {
next
}
pub(super) fn num_counters(&self) -> usize {
self.next_counter_id.as_usize()
}
pub(super) fn num_expressions(&self) -> usize {
self.next_expression_id.as_usize()
}
fn set_bcb_counter(
&mut self,
bcb: BasicCoverageBlock,