Auto merge of #97383 - dingxiangfei2009:restore-region-scope-tree-query, r=dingxiangfei2009
Try to cache region_scope_tree as a query This PR will attempt to restore `region_scope_tree` as a query so that caching works again. It seems that `region_scope_tree` could be re-computed for nested items after all, which could explain the performance regression introduced by #95563. cc `@Mark-Simulacrum` `@pnkfelix` I will try to trigger a perf run here.
This commit is contained in:
commit
4f39fb1f34
16 changed files with 35 additions and 42 deletions
|
@ -31,6 +31,7 @@ macro_rules! arena_types {
|
|||
[decode] unsafety_check_result: rustc_middle::mir::UnsafetyCheckResult,
|
||||
[decode] code_region: rustc_middle::mir::coverage::CodeRegion,
|
||||
[] const_allocs: rustc_middle::mir::interpret::Allocation,
|
||||
[] region_scope_tree: rustc_middle::middle::region::ScopeTree,
|
||||
// Required for the incremental on-disk cache
|
||||
[] mir_keys: rustc_hir::def_id::DefIdSet,
|
||||
[] dropck_outlives:
|
||||
|
|
|
@ -1044,6 +1044,12 @@ rustc_queries! {
|
|||
desc { "reachability" }
|
||||
}
|
||||
|
||||
/// Per-body `region::ScopeTree`. The `DefId` should be the owner `DefId` for the body;
|
||||
/// in the case of closures, this will be redirected to the enclosing function.
|
||||
query region_scope_tree(def_id: DefId) -> &'tcx crate::middle::region::ScopeTree {
|
||||
desc { |tcx| "computing drop scopes for `{}`", tcx.def_path_str(def_id) }
|
||||
}
|
||||
|
||||
/// Generates a MIR body for the shim.
|
||||
query mir_shims(key: ty::InstanceDef<'tcx>) -> mir::Body<'tcx> {
|
||||
storage(ArenaCacheSelector<'tcx>)
|
||||
|
|
|
@ -6,7 +6,6 @@ use crate::hir::place::Place as HirPlace;
|
|||
use crate::infer::canonical::{Canonical, CanonicalVarInfo, CanonicalVarInfos};
|
||||
use crate::lint::{struct_lint_level, LintDiagnosticBuilder, LintLevelSource};
|
||||
use crate::middle::codegen_fn_attrs::CodegenFnAttrs;
|
||||
use crate::middle::region::ScopeTree;
|
||||
use crate::middle::resolve_lifetime::{self, LifetimeScopeForPath};
|
||||
use crate::middle::stability;
|
||||
use crate::mir::interpret::{self, Allocation, ConstAllocation, ConstValue, Scalar};
|
||||
|
@ -538,12 +537,6 @@ pub struct TypeckResults<'tcx> {
|
|||
/// issue by fake reading `t`.
|
||||
pub closure_fake_reads: FxHashMap<DefId, Vec<(HirPlace<'tcx>, FakeReadCause, hir::HirId)>>,
|
||||
|
||||
/// Tracks critical information about regions in a body.
|
||||
/// This includes containment relationship between regions,
|
||||
/// liveness relationship between variables and regions and
|
||||
/// information about yield points.
|
||||
pub region_scope_tree: ScopeTree,
|
||||
|
||||
/// Tracks the rvalue scoping rules which defines finer scoping for rvalue expressions
|
||||
/// by applying extended parameter rules.
|
||||
/// Details may be find in `rustc_typeck::check::rvalue_scopes`.
|
||||
|
@ -586,7 +579,6 @@ impl<'tcx> TypeckResults<'tcx> {
|
|||
concrete_opaque_types: Default::default(),
|
||||
closure_min_captures: Default::default(),
|
||||
closure_fake_reads: Default::default(),
|
||||
region_scope_tree: Default::default(),
|
||||
rvalue_scopes: Default::default(),
|
||||
generator_interior_types: ty::Binder::dummy(Default::default()),
|
||||
treat_byte_string_as_slice: Default::default(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue