Make codegen coverage_context optional, and check
Addresses Issue #78286 Libraries compiled with coverage and linked with out enabling coverage would fail when attempting to add the library's coverage statements to the codegen coverage context (None). Now, if coverage statements are encountered while compiling / linking with `-Z instrument-coverage` disabled, codegen will *not* attempt to add code regions to a coverage map, and it will not inject the LLVM instrprof_increment intrinsic calls.
This commit is contained in:
parent
07a63e6d1f
commit
a7bc1a2edf
5 changed files with 74 additions and 50 deletions
|
@ -26,7 +26,10 @@ use tracing::debug;
|
|||
/// undocumented details in Clang's implementation (that may or may not be important) were also
|
||||
/// replicated for Rust's Coverage Map.
|
||||
pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) {
|
||||
let function_coverage_map = cx.coverage_context().take_function_coverage_map();
|
||||
if cx.coverage_context().is_none() {
|
||||
return;
|
||||
}
|
||||
let function_coverage_map = cx.coverage_context().unwrap().take_function_coverage_map();
|
||||
if function_coverage_map.is_empty() {
|
||||
// This module has no functions with coverage instrumentation
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue