rust/compiler/rustc_mir/src/transform
bors e5f83d24ae Auto merge of #84797 - richkadel:cover-unreachable-statements, r=tmandry
Report coverage `0` of dead blocks

Fixes: #84018

With `-Z instrument-coverage`, coverage reporting of dead blocks
(for example, blocks dropped because a conditional branch is dropped,
based on const evaluation) is now supported.

If `instrument-coverage` is enabled, `simplify::remove_dead_blocks()`
finds all dropped coverage `Statement`s and adds their `code_region`s as
`Unreachable` coverage `Statement`s to the `START_BLOCK`, so they are
still included in the coverage map.

Check out the resulting changes in the test coverage reports in this PR (in [commit 1](https://github.com/rust-lang/rust/pull/84797/commits/0b0d293c7c46bdadf80e5304a667e34c53c0cf7e)).

r? `@tmandry`
cc: `@wesleywiser`
2021-05-07 10:06:40 +00:00
..
check_consts don't let const_fn feature flag affect impl-block-level trait bounds 2021-04-29 09:27:45 +02:00
coverage Coverage instruments closure bodies in macros (not the macro body) 2021-05-06 11:15:39 -07:00
inline Use small hash set in mir_inliner_callees 2021-02-24 00:00:00 +00:00
add_call_guards.rs Remember the MirSource for each Body 2020-10-04 11:01:38 -07:00
add_moves_for_packed_drops.rs Replace (Body, DefId) with Body where possible 2020-10-04 16:07:03 -07:00
add_retag.rs Retagging: do not retag 'raw reborrows' 2020-10-31 15:31:27 +01:00
check_const_item_mutation.rs Suppress CONST_ITEM_MUTATION lint if a dereference occurs anywhere 2020-12-17 15:25:55 -05:00
check_packed_ref.rs make unaligned_refereces future-incompat lint warn-by-default, and remove the safe_packed_borrows lint that it replaces 2021-03-27 16:59:37 +01:00
check_unsafety.rs unsafety checking: no longer care about is_min_const_fn 2021-04-25 12:53:05 +02:00
cleanup_post_borrowck.rs Remember the MirSource for each Body 2020-10-04 11:01:38 -07:00
const_debuginfo.rs Disable the constant debuginfo promotion pass by default 2020-12-14 19:56:10 -05:00
const_goto.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
const_prop.rs Tidy 2021-04-20 09:30:28 -04:00
deaggregator.rs Remember the MirSource for each Body 2020-10-04 11:01:38 -07:00
deduplicate_blocks.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
dest_prop.rs Use AnonConst for asm! constants 2021-04-06 12:35:41 +01:00
dump_mir.rs Remember the MirSource for each Body 2020-10-04 11:01:38 -07:00
early_otherwise_branch.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
elaborate_drops.rs Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
function_item_references.rs Review changes 2021-01-16 18:56:37 -05:00
generator.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
inline.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
instcombine.rs move to separate pass, cache layouts 2021-03-16 21:34:31 -04:00
lower_intrinsics.rs Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
match_branches.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
mod.rs make unaligned_refereces future-incompat lint warn-by-default, and remove the safe_packed_borrows lint that it replaces 2021-03-27 16:59:37 +01:00
multiple_return_terminators.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
no_landing_pads.rs Visit only terminators when removing landing pads 2021-01-18 00:00:00 +00:00
nrvo.rs Extract mir_opt_level to a method and use Option to be able to know if the value is provided or not 2021-03-05 17:13:56 -03:00
promote_consts.rs Use AnonConst for asm! constants 2021-04-06 12:35:41 +01:00
remove_noop_landing_pads.rs Switch to changing cp_non_overlap in tform 2021-03-09 16:54:14 +00:00
remove_storage_markers.rs Remove storage markers if they won't be used during code generation 2021-02-28 20:10:44 +01:00
remove_unneeded_drops.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
remove_zsts.rs RemoveZsts: don't touch unions 2021-03-24 13:00:36 -04:00
required_consts.rs extract ConstKind::Unevaluated into a struct 2021-03-20 17:21:44 +01:00
rustc_peek.rs Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
simplify.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
simplify_branches.rs Simplify assert terminator only if condition evaluates to expected value 2020-10-21 00:00:00 +00:00
simplify_comparison_integral.rs Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
simplify_try.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
uninhabited_enum_branching.rs Refactor how SwitchInt stores jump targets 2020-10-10 17:46:11 +02:00
unreachable_prop.rs Report coverage 0 of dead blocks 2021-05-01 15:04:48 -07:00
validate.rs Clean up todos 2021-03-09 19:31:31 +00:00