From 44c8262b666ce291e02800681fd5193fce0e42de Mon Sep 17 00:00:00 2001 From: Zalathar Date: Sat, 9 Aug 2025 13:43:14 +1000 Subject: [PATCH] Don't consume `CoverageInfoBuilder` when building --- .../rustc_mir_build/src/builder/coverageinfo.rs | 14 +++++++++----- compiler/rustc_mir_build/src/builder/mod.rs | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_mir_build/src/builder/coverageinfo.rs b/compiler/rustc_mir_build/src/builder/coverageinfo.rs index 14199c209217c..e879ea0fd2bc4 100644 --- a/compiler/rustc_mir_build/src/builder/coverageinfo.rs +++ b/compiler/rustc_mir_build/src/builder/coverageinfo.rs @@ -147,11 +147,15 @@ impl CoverageInfoBuilder { }); } - pub(crate) fn into_done(self) -> Box { - let Self { nots: _, markers: BlockMarkerGen { num_block_markers }, branch_info } = self; - - let branch_spans = - branch_info.map(|branch_info| branch_info.branch_spans).unwrap_or_default(); + pub(crate) fn build(&self) -> Box { + let &Self { nots: _, markers: BlockMarkerGen { num_block_markers }, ref branch_info } = + self; + + let branch_spans = branch_info + .as_ref() + .map(|branch_info| branch_info.branch_spans.as_slice()) + .unwrap_or_default() + .to_owned(); // For simplicity, always return an info struct (without Option), even // if there's nothing interesting in it. diff --git a/compiler/rustc_mir_build/src/builder/mod.rs b/compiler/rustc_mir_build/src/builder/mod.rs index 855cd2f3bc0a6..1c4a2c8c465db 100644 --- a/compiler/rustc_mir_build/src/builder/mod.rs +++ b/compiler/rustc_mir_build/src/builder/mod.rs @@ -802,7 +802,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { self.coroutine, None, ); - body.coverage_info_hi = self.coverage_info.map(|b| b.into_done()); + body.coverage_info_hi = self.coverage_info.as_ref().map(|b| b.build()); for (index, block) in body.basic_blocks.iter().enumerate() { if block.terminator.is_none() {