Auto merge of #108118 - oli-obk:lazy_typeck, r=cjgillot
Run various queries from other queries instead of explicitly in phases These are just legacy leftovers from when rustc didn't have a query system. While there are more cleanups of this sort that can be done here, I want to land them in smaller steps. This phased order of query invocations was already a lie, as any query that looks at types (e.g. the wf checks run before) can invoke e.g. const eval which invokes borrowck, which invokes typeck, ...
This commit is contained in:
commit
3462f79e94
42 changed files with 400 additions and 423 deletions
|
@ -761,27 +761,6 @@ fn analysis(tcx: TyCtxt<'_>, (): ()) -> Result<()> {
|
|||
// passes are timed inside typeck
|
||||
rustc_hir_analysis::check_crate(tcx)?;
|
||||
|
||||
sess.time("misc_checking_2", || {
|
||||
parallel!(
|
||||
{
|
||||
sess.time("match_checking", || {
|
||||
tcx.hir().par_body_owners(|def_id| tcx.ensure().check_match(def_id))
|
||||
});
|
||||
},
|
||||
{
|
||||
sess.time("liveness_checking", || {
|
||||
tcx.hir().par_body_owners(|def_id| {
|
||||
// this must run before MIR dump, because
|
||||
// "not all control paths return a value" is reported here.
|
||||
//
|
||||
// maybe move the check to a MIR pass?
|
||||
tcx.ensure().check_liveness(def_id.to_def_id());
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
sess.time("MIR_borrow_checking", || {
|
||||
tcx.hir().par_body_owners(|def_id| tcx.ensure().mir_borrowck(def_id));
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue