mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
coverage: Explicitly note that counter/expression IDs are function-local
This commit is contained in:
parent
753caf292c
commit
33da0978ac
@ -100,6 +100,13 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
|
||||
impl<'tcx> CoverageInfoBuilderMethods<'tcx> for Builder<'_, '_, 'tcx> {
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
fn add_coverage(&mut self, instance: Instance<'tcx>, coverage: &Coverage) {
|
||||
// Our caller should have already taken care of inlining subtleties,
|
||||
// so we can assume that counter/expression IDs in this coverage
|
||||
// statement are meaningful for the given instance.
|
||||
//
|
||||
// (Either the statement was not inlined and directly belongs to this
|
||||
// instance, or it was inlined *from* this instance.)
|
||||
|
||||
let bx = self;
|
||||
|
||||
let Some(function_coverage_info) =
|
||||
|
@ -9,6 +9,11 @@ use std::fmt::{self, Debug, Formatter};
|
||||
rustc_index::newtype_index! {
|
||||
/// ID of a coverage counter. Values ascend from 0.
|
||||
///
|
||||
/// Before MIR inlining, counter IDs are local to their enclosing function.
|
||||
/// After MIR inlining, coverage statements may have been inlined into
|
||||
/// another function, so use the statement's source-scope to find which
|
||||
/// function/instance its IDs are meaningful for.
|
||||
///
|
||||
/// Note that LLVM handles counter IDs as `uint32_t`, so there is no need
|
||||
/// to use a larger representation on the Rust side.
|
||||
#[derive(HashStable)]
|
||||
@ -24,6 +29,11 @@ impl CounterId {
|
||||
rustc_index::newtype_index! {
|
||||
/// ID of a coverage-counter expression. Values ascend from 0.
|
||||
///
|
||||
/// Before MIR inlining, expression IDs are local to their enclosing function.
|
||||
/// After MIR inlining, coverage statements may have been inlined into
|
||||
/// another function, so use the statement's source-scope to find which
|
||||
/// function/instance its IDs are meaningful for.
|
||||
///
|
||||
/// Note that LLVM handles expression IDs as `uint32_t`, so there is no need
|
||||
/// to use a larger representation on the Rust side.
|
||||
#[derive(HashStable)]
|
||||
|
Loading…
Reference in New Issue
Block a user