diff options
| author | bors <bors@rust-lang.org> | 2024-08-27 18:33:26 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-08-27 18:33:26 +0000 |
| commit | ab869e094a907cc5d19b4080f22eccaf347f1f95 (patch) | |
| tree | 6f9a64d9d253542f5da8325458aae76a27ea21ab /compiler/rustc_interface/src | |
| parent | 600edc948ab5de7a92538bcc2f49cb8d47925e2d (diff) | |
| parent | bb17fda3845bda0da7bcdcf28cd17e4823e58c9d (diff) | |
| download | rust-ab869e094a907cc5d19b4080f22eccaf347f1f95.tar.gz rust-ab869e094a907cc5d19b4080f22eccaf347f1f95.zip | |
Auto merge of #129513 - cjgillot:fast-source-span, r=petrochenkov
Do not call source_span when not tracking dependencies. Split from https://github.com/rust-lang/rust/pull/127241
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/callbacks.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/compiler/rustc_interface/src/callbacks.rs b/compiler/rustc_interface/src/callbacks.rs index 786e2bb511f..f66b9eb3a28 100644 --- a/compiler/rustc_interface/src/callbacks.rs +++ b/compiler/rustc_interface/src/callbacks.rs @@ -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}; fn track_span_parent(def_id: rustc_span::def_id::LocalDefId) { - tls::with_opt(|tcx| { - if let Some(tcx) = tcx { - let _span = tcx.source_span(def_id); - // Sanity check: relative span's parent must be an absolute span. - debug_assert_eq!(_span.data_untracked().parent, None); + tls::with_context_opt(|icx| { + if let Some(icx) = icx { + // `track_span_parent` gets called a lot from HIR lowering code. + // Skip doing anything if we aren't tracking dependencies. + 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); + } } }) } |
