Skip to content

Commit 412c86c

Browse files
committed
coverage: When merging spans, keep prev and merge curr into it
Swapping the direction of this merge produces the same results, but means that we never need to mutate `curr`.
1 parent fd9bb7f commit 412c86c

File tree

1 file changed

+3
-9
lines changed
  • compiler/rustc_mir_transform/src/coverage

1 file changed

+3
-9
lines changed

compiler/rustc_mir_transform/src/coverage/spans.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,10 @@ impl<'a> SpansRefiner<'a> {
221221
let prev = self.prev();
222222
let curr = self.curr();
223223

224-
if curr.is_mergeable(prev) {
224+
if prev.is_mergeable(curr) {
225225
debug!(" same bcb (and neither is a closure), merge with prev={prev:?}");
226-
let prev = self.take_prev();
227-
self.curr_mut().merge_from(&prev);
228-
// Note that curr.span may now differ from curr_original_span
226+
let curr = self.take_curr();
227+
self.prev_mut().merge_from(&curr);
229228
} else if prev.span.hi() <= curr.span.lo() {
230229
debug!(
231230
" different bcbs and disjoint spans, so keep curr for next iter, and add prev={prev:?}",
@@ -286,11 +285,6 @@ impl<'a> SpansRefiner<'a> {
286285
self.some_curr.as_ref().unwrap_or_else(|| bug!("some_curr is None (curr)"))
287286
}
288287

289-
#[track_caller]
290-
fn curr_mut(&mut self) -> &mut CoverageSpan {
291-
self.some_curr.as_mut().unwrap_or_else(|| bug!("some_curr is None (curr_mut)"))
292-
}
293-
294288
/// If called, then the next call to `next_coverage_span()` will *not* update `prev` with the
295289
/// `curr` coverage span.
296290
#[track_caller]

0 commit comments

Comments
 (0)