summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs')
-rw-r--r--compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs58
1 files changed, 6 insertions, 52 deletions
diff --git a/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs b/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
index e77201cf0..7e8de0ddc 100644
--- a/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
+++ b/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
@@ -1,57 +1,11 @@
use super::BackendTypes;
-use rustc_hir::def_id::DefId;
-use rustc_middle::mir::coverage::*;
+use rustc_middle::mir::Coverage;
use rustc_middle::ty::Instance;
-pub trait CoverageInfoMethods<'tcx>: BackendTypes {
- fn coverageinfo_finalize(&self);
-
- /// Codegen a small function that will never be called, with one counter
- /// that will never be incremented, that gives LLVM coverage tools a
- /// function definition it needs in order to resolve coverage map references
- /// to unused functions. This is necessary so unused functions will appear
- /// as uncovered (coverage execution count `0`) in LLVM coverage reports.
- fn define_unused_fn(&self, def_id: DefId);
-
- /// For LLVM codegen, returns a function-specific `Value` for a global
- /// string, to hold the function name passed to LLVM intrinsic
- /// `instrprof.increment()`. The `Value` is only created once per instance.
- /// Multiple invocations with the same instance return the same `Value`.
- fn get_pgo_func_name_var(&self, instance: Instance<'tcx>) -> Self::Value;
-}
-
pub trait CoverageInfoBuilderMethods<'tcx>: BackendTypes {
- /// Returns true if the function source hash was added to the coverage map (even if it had
- /// already been added, for this instance). Returns false *only* if `-C instrument-coverage` is
- /// not enabled (a coverage map is not being generated).
- fn set_function_source_hash(
- &mut self,
- instance: Instance<'tcx>,
- function_source_hash: u64,
- ) -> bool;
-
- /// Returns true if the counter was added to the coverage map; false if `-C instrument-coverage`
- /// is not enabled (a coverage map is not being generated).
- fn add_coverage_counter(
- &mut self,
- instance: Instance<'tcx>,
- index: CounterValueReference,
- region: CodeRegion,
- ) -> bool;
-
- /// Returns true if the expression was added to the coverage map; false if
- /// `-C instrument-coverage` is not enabled (a coverage map is not being generated).
- fn add_coverage_counter_expression(
- &mut self,
- instance: Instance<'tcx>,
- id: InjectedExpressionId,
- lhs: ExpressionOperandId,
- op: Op,
- rhs: ExpressionOperandId,
- region: Option<CodeRegion>,
- ) -> bool;
-
- /// Returns true if the region was added to the coverage map; false if `-C instrument-coverage`
- /// is not enabled (a coverage map is not being generated).
- fn add_coverage_unreachable(&mut self, instance: Instance<'tcx>, region: CodeRegion) -> bool;
+ /// Handle the MIR coverage info in a backend-specific way.
+ ///
+ /// This can potentially be a no-op in backends that don't support
+ /// coverage instrumentation.
+ fn add_coverage(&mut self, instance: Instance<'tcx>, coverage: &Coverage);
}