Skip to content

Commit 10ffc22

Browse files
committed
Use coverage-dump --demangle as the demangler for coverage-run tests
This avoids the need to build `rust-demangler` when running coverage tests, since we typically need to build `coverage-dump` anyway.
1 parent 9abfebd commit 10ffc22

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

src/bootstrap/src/core/build_steps/test.rs

+1-12
Original file line numberDiff line numberDiff line change
@@ -1781,25 +1781,14 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the
17811781
.arg(builder.ensure(tool::JsonDocLint { compiler: json_compiler, target }));
17821782
}
17831783

1784-
if mode == "coverage-map" {
1784+
if matches!(mode, "coverage-map" | "coverage-run") {
17851785
let coverage_dump = builder.ensure(tool::CoverageDump {
17861786
compiler: compiler.with_stage(0),
17871787
target: compiler.host,
17881788
});
17891789
cmd.arg("--coverage-dump-path").arg(coverage_dump);
17901790
}
17911791

1792-
if mode == "coverage-run" {
1793-
// The demangler doesn't need the current compiler, so we can avoid
1794-
// unnecessary rebuilds by using the bootstrap compiler instead.
1795-
let rust_demangler = builder.ensure(tool::RustDemangler {
1796-
compiler: compiler.with_stage(0),
1797-
target: compiler.host,
1798-
extra_features: Vec::new(),
1799-
});
1800-
cmd.arg("--rust-demangler-path").arg(rust_demangler);
1801-
}
1802-
18031792
cmd.arg("--src-base").arg(builder.src.join("tests").join(suite));
18041793
cmd.arg("--build-base").arg(testdir(builder, compiler.host).join(suite));
18051794

src/tools/compiletest/src/runtest/coverage.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@ use crate::common::{UI_COVERAGE, UI_COVERAGE_MAP};
1010
use crate::runtest::{static_regex, Emit, ProcRes, TestCx, WillExecute};
1111

1212
impl<'test> TestCx<'test> {
13+
fn coverage_dump_path(&self) -> &Path {
14+
self.config
15+
.coverage_dump_path
16+
.as_deref()
17+
.unwrap_or_else(|| self.fatal("missing --coverage-dump"))
18+
}
19+
1320
pub(crate) fn run_coverage_map_test(&self) {
14-
let Some(coverage_dump_path) = &self.config.coverage_dump_path else {
15-
self.fatal("missing --coverage-dump");
16-
};
21+
let coverage_dump_path = self.coverage_dump_path();
1722

1823
let (proc_res, llvm_ir_path) = self.compile_test_and_save_ir();
1924
if !proc_res.status.success() {
@@ -102,8 +107,10 @@ impl<'test> TestCx<'test> {
102107
let proc_res = self.run_llvm_tool("llvm-cov", |cmd| {
103108
cmd.args(["show", "--format=text", "--show-line-counts-or-regions"]);
104109

105-
cmd.arg("--Xdemangler");
106-
cmd.arg(self.config.rust_demangler_path.as_ref().unwrap());
110+
// Specify the demangler binary and its arguments.
111+
let coverage_dump_path = self.coverage_dump_path();
112+
cmd.arg("--Xdemangler").arg(coverage_dump_path);
113+
cmd.arg("--Xdemangler").arg("--demangle");
107114

108115
cmd.arg("--instr-profile");
109116
cmd.arg(&profdata_path);

0 commit comments

Comments
 (0)