Skip to content

Commit bef0c61

Browse files
committed
Run item-types checking and item-bodies checking in parallel
1 parent 8c07291 commit bef0c61

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/librustc_typeck/lib.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ use rustc::ty::subst::SubstsRef;
102102
use rustc::ty::{self, Ty, TyCtxt};
103103
use rustc::util;
104104
use rustc::util::common::ErrorReported;
105-
use rustc_data_structures::sync::par_for_each;
105+
use rustc_data_structures::sync::{join, par_for_each};
106106
use rustc_errors::struct_span_err;
107107
use rustc_hir as hir;
108108
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
@@ -345,14 +345,19 @@ pub fn check_crate(tcx: TyCtxt<'_>) -> Result<(), ErrorReported> {
345345
tcx.sess.time("wf_checking", || check::check_wf_new(tcx));
346346
})?;
347347

348-
tcx.sess.time("item_types_checking", || {
349-
par_for_each(&tcx.hir().krate().modules, |(&module, _)| {
350-
tcx.ensure().check_mod_item_types(tcx.hir().local_def_id(module));
351-
});
348+
tcx.sess.time("item_types_and_item_bodies_checking", || {
349+
join(
350+
|| {
351+
tcx.sess.time("item_types_checking", || {
352+
par_for_each(&tcx.hir().krate().modules, |(&module, _)| {
353+
tcx.ensure().check_mod_item_types(tcx.hir().local_def_id(module));
354+
});
355+
})
356+
},
357+
|| tcx.sess.time("item_bodies_checking", || tcx.typeck_item_bodies(LOCAL_CRATE)),
358+
)
352359
});
353360

354-
tcx.sess.time("item_bodies_checking", || tcx.typeck_item_bodies(LOCAL_CRATE));
355-
356361
check_unused::check_crate(tcx);
357362
check_for_entry_fn(tcx);
358363

0 commit comments

Comments
 (0)