Do not call source_span when not tracking dependencies.

This commit is contained in:
Camille GILLOT 2024-07-03 07:01:50 +00:00
parent eff09483c6
commit bb17fda384

View File

@ -18,11 +18,19 @@ use rustc_query_system::dep_graph::dep_node::default_dep_kind_debug;
use rustc_query_system::dep_graph::{DepContext, DepKind, DepNode}; use rustc_query_system::dep_graph::{DepContext, DepKind, DepNode};
fn track_span_parent(def_id: rustc_span::def_id::LocalDefId) { fn track_span_parent(def_id: rustc_span::def_id::LocalDefId) {
tls::with_opt(|tcx| { tls::with_context_opt(|icx| {
if let Some(tcx) = tcx { if let Some(icx) = icx {
let _span = tcx.source_span(def_id); // `track_span_parent` gets called a lot from HIR lowering code.
// Sanity check: relative span's parent must be an absolute span. // Skip doing anything if we aren't tracking dependencies.
debug_assert_eq!(_span.data_untracked().parent, None); let tracks_deps = match icx.task_deps {
TaskDepsRef::Allow(..) => true,
TaskDepsRef::EvalAlways | TaskDepsRef::Ignore | TaskDepsRef::Forbid => false,
};
if tracks_deps {
let _span = icx.tcx.source_span(def_id);
// Sanity check: relative span's parent must be an absolute span.
debug_assert_eq!(_span.data_untracked().parent, None);
}
} }
}) })
} }