about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2021-03-23 14:25:52 -0700
committerRich Kadel <richkadel@google.com>2021-03-23 17:02:10 -0700
commit0859cec65255e34221b3b443f4bdd751549fd4c3 (patch)
tree0b6285ff269bb9e9b1f5315a208c5da42d737cfe /compiler/rustc_codegen_ssa/src
parent94a3454b0318e506e167f67aa52df1d054c6500b (diff)
downloadrust-0859cec65255e34221b3b443f4bdd751549fd4c3.tar.gz
rust-0859cec65255e34221b3b443f4bdd751549fd4c3.zip
Changes from review comments
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
-rw-r--r--compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs19
1 files changed, 4 insertions, 15 deletions
diff --git a/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs b/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
index b2b0b9eac91..cbf570dba4c 100644
--- a/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
+++ b/compiler/rustc_codegen_ssa/src/traits/coverageinfo.rs
@@ -6,22 +6,11 @@ use rustc_middle::ty::Instance;
 pub trait CoverageInfoMethods<'tcx>: BackendTypes {
     fn coverageinfo_finalize(&self);
 
-    /// Functions with MIR-based coverage are normally codegenned _only_ if
-    /// called. LLVM coverage tools typically expect every function to be
-    /// defined (even if unused), with at least one call to LLVM intrinsic
-    /// `instrprof.increment`.
-    ///
     /// Codegen a small function that will never be called, with one counter
-    /// that will never be incremented.
-    ///
-    /// For used/called functions, the coverageinfo was already added to the
-    /// `function_coverage_map` (keyed by function `Instance`) during codegen.
-    /// But in this case, since the unused function was _not_ previously
-    /// codegenned, collect the coverage `CodeRegion`s from the MIR and add
-    /// them. The first `CodeRegion` is used to add a single counter, with the
-    /// same counter ID used in the injected `instrprof.increment` intrinsic
-    /// call. Since the function is never called, all other `CodeRegion`s can be
-    /// added as `unreachable_region`s.
+    /// 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