Skip to content

Commit 55111d6

Browse files
committed
Auto merge of #89266 - cjgillot:session-ich, r=michaelwoerister
Move ICH to rustc_query_system Based on #89183 The StableHashingContext does not need to be in rustc_middle. This PR moves it to rustc_query_system. This will avoid a dependency between rustc_ast_lowering and rustc_middle in #89124.
2 parents 074f636 + b2ed9c4 commit 55111d6

File tree

77 files changed

+168
-221
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+168
-221
lines changed

Cargo.lock

+11
Original file line numberDiff line numberDiff line change
@@ -3671,6 +3671,7 @@ dependencies = [
36713671
"rustc_llvm",
36723672
"rustc_metadata",
36733673
"rustc_middle",
3674+
"rustc_query_system",
36743675
"rustc_serialize",
36753676
"rustc_session",
36763677
"rustc_span",
@@ -3704,6 +3705,7 @@ dependencies = [
37043705
"rustc_macros",
37053706
"rustc_metadata",
37063707
"rustc_middle",
3708+
"rustc_query_system",
37073709
"rustc_serialize",
37083710
"rustc_session",
37093711
"rustc_span",
@@ -3731,6 +3733,7 @@ dependencies = [
37313733
"rustc_macros",
37323734
"rustc_middle",
37333735
"rustc_mir_dataflow",
3736+
"rustc_query_system",
37343737
"rustc_session",
37353738
"rustc_span",
37363739
"rustc_target",
@@ -4165,6 +4168,7 @@ dependencies = [
41654168
"rustc_index",
41664169
"rustc_middle",
41674170
"rustc_mir_dataflow",
4171+
"rustc_query_system",
41684172
"rustc_serialize",
41694173
"rustc_session",
41704174
"rustc_span",
@@ -4295,13 +4299,17 @@ dependencies = [
42954299
"parking_lot",
42964300
"rustc-rayon-core",
42974301
"rustc_arena",
4302+
"rustc_ast",
42984303
"rustc_data_structures",
42994304
"rustc_errors",
4305+
"rustc_feature",
4306+
"rustc_hir",
43004307
"rustc_index",
43014308
"rustc_macros",
43024309
"rustc_serialize",
43034310
"rustc_session",
43044311
"rustc_span",
4312+
"rustc_target",
43054313
"smallvec",
43064314
"tracing",
43074315
]
@@ -4369,6 +4377,7 @@ dependencies = [
43694377
"rustc_errors",
43704378
"rustc_feature",
43714379
"rustc_fs_util",
4380+
"rustc_hir",
43724381
"rustc_lint_defs",
43734382
"rustc_macros",
43744383
"rustc_serialize",
@@ -4404,6 +4413,7 @@ dependencies = [
44044413
"rustc_data_structures",
44054414
"rustc_hir",
44064415
"rustc_middle",
4416+
"rustc_query_system",
44074417
"rustc_session",
44084418
"rustc_span",
44094419
"rustc_target",
@@ -4447,6 +4457,7 @@ dependencies = [
44474457
"rustc_macros",
44484458
"rustc_middle",
44494459
"rustc_parse_format",
4460+
"rustc_query_system",
44504461
"rustc_session",
44514462
"rustc_span",
44524463
"rustc_target",

compiler/rustc_attr/src/builtin.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,21 +66,21 @@ fn handle_errors(sess: &ParseSess, span: Span, error: AttrError) {
6666
}
6767
}
6868

69-
#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug)]
69+
#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
7070
pub enum InlineAttr {
7171
None,
7272
Hint,
7373
Always,
7474
Never,
7575
}
7676

77-
#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq)]
77+
#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq, HashStable_Generic)]
7878
pub enum InstructionSetAttr {
7979
ArmA32,
8080
ArmT32,
8181
}
8282

83-
#[derive(Clone, Encodable, Decodable, Debug)]
83+
#[derive(Clone, Encodable, Decodable, Debug, HashStable_Generic)]
8484
pub enum OptimizeAttr {
8585
None,
8686
Speed,

compiler/rustc_codegen_cranelift/src/archive.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
242242
fn inject_dll_import_lib(
243243
&mut self,
244244
_lib_name: &str,
245-
_dll_imports: &[rustc_middle::middle::cstore::DllImport],
245+
_dll_imports: &[rustc_session::cstore::DllImport],
246246
_tmpdir: &rustc_data_structures::temp_dir::MaybeTempDir,
247247
) {
248248
bug!("injecting dll imports is not supported");

compiler/rustc_codegen_gcc/src/archive.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use std::fs::File;
22
use std::path::{Path, PathBuf};
33

4-
use rustc_session::Session;
54
use rustc_codegen_ssa::back::archive::ArchiveBuilder;
5+
use rustc_session::Session;
66

77
use rustc_data_structures::temp_dir::MaybeTempDir;
8-
use rustc_middle::middle::cstore::DllImport;
9-
8+
use rustc_session::cstore::DllImport;
109

1110
struct ArchiveConfig<'a> {
1211
sess: &'a Session,

compiler/rustc_codegen_llvm/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ rustc_hir = { path = "../rustc_hir" }
2626
rustc_index = { path = "../rustc_index" }
2727
rustc_llvm = { path = "../rustc_llvm" }
2828
rustc_metadata = { path = "../rustc_metadata" }
29+
rustc_query_system = { path = "../rustc_query_system" }
2930
rustc_session = { path = "../rustc_session" }
3031
rustc_serialize = { path = "../rustc_serialize" }
3132
rustc_target = { path = "../rustc_target" }

compiler/rustc_codegen_llvm/src/back/archive.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::llvm::archive_ro::{ArchiveRO, Child};
1111
use crate::llvm::{self, ArchiveKind, LLVMMachineType, LLVMRustCOFFShortExport};
1212
use rustc_codegen_ssa::back::archive::ArchiveBuilder;
1313
use rustc_data_structures::temp_dir::MaybeTempDir;
14-
use rustc_middle::middle::cstore::{DllCallingConvention, DllImport};
14+
use rustc_session::cstore::{DllCallingConvention, DllImport};
1515
use rustc_session::Session;
1616

1717
struct ArchiveConfig<'a> {

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ use rustc_fs_util::path_to_c_string;
2626
use rustc_hir::def::CtorKind;
2727
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
2828
use rustc_index::vec::{Idx, IndexVec};
29-
use rustc_middle::ich::NodeIdHashingMode;
3029
use rustc_middle::mir::{self, GeneratorLayout};
3130
use rustc_middle::ty::layout::{self, IntegerExt, LayoutOf, PrimitiveExt, TyAndLayout};
3231
use rustc_middle::ty::subst::GenericArgKind;
3332
use rustc_middle::ty::Instance;
3433
use rustc_middle::ty::{self, AdtKind, GeneratorSubsts, ParamEnv, Ty, TyCtxt};
3534
use rustc_middle::{bug, span_bug};
35+
use rustc_query_system::ich::NodeIdHashingMode;
3636
use rustc_session::config::{self, DebugInfo};
3737
use rustc_span::symbol::Symbol;
3838
use rustc_span::FileNameDisplayPreference;

compiler/rustc_codegen_ssa/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ rustc_incremental = { path = "../rustc_incremental" }
3333
rustc_index = { path = "../rustc_index" }
3434
rustc_macros = { path = "../rustc_macros" }
3535
rustc_metadata = { path = "../rustc_metadata" }
36+
rustc_query_system = { path = "../rustc_query_system" }
3637
rustc_target = { path = "../rustc_target" }
3738
rustc_session = { path = "../rustc_session" }
3839

compiler/rustc_codegen_ssa/src/back/archive.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc_data_structures::temp_dir::MaybeTempDir;
2-
use rustc_middle::middle::cstore::DllImport;
2+
use rustc_session::cstore::DllImport;
33
use rustc_session::Session;
44
use rustc_span::symbol::Symbol;
55

compiler/rustc_codegen_ssa/src/back/link.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ use rustc_data_structures::temp_dir::MaybeTempDir;
33
use rustc_errors::{ErrorReported, Handler};
44
use rustc_fs_util::fix_windows_verbatim_for_gcc;
55
use rustc_hir::def_id::CrateNum;
6-
use rustc_middle::middle::cstore::DllImport;
76
use rustc_middle::middle::dependency_format::Linkage;
87
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo, LdImpl, Strip};
98
use rustc_session::config::{OutputFilenames, OutputType, PrintRequest};
9+
use rustc_session::cstore::DllImport;
1010
use rustc_session::output::{check_file_is_writeable, invalid_output_for_target, out_filename};
1111
use rustc_session::search_paths::PathKind;
1212
use rustc_session::utils::NativeLibKind;

compiler/rustc_codegen_ssa/src/back/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_data_structures::memmap::Mmap;
88
use rustc_data_structures::owning_ref::OwningRef;
99
use rustc_data_structures::rustc_erase_owner;
1010
use rustc_data_structures::sync::MetadataRef;
11-
use rustc_middle::middle::cstore::MetadataLoader;
11+
use rustc_session::cstore::MetadataLoader;
1212
use rustc_target::spec::Target;
1313

1414
use crate::METADATA_FILENAME;

compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
1616
use rustc_hir as hir;
1717
use rustc_hir::def_id::DefId;
1818
use rustc_hir::definitions::{DefPathData, DefPathDataName, DisambiguatedDefPathData};
19-
use rustc_middle::ich::NodeIdHashingMode;
2019
use rustc_middle::ty::layout::IntegerExt;
2120
use rustc_middle::ty::subst::{GenericArgKind, SubstsRef};
2221
use rustc_middle::ty::{self, AdtDef, ExistentialProjection, Ty, TyCtxt};
22+
use rustc_query_system::ich::NodeIdHashingMode;
2323
use rustc_target::abi::{Integer, TagEncoding, Variants};
2424
use smallvec::SmallVec;
2525

compiler/rustc_codegen_ssa/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ use rustc_data_structures::sync::Lrc;
2525
use rustc_hir::def_id::CrateNum;
2626
use rustc_hir::LangItem;
2727
use rustc_middle::dep_graph::WorkProduct;
28-
use rustc_middle::middle::cstore::{self, CrateSource};
2928
use rustc_middle::middle::dependency_format::Dependencies;
3029
use rustc_middle::ty::query::Providers;
3130
use rustc_session::config::{CrateType, OutputFilenames, OutputType, RUST_CGU_EXT};
31+
use rustc_session::cstore::{self, CrateSource};
3232
use rustc_session::utils::NativeLibKind;
3333
use rustc_span::symbol::Symbol;
3434
use std::path::{Path, PathBuf};

compiler/rustc_codegen_ssa/src/traits/backend.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ use rustc_data_structures::fx::FxHashMap;
88
use rustc_errors::ErrorReported;
99
use rustc_metadata::EncodedMetadata;
1010
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
11-
use rustc_middle::middle::cstore::MetadataLoaderDyn;
1211
use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, LayoutOf, TyAndLayout};
1312
use rustc_middle::ty::query::Providers;
1413
use rustc_middle::ty::{Ty, TyCtxt};
1514
use rustc_session::{
1615
config::{self, OutputFilenames, PrintRequest},
16+
cstore::MetadataLoaderDyn,
1717
Session,
1818
};
1919
use rustc_span::symbol::Symbol;

compiler/rustc_const_eval/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ rustc_infer = { path = "../rustc_infer" }
2121
rustc_macros = { path = "../rustc_macros" }
2222
rustc_middle = { path = "../rustc_middle" }
2323
rustc_mir_dataflow = { path = "../rustc_mir_dataflow" }
24+
rustc_query_system = { path = "../rustc_query_system" }
2425
rustc_session = { path = "../rustc_session" }
2526
rustc_target = { path = "../rustc_target" }
2627
rustc_trait_selection = { path = "../rustc_trait_selection" }

compiler/rustc_const_eval/src/interpret/eval_context.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
66
use rustc_hir::{self as hir, def_id::DefId, definitions::DefPathData};
77
use rustc_index::vec::IndexVec;
88
use rustc_macros::HashStable;
9-
use rustc_middle::ich::StableHashingContext;
109
use rustc_middle::mir;
1110
use rustc_middle::ty::layout::{self, LayoutError, LayoutOf, LayoutOfHelpers, TyAndLayout};
1211
use rustc_middle::ty::{
1312
self, query::TyCtxtAt, subst::SubstsRef, ParamEnv, Ty, TyCtxt, TypeFoldable,
1413
};
1514
use rustc_mir_dataflow::storage::AlwaysLiveLocals;
15+
use rustc_query_system::ich::StableHashingContext;
1616
use rustc_session::Limit;
1717
use rustc_span::{Pos, Span};
1818
use rustc_target::abi::{Align, HasDataLayout, Size, TargetDataLayout};

compiler/rustc_driver/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ use rustc_interface::util::{self, collect_crate_types, get_codegen_backend};
2525
use rustc_interface::{interface, Queries};
2626
use rustc_lint::LintStore;
2727
use rustc_metadata::locator;
28-
use rustc_middle::middle::cstore::MetadataLoader;
2928
use rustc_save_analysis as save;
3029
use rustc_save_analysis::DumpHandler;
3130
use rustc_serialize::json::{self, ToJson};
3231
use rustc_session::config::{nightly_options, CG_OPTIONS, DB_OPTIONS};
3332
use rustc_session::config::{ErrorOutputType, Input, OutputType, PrintRequest, TrimmedDefPaths};
33+
use rustc_session::cstore::MetadataLoader;
3434
use rustc_session::getopts;
3535
use rustc_session::lint::{Lint, LintId};
3636
use rustc_session::{config, DiagnosticOutput, Session};

compiler/rustc_hir/src/stable_hash_impls.rs

+19
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,25 @@ impl<HirCtx: crate::HashStableContext> ToStableHashKey<HirCtx> for HirId {
3333
}
3434
}
3535

36+
impl<HirCtx: crate::HashStableContext> ToStableHashKey<HirCtx> for ItemLocalId {
37+
type KeyType = ItemLocalId;
38+
39+
#[inline]
40+
fn to_stable_hash_key(&self, _: &HirCtx) -> ItemLocalId {
41+
*self
42+
}
43+
}
44+
45+
impl<HirCtx: crate::HashStableContext> ToStableHashKey<HirCtx> for BodyId {
46+
type KeyType = (DefPathHash, ItemLocalId);
47+
48+
#[inline]
49+
fn to_stable_hash_key(&self, hcx: &HirCtx) -> (DefPathHash, ItemLocalId) {
50+
let BodyId { hir_id } = *self;
51+
hir_id.to_stable_hash_key(hcx)
52+
}
53+
}
54+
3655
impl<HirCtx: crate::HashStableContext> ToStableHashKey<HirCtx> for ItemId {
3756
type KeyType = DefPathHash;
3857

compiler/rustc_interface/src/passes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use rustc_metadata::creader::CStore;
1919
use rustc_metadata::{encode_metadata, EncodedMetadata};
2020
use rustc_middle::arena::Arena;
2121
use rustc_middle::dep_graph::DepGraph;
22-
use rustc_middle::middle::cstore::{MetadataLoader, MetadataLoaderDyn};
2322
use rustc_middle::ty::query::Providers;
2423
use rustc_middle::ty::{self, GlobalCtxt, ResolverOutputs, TyCtxt};
2524
use rustc_mir_build as mir_build;
@@ -30,6 +29,7 @@ use rustc_query_impl::{OnDiskCache, Queries as TcxQueries};
3029
use rustc_resolve::{Resolver, ResolverArenas};
3130
use rustc_serialize::json;
3231
use rustc_session::config::{CrateType, Input, OutputFilenames, OutputType, PpMode, PpSourceMode};
32+
use rustc_session::cstore::{MetadataLoader, MetadataLoaderDyn};
3333
use rustc_session::lint;
3434
use rustc_session::output::{filename_for_input, filename_for_metadata};
3535
use rustc_session::search_paths::PathKind;

compiler/rustc_macros/src/hash_stable.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,14 @@ pub fn hash_stable_derive(mut s: synstructure::Structure<'_>) -> proc_macro2::To
116116
s.bound_impl(
117117
quote!(
118118
::rustc_data_structures::stable_hasher::HashStable<
119-
::rustc_middle::ich::StableHashingContext<'__ctx>,
119+
::rustc_query_system::ich::StableHashingContext<'__ctx>,
120120
>
121121
),
122122
quote! {
123123
#[inline]
124124
fn hash_stable(
125125
&self,
126-
__hcx: &mut ::rustc_middle::ich::StableHashingContext<'__ctx>,
126+
__hcx: &mut ::rustc_query_system::ich::StableHashingContext<'__ctx>,
127127
__hasher: &mut ::rustc_data_structures::stable_hasher::StableHasher) {
128128
#discriminant
129129
match *self { #body }

compiler/rustc_metadata/src/creader.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ use rustc_expand::base::SyntaxExtension;
1313
use rustc_hir::def_id::{CrateNum, LocalDefId, StableCrateId, LOCAL_CRATE};
1414
use rustc_hir::definitions::Definitions;
1515
use rustc_index::vec::IndexVec;
16-
use rustc_middle::middle::cstore::{CrateDepKind, CrateSource, ExternCrate};
17-
use rustc_middle::middle::cstore::{ExternCrateSource, MetadataLoaderDyn};
1816
use rustc_middle::ty::TyCtxt;
1917
use rustc_serialize::json::ToJson;
2018
use rustc_session::config::{self, CrateType, ExternLocation};
19+
use rustc_session::cstore::{CrateDepKind, CrateSource, ExternCrate};
20+
use rustc_session::cstore::{ExternCrateSource, MetadataLoaderDyn};
2121
use rustc_session::lint::{self, BuiltinLintDiagnostics, ExternDepSpec};
2222
use rustc_session::output::validate_crate_name;
2323
use rustc_session::search_paths::PathKind;

compiler/rustc_metadata/src/dependency_format.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ use crate::creader::CStore;
5555

5656
use rustc_data_structures::fx::FxHashMap;
5757
use rustc_hir::def_id::CrateNum;
58-
use rustc_middle::middle::cstore::CrateDepKind;
59-
use rustc_middle::middle::cstore::LinkagePreference::{self, RequireDynamic, RequireStatic};
6058
use rustc_middle::middle::dependency_format::{Dependencies, DependencyList, Linkage};
6159
use rustc_middle::ty::TyCtxt;
6260
use rustc_session::config::CrateType;
61+
use rustc_session::cstore::CrateDepKind;
62+
use rustc_session::cstore::LinkagePreference::{self, RequireDynamic, RequireStatic};
6363
use rustc_target::spec::PanicStrategy;
6464

6565
crate fn calculate(tcx: TyCtxt<'_>) -> Dependencies {

compiler/rustc_metadata/src/foreign_modules.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rustc_hir as hir;
22
use rustc_hir::itemlikevisit::ItemLikeVisitor;
3-
use rustc_middle::middle::cstore::ForeignModule;
43
use rustc_middle::ty::TyCtxt;
4+
use rustc_session::cstore::ForeignModule;
55

66
crate fn collect(tcx: TyCtxt<'_>) -> Vec<ForeignModule> {
77
let mut collector = Collector { modules: Vec::new() };

compiler/rustc_metadata/src/locator.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ use rustc_data_structures::owning_ref::OwningRef;
221221
use rustc_data_structures::svh::Svh;
222222
use rustc_data_structures::sync::MetadataRef;
223223
use rustc_errors::struct_span_err;
224-
use rustc_middle::middle::cstore::{CrateSource, MetadataLoader};
225224
use rustc_session::config::{self, CrateType};
225+
use rustc_session::cstore::{CrateSource, MetadataLoader};
226226
use rustc_session::filesearch::{FileDoesntMatch, FileMatches, FileSearch};
227227
use rustc_session::search_paths::PathKind;
228228
use rustc_session::utils::CanonicalizedPath;

compiler/rustc_metadata/src/native_libs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use rustc_data_structures::fx::FxHashSet;
33
use rustc_errors::struct_span_err;
44
use rustc_hir as hir;
55
use rustc_hir::itemlikevisit::ItemLikeVisitor;
6-
use rustc_middle::middle::cstore::{DllCallingConvention, DllImport, NativeLib};
76
use rustc_middle::ty::{List, ParamEnv, ParamEnvAnd, Ty, TyCtxt};
7+
use rustc_session::cstore::{DllCallingConvention, DllImport, NativeLib};
88
use rustc_session::parse::feature_err;
99
use rustc_session::utils::NativeLibKind;
1010
use rustc_session::Session;

0 commit comments

Comments
 (0)