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> {
|
impl<'tcx> CoverageInfoBuilderMethods<'tcx> for Builder<'_, '_, 'tcx> {
|
||||||
#[instrument(level = "debug", skip(self))]
|
#[instrument(level = "debug", skip(self))]
|
||||||
fn add_coverage(&mut self, instance: Instance<'tcx>, coverage: &Coverage) {
|
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 bx = self;
|
||||||
|
|
||||||
let Some(function_coverage_info) =
|
let Some(function_coverage_info) =
|
||||||
|
@ -9,6 +9,11 @@ use std::fmt::{self, Debug, Formatter};
|
|||||||
rustc_index::newtype_index! {
|
rustc_index::newtype_index! {
|
||||||
/// ID of a coverage counter. Values ascend from 0.
|
/// 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
|
/// Note that LLVM handles counter IDs as `uint32_t`, so there is no need
|
||||||
/// to use a larger representation on the Rust side.
|
/// to use a larger representation on the Rust side.
|
||||||
#[derive(HashStable)]
|
#[derive(HashStable)]
|
||||||
@ -24,6 +29,11 @@ impl CounterId {
|
|||||||
rustc_index::newtype_index! {
|
rustc_index::newtype_index! {
|
||||||
/// ID of a coverage-counter expression. Values ascend from 0.
|
/// 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
|
/// Note that LLVM handles expression IDs as `uint32_t`, so there is no need
|
||||||
/// to use a larger representation on the Rust side.
|
/// to use a larger representation on the Rust side.
|
||||||
#[derive(HashStable)]
|
#[derive(HashStable)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user