@@ -18,7 +18,7 @@ use rustc_session::{EarlyDiagCtxt, Session, filesearch};
18
18
use rustc_span:: edit_distance:: find_best_match_for_name;
19
19
use rustc_span:: edition:: Edition ;
20
20
use rustc_span:: source_map:: SourceMapInputs ;
21
- use rustc_span:: { Symbol , sym} ;
21
+ use rustc_span:: { SessionGlobals , Symbol , sym} ;
22
22
use rustc_target:: spec:: Target ;
23
23
use tracing:: info;
24
24
@@ -190,6 +190,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
190
190
191
191
let current_gcx2 = current_gcx2. clone ( ) ;
192
192
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
+ } ) ;
193
196
thread:: Builder :: new ( )
194
197
. name ( "rustc query cycle handler" . to_string ( ) )
195
198
. spawn ( move || {
@@ -205,7 +208,9 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce(CurrentGcx) -> R + Send,
205
208
current_gcx2. access ( |gcx| {
206
209
tls:: enter_context ( & tls:: ImplicitCtxt :: new ( gcx) , || {
207
210
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
+ } ) ;
209
214
if !complete {
210
215
// There was an unexpected error collecting all active jobs, which we need
211
216
// to find cycles to break.
0 commit comments