From e05cd155feaafec2b94cd11083e8425094ad8806 Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Sun, 23 May 2021 21:42:16 +0200 Subject: Move lowering to create_global_ctxt. --- compiler/rustc_interface/src/passes.rs | 24 ++++++++++++++---------- compiler/rustc_interface/src/queries.rs | 16 ++-------------- 2 files changed, 16 insertions(+), 24 deletions(-) (limited to 'compiler/rustc_interface/src') diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index 5ef2b11fffd..e08c8faaa52 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -458,15 +458,9 @@ pub fn lower_to_hir<'res, 'tcx>( sess: &'tcx Session, lint_store: &LintStore, resolver: &'res mut Resolver<'_>, - dep_graph: &'res DepGraph, krate: &'res ast::Crate, arena: &'tcx rustc_ast_lowering::Arena<'tcx>, ) -> Crate<'tcx> { - // We're constructing the HIR here; we don't care what we will - // read, since we haven't even constructed the *input* to - // incr. comp. yet. - dep_graph.assert_ignored(); - // Lower AST to HIR. let hir_crate = rustc_ast_lowering::lower_crate( sess, @@ -783,17 +777,27 @@ impl<'tcx> QueryContext<'tcx> { pub fn create_global_ctxt<'tcx>( compiler: &'tcx Compiler, lint_store: Lrc, - krate: &'tcx Crate<'tcx>, + krate: &ast::Crate, dep_graph: DepGraph, - resolver_outputs: ResolverOutputs, + resolver: Rc>, outputs: OutputFilenames, crate_name: &str, queries: &'tcx OnceCell>, global_ctxt: &'tcx OnceCell>, arena: &'tcx WorkerLocal>, + hir_arena: &'tcx WorkerLocal>, ) -> QueryContext<'tcx> { + // We're constructing the HIR here; we don't care what we will + // read, since we haven't even constructed the *input* to + // incr. comp. yet. + dep_graph.assert_ignored(); + let sess = &compiler.session(); - let _timer = sess.timer("create_global_ctxt"); + let krate = resolver + .borrow_mut() + .access(|resolver| lower_to_hir(sess, &lint_store, resolver, krate, hir_arena)); + let krate = &*hir_arena.alloc(krate); + let resolver_outputs = BoxedResolver::to_resolver_outputs(resolver); let query_result_on_disk_cache = rustc_incremental::load_query_result_cache(sess); @@ -812,7 +816,7 @@ pub fn create_global_ctxt<'tcx>( let queries = queries.get_or_init(|| TcxQueries::new(local_providers, extern_providers)); let gcx = sess.time("setup_global_ctxt", || { - global_ctxt.get_or_init(|| { + global_ctxt.get_or_init(move || { TyCtxt::create_global_ctxt( sess, lint_store, diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index 6d887cce764..7b284e206e2 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -224,31 +224,19 @@ impl<'tcx> Queries<'tcx> { let crate_name = self.crate_name()?.peek().clone(); let outputs = self.prepare_outputs()?.peek().clone(); let (ref krate, ref resolver, ref lint_store) = &*self.expansion()?.peek(); - let resolver = resolver.steal(); let dep_graph = self.dep_graph()?.peek().clone(); - let krate = resolver.borrow_mut().access(|resolver| { - Ok(passes::lower_to_hir( - self.session(), - lint_store, - resolver, - &dep_graph, - &krate, - &self.hir_arena, - )) - })?; - let krate = self.hir_arena.alloc(krate); - let resolver_outputs = Steal::new(BoxedResolver::to_resolver_outputs(resolver)); Ok(passes::create_global_ctxt( self.compiler, lint_store.clone(), krate, dep_graph, - resolver_outputs.steal(), + resolver.steal(), outputs, &crate_name, &self.queries, &self.gcx, &self.arena, + &self.hir_arena, )) }) } -- cgit 1.4.1-3-g733a5