From 0087253015d1191b97b5e312c2409e008db87ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jana=20D=C3=B6nszelmann?= Date: Tue, 18 Nov 2025 14:31:06 +0100 Subject: [PATCH] early return on duplicate span lowerings --- compiler/rustc_ast_lowering/src/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index 9cb17ea67a377..4172d079abac2 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -220,6 +220,13 @@ struct SpanLowerer { impl SpanLowerer { fn lower(&self, span: Span) -> Span { if self.is_incremental { + // early return: span lowering takes some time since it accesses the query dependency graph + // to make sure we rerun the right code paths when spans change. When we've already lowered a span, + // or don't have to, bail out ASAP. + if span.is_dummy() || span.parent().is_some_and(|i| i == self.def_id) { + return span; + } + span.with_parent(Some(self.def_id)) } else { // Do not make spans relative when not using incremental compilation.