From 5a569b1b8037f96ddaa9944547f1c3c1495034a1 Mon Sep 17 00:00:00 2001 From: Zalathar Date: Tue, 13 Feb 2024 12:42:30 +1100 Subject: [PATCH] coverage: Don't track `curr_original_span` explicitly Now that we never mutate `curr.span`, we don't need to store its original span separately. --- compiler/rustc_mir_transform/src/coverage/spans.rs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs index a2ecf3d13ce..e2aee52cc21 100644 --- a/compiler/rustc_mir_transform/src/coverage/spans.rs +++ b/compiler/rustc_mir_transform/src/coverage/spans.rs @@ -155,16 +155,11 @@ struct SpansRefiner<'a> { /// iteration. some_curr: Option, - /// The original `span` for `curr`, in case `curr.span()` is modified. The `curr_original_span` - /// **must not be mutated** (except when advancing to the next `curr`), even if `curr.span()` - /// is mutated. - curr_original_span: Span, - /// The CoverageSpan from a prior iteration; typically assigned from that iteration's `curr`. /// If that `curr` was discarded, `prev` retains its value from the previous iteration. some_prev: Option, - /// Assigned from `curr_original_span` from the previous iteration. The `prev_original_span` + /// Assigned from `curr.span` from the previous iteration. The `prev_original_span` /// **must not be mutated** (except when advancing to the next `prev`), even if `prev.span()` /// is mutated. prev_original_span: Span, @@ -196,7 +191,6 @@ impl<'a> SpansRefiner<'a> { basic_coverage_blocks, sorted_spans_iter: sorted_spans.into_iter(), some_curr: None, - curr_original_span: DUMMY_SP, some_prev: None, prev_original_span: DUMMY_SP, pending_dups: Vec::new(), @@ -340,8 +334,8 @@ impl<'a> SpansRefiner<'a> { /// Advance `prev` to `curr` (if any), and `curr` to the next `CoverageSpan` in sorted order. fn next_coverage_span(&mut self) -> bool { if let Some(curr) = self.some_curr.take() { + self.prev_original_span = curr.span; self.some_prev = Some(curr); - self.prev_original_span = self.curr_original_span; } while let Some(curr) = self.sorted_spans_iter.next() { debug!("FOR curr={:?}", curr); @@ -356,9 +350,6 @@ impl<'a> SpansRefiner<'a> { closure?); prev={prev:?}", ); } else { - // Save a copy of the original span for `curr` in case the `CoverageSpan` is changed - // by `self.curr_mut().merge_from(prev)`. - self.curr_original_span = curr.span; self.some_curr.replace(curr); self.maybe_flush_pending_dups(); return true;