@@ -18,7 +18,7 @@ use rustc_session::{EarlyDiagCtxt, Session, filesearch};
1818use rustc_span:: edit_distance:: find_best_match_for_name;
1919use rustc_span:: edition:: Edition ;
2020use rustc_span:: source_map:: SourceMapInputs ;
21- use rustc_span:: { Symbol , sym} ;
21+ use rustc_span:: { SessionGlobals , Symbol , sym} ;
2222use rustc_target:: spec:: Target ;
2323use tracing:: info;
2424
@@ -190,6 +190,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
190190
191191 let current_gcx2 = current_gcx2. clone ( ) ;
192192 let registry = rayon_core:: Registry :: current ( ) ;
193+ let session_globals = rustc_span:: with_session_globals ( |session_globals| {
194+ session_globals as * const SessionGlobals as usize
195+ } ) ;
193196 thread:: Builder :: new ( )
194197 . name ( "rustc query cycle handler" . to_string ( ) )
195198 . spawn ( move || {
@@ -205,7 +208,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
205208 current_gcx2. access ( |gcx| {
206209 tls:: enter_context ( & tls:: ImplicitCtxt :: new ( gcx) , || {
207210 tls:: with ( |tcx| {
208- let ( query_map, complete) = QueryCtxt :: new ( tcx) . collect_active_jobs ( ) ;
211+ let ( query_map, complete) = rustc_span:: set_session_globals_then ( unsafe { & * ( session_globals as * const SessionGlobals ) } , || {
212+ QueryCtxt :: new ( tcx) . collect_active_jobs ( )
213+ } ) ;
209214 if !complete {
210215 // There was an unexpected error collecting all active jobs, which we need
211216 // to find cycles to break.
0 commit comments