about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/coverageinfo
AgeCommit message (Collapse)AuthorLines
2025-05-28Remove methods from StaticCodegenMethods that are not called in cg_ssa itselfbjorn3-6/+2
2025-05-28Remove a couple of uses of interior mutability around staticsbjorn3-4/+5
2025-05-27coverage: Revert "unused local file IDs" due to empty function namesZalathar-59/+39
This reverts commit 3b22c21dd8c30f499051fe7a758ca0e5d81eb638, reversing changes made to 5f292eea6d63abbd26f1e6e00a0b8cf21d828d7d.
2025-05-10coverage: Detect unused local file IDs to avoid an LLVM assertionZalathar-5/+45
This case can't actually happen yet (other than via a testing flag), because currently all of a function's spans must belong to the same file and expansion. But this will be an important edge case when adding expansion region support.
2025-05-10coverage: Hoist `counter_for_bcb` out of its loopZalathar-10/+10
Having this helper function in the loop was confusing, because it doesn't rely on anything that changes between loop iterations.
2025-05-10coverage: Enlarge empty spans during MIR instrumentation, not codegenZalathar-24/+4
This allows us to assume that coverage spans will only be discarded during codegen in very unusual situations.
2025-05-05Rename Instance::new to Instance::new_raw and add a note that it is rawMichael Goulet-1/+1
2025-04-07coverage: Build the CGU's global file table as late as possibleZalathar-88/+110
2025-04-06coverage: Deal with unused functions and their names in one placeZalathar-39/+51
2025-04-06coverage: Extract module `mapgen::unused` for handling unused functionsZalathar-125/+132
2025-03-20coverage: Convert and check span coordinates without a local file IDZalathar-27/+40
For expansion region support, we will want to be able to convert and check spans before creating a corresponding local file ID. If we create local file IDs eagerly, but some expansion turns out to have no successfully-converted spans, LLVM will complain about that expansion's file ID having no regions.
2025-03-20coverage: Add LLVM plumbing for expansion regionsZalathar-7/+39
This is currently unused, but paves the way for future work on expansion regions without having to worry about the FFI parts.
2025-03-18coverage: Don't store a body span in `FunctionCoverageInfo`Zalathar-2/+7
2025-03-18coverage: Don't refer to the body span when enlarging empty spansZalathar-26/+9
Given that we now only enlarge empty spans to "{" or "}", there shouldn't be any danger of enlarging beyond a function body.
2025-02-24Remove inherent function that has a trait method duplicate of a commonly ↵Oli Scherer-1/+1
imported trait
2025-02-06coverage: Remove the old code for simplifying counters after MIR optsZalathar-19/+10
2025-02-06coverage: Defer part of counter-creation until codegenZalathar-23/+9
2025-02-06coverage: Store BCB node IDs in mappings, and resolve them in codegenZalathar-12/+17
Even though the coverage graph itself is no longer available during codegen, its nodes can still be used as opaque IDs.
2025-01-29upstream rustc_codegen_ssa/rustc_middle changes for enzyme/autodiffManuel Drehwald-1/+1
2025-01-27Change `collect_and_partition_mono_items` tuple return type to a structOli Scherer-2/+4
2025-01-24coverage: Make query `coverage_ids_info` return an OptionZalathar-4/+6
This reflects the fact that we can't compute meaningful info for a function that wasn't instrumented and therefore doesn't have `function_coverage_info`.
2024-12-19coverage: Add a synthetic test for when all spans are discardedZalathar-0/+11
2024-12-19coverage: Identify source files by ID, not by interned filenameZalathar-37/+33
2024-12-19coverage: Store coverage source regions as `Span` until codegenZalathar-26/+145
2024-12-19coverage: Quietly skip functions that end up having no mappingsZalathar-7/+2
In codegen, a used function with `FunctionCoverageInfo` but no mappings has historically indicated a bug. However, that will no longer be the case after moving some fallible span-processing steps into codegen.
2024-12-19coverage: Rename some FFI fields from `span` to `cov_span`Zalathar-9/+10
This will avoid confusion with actual `Span` spans.
2024-12-17coverage: Track used functions in a set instead of a mapZalathar-90/+37
This patch dismantles what was left of `FunctionCoverage` in `map_data.rs`, replaces `function_coverage_map` with a set, and overhauls how we prepare covfun records for unused functions.
2024-12-17coverage: Pull function source hash out of `map_data.rs`Zalathar-12/+7
2024-12-17coverage: Pull region conversion out of `map_data.rs`Zalathar-37/+14
2024-12-17coverage: Pull expression conversion out of `map_data.rs`Zalathar-33/+44
2024-12-17coverage: Build the global file table on the flyZalathar-33/+29
2024-12-17coverage: Use `is_eligible_for_coverage` to filter unused functionsZalathar-8/+7
The checks in `is_eligible_for_coverage` include `is_fn_like`, but will also exclude various function-like things that cannot possibly have coverage instrumentation.
2024-12-12coverage: Tidy up creation of covfun recordsZalathar-32/+34
2024-12-12coverage: Tidy up creation of covmap recordsZalathar-33/+27
2024-12-11coverage: Store intermediate region tables in `CovfunRecord`Zalathar-55/+77
This defers the call to `llvm_cov::write_function_mappings_to_buffer` until just before its enclosing global variable is created.
2024-12-11coverage: Only generate a CGU's covmap record if it has covfun recordsZalathar-4/+14
2024-12-11coverage: Reify `CovfunRecord` as an intermediate stepZalathar-36/+45
2024-12-11coverage: Extract function metadata handling to a `covfun` submoduleZalathar-166/+206
2024-12-08coverage: Unused functions don't need to store `CoverageIdsInfo`Zalathar-13/+13
2024-12-08coverage: Remove FunctionCoverageCollectorZalathar-70/+17
The information that was being collected by this builder type is now collected by the `coverage_ids_info` query instead.
2024-12-08coverage: Use a query to find counters/expressions that must be zeroZalathar-112/+4
This query (`coverage_ids_info`) already determines which counter/expression IDs are unused, so it only takes a little extra effort to also determine which counters/expressions must have a value of zero.
2024-12-08coverage: Move `CoverageIdsInfo` into `mir::coverage`Zalathar-3/+2
2024-11-30coverage: Use a query to identify which counter/expression IDs are usedZalathar-72/+34
2024-11-30coverage: All counter terms in an unused function are zeroZalathar-4/+3
This is currently handled automatically by the fact that codegen doesn't visit coverage statements in unused functions, but that will no longer be the case when unused IDs are identified by a separate query instead.
2024-11-30coverage: Hoist and explain the check for `coverage_cx`Zalathar-11/+14
2024-11-30coverage: Rename `CrateCoverageContext` to `CguCoverageContext`Zalathar-3/+3
This context is stored in `CodegenCx`, which makes it per-CGU rather than per-crate. A single crate can have multiple CGUs.
2024-11-29Revert "Rollup merge of #133418 - Zalathar:spans, r=jieyouxu"Zalathar-207/+96
This reverts commit adf9b5fcd1de43eaf0a779e10612caee8b47bede, reversing changes made to af1ca153d4aed5ffe22445273aa388a8d3f8f4ae. Reverting due to <https://github.com/rust-lang/rust/issues/133606>.
2024-11-24coverage: Identify source files by ID, not by interned filenameZalathar-43/+42
2024-11-24coverage: Store coverage source regions as `Span` until codegenZalathar-37/+155
2024-11-24coverage: Rename some FFI fields from `span` to `cov_span`Zalathar-9/+10
This will avoid confusion with actual `Span` spans.