Store the gctxt instead of fetching it twice.
This commit is contained in:
parent
3ddb54f155
commit
261bbd7dba
3 changed files with 9 additions and 5 deletions
|
@ -327,12 +327,14 @@ fn run_compiler(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
queries.global_ctxt()?;
|
let mut gctxt = queries.global_ctxt()?;
|
||||||
if callbacks.after_expansion(compiler, queries) == Compilation::Stop {
|
if callbacks.after_expansion(compiler, queries) == Compilation::Stop {
|
||||||
return early_exit();
|
return early_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
queries.global_ctxt()?.enter(|tcx| tcx.output_filenames(()));
|
// Make sure the `output_filenames` query is run for its side
|
||||||
|
// effects of writing the dep-info and reporting errors.
|
||||||
|
gctxt.enter(|tcx| tcx.output_filenames(()));
|
||||||
|
|
||||||
if sess.opts.output_types.contains_key(&OutputType::DepInfo)
|
if sess.opts.output_types.contains_key(&OutputType::DepInfo)
|
||||||
&& sess.opts.output_types.len() == 1
|
&& sess.opts.output_types.len() == 1
|
||||||
|
@ -344,7 +346,7 @@ fn run_compiler(
|
||||||
return early_exit();
|
return early_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
queries.global_ctxt()?.enter(|tcx| {
|
gctxt.enter(|tcx| {
|
||||||
let result = tcx.analysis(());
|
let result = tcx.analysis(());
|
||||||
if sess.opts.unstable_opts.save_analysis {
|
if sess.opts.unstable_opts.save_analysis {
|
||||||
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
||||||
|
@ -361,6 +363,8 @@ fn run_compiler(
|
||||||
result
|
result
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
drop(gctxt);
|
||||||
|
|
||||||
if callbacks.after_analysis(compiler, queries) == Compilation::Stop {
|
if callbacks.after_analysis(compiler, queries) == Compilation::Stop {
|
||||||
return early_exit();
|
return early_exit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ impl<'a, T> std::ops::DerefMut for QueryResult<'a, T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> QueryResult<'a, QueryContext<'tcx>> {
|
impl<'a, 'tcx> QueryResult<'a, QueryContext<'tcx>> {
|
||||||
pub fn enter<T>(mut self, f: impl FnOnce(TyCtxt<'tcx>) -> T) -> T {
|
pub fn enter<T>(&mut self, f: impl FnOnce(TyCtxt<'tcx>) -> T) -> T {
|
||||||
(*self.0).get_mut().enter(f)
|
(*self.0).get_mut().enter(f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -815,7 +815,7 @@ fn main_args(at_args: &[String]) -> MainResult {
|
||||||
sess.fatal("Compilation failed, aborting rustdoc");
|
sess.fatal("Compilation failed, aborting rustdoc");
|
||||||
}
|
}
|
||||||
|
|
||||||
let global_ctxt = abort_on_err(queries.global_ctxt(), sess);
|
let mut global_ctxt = abort_on_err(queries.global_ctxt(), sess);
|
||||||
|
|
||||||
global_ctxt.enter(|tcx| {
|
global_ctxt.enter(|tcx| {
|
||||||
let (krate, render_opts, mut cache) = sess.time("run_global_ctxt", || {
|
let (krate, render_opts, mut cache) = sess.time("run_global_ctxt", || {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue