coverage: Simplify parts of InstrumentCoverage::run_pass
Changes in this patch: - Extract local variable `def_id` - Check `is_fn_like` without retrieving HIR - Inline some locals that are used once and aren't needed for clarity
This commit is contained in:
parent
87cffb2377
commit
315c0cf358
1 changed files with 6 additions and 8 deletions
|
@ -43,8 +43,7 @@ impl<'tcx> MirPass<'tcx> for InstrumentCoverage {
|
||||||
// be transformed, so it should never see promoted MIR.
|
// be transformed, so it should never see promoted MIR.
|
||||||
assert!(mir_source.promoted.is_none());
|
assert!(mir_source.promoted.is_none());
|
||||||
|
|
||||||
let is_fn_like =
|
let def_id = mir_source.def_id().expect_local();
|
||||||
tcx.hir_node_by_def_id(mir_source.def_id().expect_local()).fn_kind().is_some();
|
|
||||||
|
|
||||||
// Only instrument functions, methods, and closures (not constants since they are evaluated
|
// Only instrument functions, methods, and closures (not constants since they are evaluated
|
||||||
// at compile time by Miri).
|
// at compile time by Miri).
|
||||||
|
@ -53,8 +52,8 @@ impl<'tcx> MirPass<'tcx> for InstrumentCoverage {
|
||||||
// expressions from coverage spans in enclosing MIR's, like we do for closures. (That might
|
// expressions from coverage spans in enclosing MIR's, like we do for closures. (That might
|
||||||
// be tricky if const expressions have no corresponding statements in the enclosing MIR.
|
// be tricky if const expressions have no corresponding statements in the enclosing MIR.
|
||||||
// Closures are carved out by their initial `Assign` statement.)
|
// Closures are carved out by their initial `Assign` statement.)
|
||||||
if !is_fn_like {
|
if !tcx.def_kind(def_id).is_fn_like() {
|
||||||
trace!("InstrumentCoverage skipped for {:?} (not an fn-like)", mir_source.def_id());
|
trace!("InstrumentCoverage skipped for {def_id:?} (not an fn-like)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,14 +65,13 @@ impl<'tcx> MirPass<'tcx> for InstrumentCoverage {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
let codegen_fn_attrs = tcx.codegen_fn_attrs(mir_source.def_id());
|
if tcx.codegen_fn_attrs(def_id).flags.contains(CodegenFnAttrFlags::NO_COVERAGE) {
|
||||||
if codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::NO_COVERAGE) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
trace!("InstrumentCoverage starting for {:?}", mir_source.def_id());
|
trace!("InstrumentCoverage starting for {def_id:?}");
|
||||||
Instrumentor::new(tcx, mir_body).inject_counters();
|
Instrumentor::new(tcx, mir_body).inject_counters();
|
||||||
trace!("InstrumentCoverage done for {:?}", mir_source.def_id());
|
trace!("InstrumentCoverage done for {def_id:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue