File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed
compiler/rustc_monomorphize/src Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff line change 165
165
//! regardless of whether it is actually needed or not.
166
166
167
167
use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
168
- use rustc_data_structures:: sync:: { par_for_each_in, MTLock , MTLockRef } ;
168
+ use rustc_data_structures:: sync:: { join , par_for_each_in, MTLock , MTLockRef } ;
169
169
use rustc_hir as hir;
170
170
use rustc_hir:: def:: DefKind ;
171
171
use rustc_hir:: def_id:: { DefId , DefIdMap , LocalDefId } ;
@@ -258,8 +258,19 @@ pub fn collect_crate_mono_items(
258
258
) -> ( FxHashSet < MonoItem < ' _ > > , UsageMap < ' _ > ) {
259
259
let _prof_timer = tcx. prof . generic_activity ( "monomorphization_collector" ) ;
260
260
261
- let roots =
262
- tcx. sess . time ( "monomorphization_collector_root_collections" , || collect_roots ( tcx, mode) ) ;
261
+ let ( roots, _) = join (
262
+ || {
263
+ tcx. sess
264
+ . time ( "monomorphization_collector_root_collections" , || collect_roots ( tcx, mode) )
265
+ } ,
266
+ || {
267
+ if tcx. sess . opts . share_generics ( ) {
268
+ // Prefetch upstream_monomorphizations as it's very likely to be used in
269
+ // code generation later and this is decent spot to compute it.
270
+ tcx. ensure ( ) . upstream_monomorphizations ( ( ) ) ;
271
+ }
272
+ } ,
273
+ ) ;
263
274
264
275
debug ! ( "building mono item graph, beginning at roots" ) ;
265
276
You can’t perform that action at this time.
0 commit comments