1
Fork 0
rust/compiler/rustc_mir_transform/src
Jubilee 7f8108afc8
Rollup merge of #136053 - Zalathar:defer-counters, r=saethlin
coverage: Defer part of counter-creation until codegen

Follow-up to #135481 and #135873.

One of the pleasant properties of the new counter-assignment algorithm is that we can stop partway through the process, store the intermediate state in MIR, and then resume the rest of the algorithm during codegen. This lets it take into account which parts of the control-flow graph were eliminated by MIR opts, resulting in fewer physical counters and simpler counter expressions.

Those improvements end up completely obsoleting much larger chunks of code that were previously responsible for cleaning up the coverage metadata after MIR opts, while also doing a more thorough cleanup job.

(That change also unlocks some further simplifications that I've kept out of this PR to limit its scope.)
2025-02-10 00:51:49 -08:00
..
coroutine Rustfmt 2025-02-08 22:12:13 +00:00
coverage Rollup merge of #136053 - Zalathar:defer-counters, r=saethlin 2025-02-10 00:51:49 -08:00
inline use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
shim Rustfmt 2025-02-08 22:12:13 +00:00
abort_unwinding_calls.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
add_call_guards.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
add_moves_for_packed_drops.rs Rustfmt 2025-02-08 22:12:13 +00:00
add_retag.rs Rustfmt 2025-02-08 22:12:13 +00:00
add_subtyping_projections.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
check_alignment.rs Detect (non-raw) borrows of null ZST pointers in CheckNull 2025-02-08 21:38:16 +00:00
check_call_recursion.rs Rustfmt 2025-02-08 22:12:13 +00:00
check_const_item_mutation.rs Move find_self_call. 2025-01-31 16:04:13 +11:00
check_inline.rs Consolidate ad-hoc MIR lints into real pass-manager-based MIR lints 2025-01-18 21:25:47 +00:00
check_null.rs Detect (non-raw) borrows of null ZST pointers in CheckNull 2025-02-08 21:38:16 +00:00
check_packed_ref.rs use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
check_pointers.rs Detect (non-raw) borrows of null ZST pointers in CheckNull 2025-02-08 21:38:16 +00:00
check_undefined_transmutes.rs Add a Lint for Pointer to Integer Transmutes in Consts 2024-10-05 12:48:02 +00:00
cleanup_post_borrowck.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
copy_prop.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
coroutine.rs Rustfmt 2025-02-08 22:12:13 +00:00
cost_checker.rs use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
cross_crate_inline.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
ctfe_limit.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
dataflow_const_prop.rs Implement MIR, CTFE, and codegen for unsafe binders 2025-01-31 17:19:53 +00:00
dead_store_elimination.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
deduce_param_attrs.rs rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
deduplicate_blocks.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
deref_separator.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
dest_prop.rs Implement MIR, CTFE, and codegen for unsafe binders 2025-01-31 17:19:53 +00:00
dump_mir.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
early_otherwise_branch.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
elaborate_box_derefs.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
elaborate_drops.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
errors.rs Remove redundant to_ident_string calls 2025-01-27 01:23:34 +00:00
ffi_unwind_calls.rs Rustfmt 2025-02-08 22:12:13 +00:00
function_item_references.rs Remove redundant to_ident_string calls 2025-01-27 01:23:34 +00:00
gvn.rs Don't reset cast kind without also updating the operand in simplify_cast 2025-02-06 18:39:35 +00:00
impossible_predicates.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
inline.rs Rollup merge of #136722 - kornelski:visit-spans, r=chenyukang 2025-02-09 19:44:52 +01:00
instsimplify.rs Reapply "Auto merge of #133734 - scottmcm:lower-indexing-to-ptrmetadata, r=davidtwco,RalfJung" 2025-01-27 23:42:47 +00:00
jump_threading.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
known_panics_lint.rs Rustfmt 2025-02-08 22:12:13 +00:00
large_enums.rs Represent the raw pointer for a array length check as a new kind of fake borrow 2025-01-28 00:00:33 +00:00
lib.rs Rename tcx.ensure_with_value() to tcx.ensure_done() 2025-02-01 12:42:39 +11:00
lint.rs rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
lint_tail_expr_drop_order.rs remove more redundant into() conversions 2025-01-10 07:08:28 +01:00
lower_intrinsics.rs Contracts core intrinsics. 2025-02-03 12:53:57 -08:00
lower_slice_len.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
match_branches.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
mentioned_items.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
multiple_return_terminators.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
nrvo.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
pass_manager.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
post_analysis_normalize.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
post_drop_elaboration.rs Make check_live_drops into a MirLint. 2024-09-10 09:11:17 +10:00
prettify.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
promote_consts.rs Rustfmt 2025-02-08 22:12:13 +00:00
ref_prop.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_noop_landing_pads.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_place_mention.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_storage_markers.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_uninit_drops.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_unneeded_drops.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_zsts.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
required_consts.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
sanity_check.rs Move MirPass to rustc_mir_transform. 2024-09-03 16:03:46 +10:00
shim.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
simplify.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
simplify_branches.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
simplify_comparison_integral.rs Rustfmt 2025-02-08 22:12:13 +00:00
single_use_consts.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
sroa.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
ssa.rs Rustfmt 2025-02-08 22:12:13 +00:00
strip_debuginfo.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
unreachable_enum_branching.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
unreachable_prop.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
validate.rs MIR validation: add comment explaining the limitations of CfgChecker 2025-02-06 11:36:58 +01:00