| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2025-03-20 | coverage: Convert and check span coordinates without a local file ID | Zalathar | -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-20 | coverage: Add LLVM plumbing for expansion regions | Zalathar | -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-18 | coverage: Don't store a body span in `FunctionCoverageInfo` | Zalathar | -2/+7 | |
| 2025-03-18 | coverage: Don't refer to the body span when enlarging empty spans | Zalathar | -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-24 | Remove inherent function that has a trait method duplicate of a commonly ↵ | Oli Scherer | -1/+1 | |
| imported trait | ||||
| 2025-02-06 | coverage: Remove the old code for simplifying counters after MIR opts | Zalathar | -19/+10 | |
| 2025-02-06 | coverage: Defer part of counter-creation until codegen | Zalathar | -23/+9 | |
| 2025-02-06 | coverage: Store BCB node IDs in mappings, and resolve them in codegen | Zalathar | -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-29 | upstream rustc_codegen_ssa/rustc_middle changes for enzyme/autodiff | Manuel Drehwald | -1/+1 | |
| 2025-01-27 | Change `collect_and_partition_mono_items` tuple return type to a struct | Oli Scherer | -2/+4 | |
| 2025-01-24 | coverage: Make query `coverage_ids_info` return an Option | Zalathar | -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-19 | coverage: Add a synthetic test for when all spans are discarded | Zalathar | -0/+11 | |
| 2024-12-19 | coverage: Identify source files by ID, not by interned filename | Zalathar | -37/+33 | |
| 2024-12-19 | coverage: Store coverage source regions as `Span` until codegen | Zalathar | -26/+145 | |
| 2024-12-19 | coverage: Quietly skip functions that end up having no mappings | Zalathar | -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-19 | coverage: Rename some FFI fields from `span` to `cov_span` | Zalathar | -9/+10 | |
| This will avoid confusion with actual `Span` spans. | ||||
| 2024-12-17 | coverage: Track used functions in a set instead of a map | Zalathar | -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-17 | coverage: Pull function source hash out of `map_data.rs` | Zalathar | -12/+7 | |
| 2024-12-17 | coverage: Pull region conversion out of `map_data.rs` | Zalathar | -37/+14 | |
| 2024-12-17 | coverage: Pull expression conversion out of `map_data.rs` | Zalathar | -33/+44 | |
| 2024-12-17 | coverage: Build the global file table on the fly | Zalathar | -33/+29 | |
| 2024-12-17 | coverage: Use `is_eligible_for_coverage` to filter unused functions | Zalathar | -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-12 | coverage: Tidy up creation of covfun records | Zalathar | -32/+34 | |
| 2024-12-12 | coverage: Tidy up creation of covmap records | Zalathar | -33/+27 | |
| 2024-12-11 | coverage: 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-11 | coverage: Only generate a CGU's covmap record if it has covfun records | Zalathar | -4/+14 | |
| 2024-12-11 | coverage: Reify `CovfunRecord` as an intermediate step | Zalathar | -36/+45 | |
| 2024-12-11 | coverage: Extract function metadata handling to a `covfun` submodule | Zalathar | -166/+206 | |
| 2024-12-08 | coverage: Unused functions don't need to store `CoverageIdsInfo` | Zalathar | -13/+13 | |
| 2024-12-08 | coverage: Remove FunctionCoverageCollector | Zalathar | -70/+17 | |
| The information that was being collected by this builder type is now collected by the `coverage_ids_info` query instead. | ||||
| 2024-12-08 | coverage: Use a query to find counters/expressions that must be zero | Zalathar | -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-08 | coverage: Move `CoverageIdsInfo` into `mir::coverage` | Zalathar | -3/+2 | |
| 2024-11-30 | coverage: Use a query to identify which counter/expression IDs are used | Zalathar | -72/+34 | |
| 2024-11-30 | coverage: All counter terms in an unused function are zero | Zalathar | -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-30 | coverage: Hoist and explain the check for `coverage_cx` | Zalathar | -11/+14 | |
| 2024-11-30 | coverage: 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-29 | Revert "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-24 | coverage: Identify source files by ID, not by interned filename | Zalathar | -43/+42 | |
| 2024-11-24 | coverage: Store coverage source regions as `Span` until codegen | Zalathar | -37/+155 | |
| 2024-11-24 | coverage: Rename some FFI fields from `span` to `cov_span` | Zalathar | -9/+10 | |
| This will avoid confusion with actual `Span` spans. | ||||
| 2024-11-24 | coverage: Ignore functions that end up having no mappings | Zalathar | -9/+2 | |
| A used function with no mappings has historically indicated a bug, but that will no longer be the case after moving some fallible span-processing steps into codegen. | ||||
| 2024-11-10 | Rollup merge of #132675 - Zalathar:empty-spans, r=jieyouxu | Matthias Krüger | -67/+81 | |
| coverage: Restrict empty-span expansion to only cover `{` and `}` Coverage instrumentation has some tricky code for converting a coverage-relevant `Span` into a set of start/end line/byte-column coordinates that will be embedded in the CGU's coverage metadata. A big part of this complexity is special code for handling empty spans, which are expanded into non-empty spans (if possible) because LLVM's coverage reporter does not handle empty spans well. This PR simplifies that code by restricting it to only apply in two specific situations: when the character after the empty span is `{`, or the character before the empty span is `}`. (As an added benefit, this means that the expanded spans no longer extend awkwardly beyond the end of a physical line, which was common under the previous implementation.) Along the way, this PR also removes some unhelpful code for dealing with function source code spread across multiple files. Functions currently can't have coverage spans in multiple files, and if that ever changes (e.g. to properly support expansion regions) then this code will need to be completely overhauled anyway. | ||||
| 2024-11-10 | coverage: Pass a `LocalFileId` to `CoverageSpan::from_source_region` | Zalathar | -3/+9 | |
| 2024-11-08 | coverage: Remove unhelpful code for handling multiple files per function | Zalathar | -59/+57 | |
| Functions currently can't have mappings in multiple files, and if that ever changes (e.g. to properly support expansion regions), this code will need to be completely overhauled anyway. | ||||
| 2024-11-08 | coverage: Add `GlobalFileId` for stricter type-checking of file IDs | Zalathar | -7/+17 | |
| We already had a dedicated `LocalFileId` index type, but previously we used a raw `u32` for global file IDs, because index types were harder to pass through FFI. | ||||
| 2024-11-05 | coverage: Tidy up coverage-specific FFI functions | Zalathar | -14/+12 | |
| 2024-11-05 | coverage: Extract safe FFI wrapper functions to `llvm_cov` | Zalathar | -126/+132 | |
| 2024-11-03 | compiler: Directly use rustc_abi in codegen | Jubilee Young | -1/+1 | |
| 2024-10-31 | coverage: Avoid ICE when `coverage_cx` is unexpectedly unavailable | Zalathar | -2/+11 | |
| 2024-10-28 | Use a type-safe helper to cast `&str` and `&[u8]` to `*const c_char` | Zalathar | -4/+4 | |
