Fix some link failures and typos
This commit is contained in:
parent
a6a9c67616
commit
1838d293f7
|
|
@ -75,7 +75,7 @@ code branches, and injects additional [`Coverage`][coverage-statement]
|
||||||
statements into the `BasicBlock`s.
|
statements into the `BasicBlock`s.
|
||||||
|
|
||||||
A MIR `Coverage` statement is a virtual instruction that indicates a counter
|
A MIR `Coverage` statement is a virtual instruction that indicates a counter
|
||||||
should be incremented when its adjacent statemeents are executed, to count
|
should be incremented when its adjacent statements are executed, to count
|
||||||
a span of code ([`CodeRegion`][code-region]). It counts the number of times a
|
a span of code ([`CodeRegion`][code-region]). It counts the number of times a
|
||||||
branch is executed, and also specifies the exact location of that code span in
|
branch is executed, and also specifies the exact location of that code span in
|
||||||
the Rust source code.
|
the Rust source code.
|
||||||
|
|
@ -181,7 +181,7 @@ MIR `Statement` into some backend-specific action or instruction.
|
||||||
CoverageKind::Unreachable => {
|
CoverageKind::Unreachable => {
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
_[code snippet trimmed for brevity]_
|
_code snippet trimmed for brevity_
|
||||||
|
|
||||||
> The function name `instrprof_increment()` is taken from the LLVM intrinsic
|
> The function name `instrprof_increment()` is taken from the LLVM intrinsic
|
||||||
call of the same name ([`llvm.instrprof.increment`][llvm-instrprof-increment]),
|
call of the same name ([`llvm.instrprof.increment`][llvm-instrprof-increment]),
|
||||||
|
|
@ -206,7 +206,7 @@ the last remaining step is to inject the LLVM IR variables that hold the
|
||||||
static data for the coverage map.
|
static data for the coverage map.
|
||||||
|
|
||||||
`rustc_codegen_llvm`'s [`compile_codegen_unit()`][compile-codegen-unit] calls
|
`rustc_codegen_llvm`'s [`compile_codegen_unit()`][compile-codegen-unit] calls
|
||||||
[`coverageinfo_finalze()`][coverageinfo-finalize],
|
[`coverageinfo_finalize()`][coverageinfo-finalize],
|
||||||
which delegates its implementation to the
|
which delegates its implementation to the
|
||||||
[`rustc_codegen_llvm::coverageinfo::mapgen`][mapgen-finalize] module.
|
[`rustc_codegen_llvm::coverageinfo::mapgen`][mapgen-finalize] module.
|
||||||
|
|
||||||
|
|
@ -247,9 +247,9 @@ pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) {
|
||||||
mapgen.write_coverage_mapping(expressions, counter_regions, coverage_mapping_buffer);
|
mapgen.write_coverage_mapping(expressions, counter_regions, coverage_mapping_buffer);
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
_[code snippet trimmed for brevity]_
|
_code snippet trimmed for brevity_
|
||||||
|
|
||||||
One noteable step, performed by `mapgen::finalize()` before processing the
|
One notable step, performed by `mapgen::finalize()` before processing the
|
||||||
`Instance`s and their `FunctionCoverage`s, is the call to
|
`Instance`s and their `FunctionCoverage`s, is the call to
|
||||||
[`add_unreachable_functions()`][add-unreachable-coverage].
|
[`add_unreachable_functions()`][add-unreachable-coverage].
|
||||||
|
|
||||||
|
|
@ -262,7 +262,7 @@ The set of unreachable functions is computed via the set difference of all MIR
|
||||||
`DefId`s (`tcx` query `mir_keys`) minus the codegenned `DefId`s
|
`DefId`s (`tcx` query `mir_keys`) minus the codegenned `DefId`s
|
||||||
(`tcx` query `collect_and_partition_mono_items`). `add_unreachable_functions()`
|
(`tcx` query `collect_and_partition_mono_items`). `add_unreachable_functions()`
|
||||||
computes the set of unreachable functions, queries the `tcx` for the
|
computes the set of unreachable functions, queries the `tcx` for the
|
||||||
previously-computed `CodeRegions`, for each unreachabe MIR, and adds those code
|
previously-computed `CodeRegions`, for each unreachable MIR, and adds those code
|
||||||
regions to one of the non-generic codegenned functions (non-generic avoids
|
regions to one of the non-generic codegenned functions (non-generic avoids
|
||||||
potentially injecting the unreachable coverage multiple times for multiple
|
potentially injecting the unreachable coverage multiple times for multiple
|
||||||
instantiations).
|
instantiations).
|
||||||
|
|
@ -382,7 +382,7 @@ fundamental control flow, with many of the same
|
||||||
For anyone that knows how to work with the [MIR, as a CFG][mir-dev-guide], the
|
For anyone that knows how to work with the [MIR, as a CFG][mir-dev-guide], the
|
||||||
`CoverageGraph` will be familiar, and can be used in much the same way.
|
`CoverageGraph` will be familiar, and can be used in much the same way.
|
||||||
The nodes of the `CoverageGraph` are `BasicCoverageBlock`s (BCBs), which
|
The nodes of the `CoverageGraph` are `BasicCoverageBlock`s (BCBs), which
|
||||||
index into an `IndexVec` of `BasicCoverageBlockData`. This is analagous
|
index into an `IndexVec` of `BasicCoverageBlockData`. This is analogous
|
||||||
to the MIR CFG of `BasicBlock`s that index `BasicBlockData`.
|
to the MIR CFG of `BasicBlock`s that index `BasicBlockData`.
|
||||||
|
|
||||||
Each `BasicCoverageBlockData` captures one or more MIR `BasicBlock`s,
|
Each `BasicCoverageBlockData` captures one or more MIR `BasicBlock`s,
|
||||||
|
|
@ -450,7 +450,7 @@ The nodes contain information in sections:
|
||||||
its `BasicCoverageBlockData`).
|
its `BasicCoverageBlockData`).
|
||||||
2. The first content section shows the assigned `Counter` or `Expression` for
|
2. The first content section shows the assigned `Counter` or `Expression` for
|
||||||
each contiguous section of code. (There may be more than one `Expression`
|
each contiguous section of code. (There may be more than one `Expression`
|
||||||
incremented by the same `Counter` for discontigous sections of code representing
|
incremented by the same `Counter` for discontiguous sections of code representing
|
||||||
the same sequential actions.) Note the code is represented by the line and
|
the same sequential actions.) Note the code is represented by the line and
|
||||||
column ranges (for example: `52:28-52:33`, representing the original source
|
column ranges (for example: `52:28-52:33`, representing the original source
|
||||||
line 52, for columns 28-33). These are followed by the MIR `Statement` or
|
line 52, for columns 28-33). These are followed by the MIR `Statement` or
|
||||||
|
|
@ -489,7 +489,7 @@ an initial set of `CoverageSpan`s from the `Span`s associated with each MIR
|
||||||
|
|
||||||
The final stage of `generate_coverage_spans()` is handled by
|
The final stage of `generate_coverage_spans()` is handled by
|
||||||
[`to_refined_spans()`][to-refined-spans], which iterates through the `CoverageSpan`s,
|
[`to_refined_spans()`][to-refined-spans], which iterates through the `CoverageSpan`s,
|
||||||
merges and de-duplicates them, and returns an optimial, minimal set of `CoverageSpan`s
|
merges and de-duplicates them, and returns an optimal, minimal set of `CoverageSpan`s
|
||||||
that can be used to assign coverage `Counter`s or `Expression`s, one-for-one.
|
that can be used to assign coverage `Counter`s or `Expression`s, one-for-one.
|
||||||
|
|
||||||
An visual, interactive representation of the final `CoverageSpan`s can be
|
An visual, interactive representation of the final `CoverageSpan`s can be
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ workflow to see how they interact.
|
||||||
|
|
||||||
[^note-instrument-coverage]: Note: `rustc` now supports front-end-based coverage
|
[^note-instrument-coverage]: Note: `rustc` now supports front-end-based coverage
|
||||||
instrumentation, via the experimental option
|
instrumentation, via the experimental option
|
||||||
[`-Z instrument-coverage`](../llvm-coverage-instrumentation), but using these
|
[`-Z instrument-coverage`](./llvm-coverage-instrumentation.md), but using these
|
||||||
coverage results for PGO has not been attempted at this time.
|
coverage results for PGO has not been attempted at this time.
|
||||||
|
|
||||||
### Overall Workflow
|
### Overall Workflow
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue