From ae5959f4bab2d48e909cc5af6b906526ab83cc3d Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Wed, 15 Jun 2022 19:42:43 +0200 Subject: Consume resolutions for lowering separately. --- compiler/rustc_interface/src/passes.rs | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) (limited to 'compiler/rustc_interface/src') diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index adeb384787e..19f086b3a44 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -21,7 +21,7 @@ use rustc_metadata::{encode_metadata, EncodedMetadata}; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::DepGraph; use rustc_middle::ty::query::{ExternProviders, Providers}; -use rustc_middle::ty::{self, GlobalCtxt, RegisteredTools, ResolverOutputs, TyCtxt}; +use rustc_middle::ty::{self, GlobalCtxt, RegisteredTools, TyCtxt}; use rustc_mir_build as mir_build; use rustc_parse::{parse_crate_from_file, parse_crate_from_source_str, validate_attr}; use rustc_passes::{self, hir_stats, layout_test}; @@ -139,7 +139,8 @@ mod boxed_resolver { pub fn to_resolver_outputs( resolver: Rc>, - ) -> (Definitions, Box, ResolverOutputs) { + ) -> (Definitions, Box, ty::ResolverOutputs, ty::ResolverAstLowering) + { match Rc::try_unwrap(resolver) { Ok(resolver) => { let mut resolver = resolver.into_inner(); @@ -485,13 +486,21 @@ fn lower_to_hir<'tcx>( sess: &Session, definitions: &mut Definitions, cstore: &CrateStoreDyn, - resolver: &mut ResolverOutputs, + resolutions: &ty::ResolverOutputs, + resolver: ty::ResolverAstLowering, krate: Rc, arena: &'tcx rustc_ast_lowering::Arena<'tcx>, ) -> &'tcx Crate<'tcx> { // Lower AST to HIR. - let hir_crate = - rustc_ast_lowering::lower_crate(sess, &krate, definitions, cstore, resolver, arena); + let hir_crate = rustc_ast_lowering::lower_crate( + sess, + &krate, + definitions, + cstore, + resolutions, + resolver, + arena, + ); // Drop AST to free memory sess.time("drop_ast", || std::mem::drop(krate)); @@ -829,14 +838,21 @@ pub fn create_global_ctxt<'tcx>( // incr. comp. yet. dep_graph.assert_ignored(); - let (mut definitions, cstore, mut resolver_outputs) = + let (mut definitions, cstore, resolver_outputs, resolver_for_lowering) = BoxedResolver::to_resolver_outputs(resolver); let sess = &compiler.session(); // Lower AST to HIR. - let krate = - lower_to_hir(sess, &mut definitions, &*cstore, &mut resolver_outputs, krate, hir_arena); + let krate = lower_to_hir( + sess, + &mut definitions, + &*cstore, + &resolver_outputs, + resolver_for_lowering, + krate, + hir_arena, + ); let query_result_on_disk_cache = rustc_incremental::load_query_result_cache(sess); -- cgit 1.4.1-3-g733a5