diff options
| author | bors <bors@rust-lang.org> | 2022-02-02 02:29:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-02-02 02:29:32 +0000 |
| commit | d5f9c40e6a9ecc62432e71e886cef83a4c2c9b98 (patch) | |
| tree | 81f0acd2ade399951a45b3b6ad98c15a2c9d9db7 /compiler/rustc_middle | |
| parent | 1ea4851715893ee3f365a8ef09d47165e9a7864f (diff) | |
| parent | 4e7d47bb6c91f6db5d043a152d11ab7528266d25 (diff) | |
Auto merge of #93466 - cjgillot:query-dead, r=nagisa
Make dead code check a query. Dead code check is run for each invocation of the compiler, even if no modifications were involved. This PR makes dead code check a query keyed on the module. This allows to skip the check when a module has not changed. To perform this, a query `live_symbols_and_ignored_derived_traits` is introduced to encapsulate the global analysis of finding live symbols. The second query `check_mod_deathness` outputs diagnostics for each module based on this first query's results.
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/query/mod.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index 12ece9e6afb..8e87a262192 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -758,6 +758,22 @@ rustc_queries! { desc { |tcx| "checking liveness of variables in {}", describe_as_module(key, tcx) } } + /// Return the live symbols in the crate for dead code check. + /// + /// The second return value maps from ADTs to ignored derived traits (e.g. Debug and Clone) and + /// their respective impl (i.e., part of the derive macro) + query live_symbols_and_ignored_derived_traits(_: ()) -> ( + FxHashSet<LocalDefId>, + FxHashMap<LocalDefId, Vec<(DefId, DefId)>> + ) { + storage(ArenaCacheSelector<'tcx>) + desc { "find live symbols in crate" } + } + + query check_mod_deathness(key: LocalDefId) -> () { + desc { |tcx| "checking deathness of variables in {}", describe_as_module(key, tcx) } + } + query check_mod_impl_wf(key: LocalDefId) -> () { desc { |tcx| "checking that impls are well-formed in {}", describe_as_module(key, tcx) } } |
