Auto merge of #141950 - oli-obk:big-body-owner-loop, r=compiler-errors
Move coroutine_by_move_body_def_id into the big check_crate body owner loop This avoids starting a parallel loop in sequence and instead runs all the queries for a specific DefId together.
This commit is contained in:
@@ -192,10 +192,10 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
|
||||
let _: R = tcx.ensure_ok().crate_inherent_impls_overlap_check(());
|
||||
});
|
||||
|
||||
// Make sure we evaluate all static and (non-associated) const items, even if unused.
|
||||
// If any of these fail to evaluate, we do not want this crate to pass compilation.
|
||||
tcx.par_hir_body_owners(|item_def_id| {
|
||||
let def_kind = tcx.def_kind(item_def_id);
|
||||
// Make sure we evaluate all static and (non-associated) const items, even if unused.
|
||||
// If any of these fail to evaluate, we do not want this crate to pass compilation.
|
||||
match def_kind {
|
||||
DefKind::Static { .. } => {
|
||||
tcx.ensure_ok().eval_static_initializer(item_def_id);
|
||||
@@ -215,6 +215,11 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
|
||||
if !matches!(def_kind, DefKind::AnonConst) {
|
||||
tcx.ensure_ok().typeck(item_def_id);
|
||||
}
|
||||
// Ensure we generate the new `DefId` before finishing `check_crate`.
|
||||
// Afterwards we freeze the list of `DefId`s.
|
||||
if tcx.needs_coroutine_by_move_body_def_id(item_def_id.to_def_id()) {
|
||||
tcx.ensure_done().coroutine_by_move_body_def_id(item_def_id);
|
||||
}
|
||||
});
|
||||
|
||||
if tcx.features().rustc_attrs() {
|
||||
|
||||
Reference in New Issue
Block a user