about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/coverageinfo
AgeCommit message (Collapse)AuthorLines
2025-09-16Mark some coverage-related bindings as safeZalathar-4/+4
2025-09-16Stop using `as_c_char_ptr` for coverage-related bindingsZalathar-4/+3
2025-08-06coverage: Remove all unstable support for MC/DC instrumentationZalathar-184/+8
2025-08-04coverage: Represent `CovmapVersion` as an enumZalathar-15/+32
Using an enum here was historically not worth the extra hassle, but now we can lean on `#[derive(TryFromU32)]` to hide most of the boilerplate.
2025-08-04coverage: Simplify access to debug/testing `-Zcoverage-options` flagsZalathar-1/+1
2025-08-04coverage: 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-08-04coverage: Include an `Instance` in `CovfunRecord` for debug messagesZalathar-1/+6
2025-07-30coverage: Re-land "Enlarge empty spans during MIR instrumentation"Zalathar-24/+4
This allows us to assume that coverage spans will only be discarded during codegen in very unusual situations.
2025-07-27coverage: Clarify that getting a PGO name also makes a function "used"Zalathar-4/+7
2025-07-27coverage: Infer `instances_used` from `pgo_func_name_var_map`Zalathar-18/+21
In obscure circumstances, we would sometimes emit a covfun record for a function with no physical coverage counters, causing `llvm-cov` to fail with the cryptic error message: malformed instrumentation profile data: function name is empty We can eliminate this mismatch by removing `instances_used` entirely, and instead inferring its contents from the keys of `pgo_func_name_var_map`. This makes it impossible for a "used" function to lack a PGO name entry.
2025-07-26Revert "coverage: Enlarge empty spans during MIR instrumentation, not codegen"Zalathar-4/+24
This reverts commit f877aa7d14916f71a2f88c6d4c009e7ded7684c4.
2025-07-22coverage: 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-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