Skip to content

Commit eb9092d

Browse files
committed
Auto merge of #59064 - Zoxc:query-hir, r=<try>
Turn HIR indexing into a query r? @michaelwoerister
2 parents 70d1150 + 30e23f6 commit eb9092d

File tree

11 files changed

+218
-158
lines changed

11 files changed

+218
-158
lines changed

Cargo.lock

+20-21
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ dependencies = [
239239
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
240240
"core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
241241
"crates-io 0.24.0",
242-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
242+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
243243
"crypto-hash 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
244244
"curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
245245
"curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -568,13 +568,10 @@ dependencies = [
568568

569569
[[package]]
570570
name = "crossbeam-channel"
571-
version = "0.3.4"
571+
version = "0.3.8"
572572
source = "registry+https://github.com/rust-lang/crates.io-index"
573573
dependencies = [
574-
"crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
575-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
576-
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
577-
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
574+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
578575
"smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)",
579576
]
580577

@@ -592,8 +589,8 @@ name = "crossbeam-deque"
592589
version = "0.6.3"
593590
source = "registry+https://github.com/rust-lang/crates.io-index"
594591
dependencies = [
595-
"crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
596-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
592+
"crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
593+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
597594
]
598595

599596
[[package]]
@@ -612,12 +609,12 @@ dependencies = [
612609

613610
[[package]]
614611
name = "crossbeam-epoch"
615-
version = "0.7.0"
612+
version = "0.7.1"
616613
source = "registry+https://github.com/rust-lang/crates.io-index"
617614
dependencies = [
618615
"arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
619616
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
620-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
617+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
621618
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
622619
"memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
623620
"scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -633,10 +630,11 @@ dependencies = [
633630

634631
[[package]]
635632
name = "crossbeam-utils"
636-
version = "0.6.2"
633+
version = "0.6.5"
637634
source = "registry+https://github.com/rust-lang/crates.io-index"
638635
dependencies = [
639636
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
637+
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
640638
]
641639

642640
[[package]]
@@ -1122,7 +1120,7 @@ name = "ignore"
11221120
version = "0.4.6"
11231121
source = "registry+https://github.com/rust-lang/crates.io-index"
11241122
dependencies = [
1125-
"crossbeam-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
1123+
"crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
11261124
"globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
11271125
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
11281126
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2235,7 +2233,7 @@ dependencies = [
22352233
"cargo 0.36.0",
22362234
"cargo_metadata 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
22372235
"clippy_lints 0.0.212",
2238-
"crossbeam-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
2236+
"crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
22392237
"difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
22402238
"env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
22412239
"failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2672,6 +2670,7 @@ name = "rustc_data_structures"
26722670
version = "0.0.0"
26732671
dependencies = [
26742672
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
2673+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
26752674
"ena 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
26762675
"graphviz 0.0.0",
26772676
"jobserver 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3585,7 +3584,7 @@ name = "tokio-executor"
35853584
version = "0.1.6"
35863585
source = "registry+https://github.com/rust-lang/crates.io-index"
35873586
dependencies = [
3588-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
3587+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
35893588
"futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
35903589
]
35913590

@@ -3629,7 +3628,7 @@ name = "tokio-reactor"
36293628
version = "0.1.8"
36303629
source = "registry+https://github.com/rust-lang/crates.io-index"
36313630
dependencies = [
3632-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
3631+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
36333632
"futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
36343633
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
36353634
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3675,9 +3674,9 @@ name = "tokio-threadpool"
36753674
version = "0.1.10"
36763675
source = "registry+https://github.com/rust-lang/crates.io-index"
36773676
dependencies = [
3678-
"crossbeam-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
3677+
"crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
36793678
"crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
3680-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
3679+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
36813680
"futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
36823681
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
36833682
"num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3690,7 +3689,7 @@ name = "tokio-timer"
36903689
version = "0.2.8"
36913690
source = "registry+https://github.com/rust-lang/crates.io-index"
36923691
dependencies = [
3693-
"crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
3692+
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
36943693
"futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
36953694
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
36963695
"tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -4035,13 +4034,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
40354034
"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
40364035
"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb"
40374036
"checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192"
4038-
"checksum crossbeam-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5b2a9ea8f77c7f9efd317a8a5645f515d903a2d86ee14d2337a5facd1bd52c12"
4037+
"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b"
40394038
"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3"
40404039
"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
40414040
"checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150"
4042-
"checksum crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f10a4f8f409aaac4b16a5474fb233624238fcdeefb9ba50d5ea059aab63ba31c"
4041+
"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4"
40434042
"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9"
4044-
"checksum crossbeam-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e07fc155212827475223f0bcfae57e945e694fc90950ddf3f6695bbfd5555c72"
4043+
"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c"
40454044
"checksum crypto-hash 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "09de9ee0fc255ace04c7fa0763c9395a945c37c8292bb554f8d48361d1dcf1b4"
40464045
"checksum curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "c7c9d851c825e0c033979d4516c9173bc19a78a96eb4d6ae51d4045440eafa16"
40474046
"checksum curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "721c204978be2143fab0a84b708c49d79d1f6100b8785610f456043a90708870"

src/librustc/dep_graph/dep_node.rs

+30-47
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ macro_rules! is_anon_attr {
8585
($attr:ident) => (false);
8686
}
8787

88-
macro_rules! is_input_attr {
89-
(input) => (true);
90-
($attr:ident) => (false);
91-
}
92-
9388
macro_rules! is_eval_always_attr {
9489
(eval_always) => (true);
9590
($attr:ident) => (false);
@@ -99,10 +94,6 @@ macro_rules! contains_anon_attr {
9994
($($attr:ident),*) => ({$(is_anon_attr!($attr) | )* false});
10095
}
10196

102-
macro_rules! contains_input_attr {
103-
($($attr:ident),*) => ({$(is_input_attr!($attr) | )* false});
104-
}
105-
10697
macro_rules! contains_eval_always_attr {
10798
($($attr:ident),*) => ({$(is_eval_always_attr!($attr) | )* false});
10899
}
@@ -151,7 +142,7 @@ macro_rules! define_dep_nodes {
151142
}
152143
}
153144

154-
// FIXME: Make `is_anon`, `is_input`, `is_eval_always` and `has_params` properties
145+
// FIXME: Make `is_anon`, `is_eval_always` and `has_params` properties
155146
// of queries
156147
#[inline(always)]
157148
pub fn is_anon(&self) -> bool {
@@ -162,15 +153,6 @@ macro_rules! define_dep_nodes {
162153
}
163154
}
164155

165-
#[inline(always)]
166-
pub fn is_input(&self) -> bool {
167-
match *self {
168-
$(
169-
DepKind :: $variant => { contains_input_attr!($($attr),*) }
170-
)*
171-
}
172-
}
173-
174156
#[inline(always)]
175157
pub fn is_eval_always(&self) -> bool {
176158
match *self {
@@ -438,17 +420,17 @@ define_dep_nodes!( <'tcx>
438420
// suitable wrapper, you can use `tcx.dep_graph.ignore()` to gain
439421
// access to the krate, but you must remember to add suitable
440422
// edges yourself for the individual items that you read.
441-
[input] Krate,
423+
[eval_always] Krate,
442424

443425
// Represents the body of a function or method. The def-id is that of the
444426
// function/method.
445-
[input] HirBody(DefId),
427+
[eval_always] HirBody(DefId),
446428

447429
// Represents the HIR node with the given node-id
448-
[input] Hir(DefId),
430+
[eval_always] Hir(DefId),
449431

450432
// Represents metadata from an extern crate.
451-
[input] CrateMetadata(CrateNum),
433+
[eval_always] CrateMetadata(CrateNum),
452434

453435
// Represents different phases in the compiler.
454436
[] RegionScopeTree(DefId),
@@ -458,6 +440,7 @@ define_dep_nodes!( <'tcx>
458440
[eval_always] PrivacyAccessLevels(CrateNum),
459441
[eval_always] CheckPrivateInPublic(CrateNum),
460442
[eval_always] Analysis(CrateNum),
443+
[eval_always] HirMap(CrateNum),
461444

462445
// Represents the MIR for a fn; also used as the task node for
463446
// things read/modify that MIR.
@@ -486,7 +469,7 @@ define_dep_nodes!( <'tcx>
486469

487470
[] Reachability,
488471
[] MirKeys,
489-
[eval_always] CrateVariances,
472+
[] CrateVariances,
490473

491474
// Nodes representing bits of computed IR in the tcx. Each shared
492475
// table in the tcx (or elsewhere) maps to one of these
@@ -542,7 +525,7 @@ define_dep_nodes!( <'tcx>
542525
// The set of impls for a given trait.
543526
[] TraitImpls(DefId),
544527

545-
[input] AllLocalTraitImpls,
528+
[eval_always] AllLocalTraitImpls,
546529

547530
[anon] TraitSelect,
548531

@@ -555,7 +538,7 @@ define_dep_nodes!( <'tcx>
555538
// to make type debuginfo to be source location independent. Declaring
556539
// DefSpan an input makes sure that changes to these are always detected
557540
// regardless of HIR hashing.
558-
[input] DefSpan(DefId),
541+
[eval_always] DefSpan(DefId),
559542
[] LookupStability(DefId),
560543
[] LookupDeprecationEntry(DefId),
561544
[] ConstIsRvaluePromotableToStatic(DefId),
@@ -574,11 +557,11 @@ define_dep_nodes!( <'tcx>
574557
[] IsCompilerBuiltins(CrateNum),
575558
[] HasGlobalAllocator(CrateNum),
576559
[] HasPanicHandler(CrateNum),
577-
[input] ExternCrate(DefId),
560+
[eval_always] ExternCrate(DefId),
578561
[eval_always] LintLevels,
579562
[] Specializes { impl1: DefId, impl2: DefId },
580-
[input] InScopeTraits(DefIndex),
581-
[input] ModuleExports(DefId),
563+
[eval_always] InScopeTraits(DefIndex),
564+
[eval_always] ModuleExports(DefId),
582565
[] IsSanitizerRuntime(CrateNum),
583566
[] IsProfilerRuntime(CrateNum),
584567
[] GetPanicStrategy(CrateNum),
@@ -592,10 +575,10 @@ define_dep_nodes!( <'tcx>
592575
[] EntryFn(CrateNum),
593576
[] PluginRegistrarFn(CrateNum),
594577
[] ProcMacroDeclsStatic(CrateNum),
595-
[input] CrateDisambiguator(CrateNum),
596-
[input] CrateHash(CrateNum),
597-
[input] OriginalCrateName(CrateNum),
598-
[input] ExtraFileName(CrateNum),
578+
[eval_always] CrateDisambiguator(CrateNum),
579+
[eval_always] CrateHash(CrateNum),
580+
[eval_always] OriginalCrateName(CrateNum),
581+
[eval_always] ExtraFileName(CrateNum),
599582

600583
[] ImplementationsOfTrait { krate: CrateNum, trait_id: DefId },
601584
[] AllTraitImplementations(CrateNum),
@@ -604,16 +587,16 @@ define_dep_nodes!( <'tcx>
604587
[] IsDllimportForeignItem(DefId),
605588
[] IsStaticallyIncludedForeignItem(DefId),
606589
[] NativeLibraryKind(DefId),
607-
[input] LinkArgs,
590+
[eval_always] LinkArgs,
608591

609592
[] ResolveLifetimes(CrateNum),
610593
[] NamedRegion(DefIndex),
611594
[] IsLateBound(DefIndex),
612595
[] ObjectLifetimeDefaults(DefIndex),
613596

614597
[] Visibility(DefId),
615-
[input] DepKind(CrateNum),
616-
[input] CrateName(CrateNum),
598+
[eval_always] DepKind(CrateNum),
599+
[eval_always] CrateName(CrateNum),
617600
[] ItemChildren(DefId),
618601
[] ExternModStmtCnum(DefId),
619602
[eval_always] GetLibFeatures,
@@ -622,9 +605,9 @@ define_dep_nodes!( <'tcx>
622605
[] DefinedLangItems(CrateNum),
623606
[] MissingLangItems(CrateNum),
624607
[] VisibleParentMap,
625-
[input] MissingExternCrateItem(CrateNum),
626-
[input] UsedCrateSource(CrateNum),
627-
[input] PostorderCnums,
608+
[eval_always] MissingExternCrateItem(CrateNum),
609+
[eval_always] UsedCrateSource(CrateNum),
610+
[eval_always] PostorderCnums,
628611

629612
// These queries are not expected to have inputs -- as a result, they
630613
// are not good candidates for "replay" because they are essentially
@@ -634,20 +617,20 @@ define_dep_nodes!( <'tcx>
634617
// may save a bit of time.
635618
[anon] EraseRegionsTy { ty: Ty<'tcx> },
636619

637-
[input] Freevars(DefId),
638-
[input] MaybeUnusedTraitImport(DefId),
639-
[input] MaybeUnusedExternCrates,
640-
[input] NamesImportedByGlobUse(DefId),
620+
[eval_always] Freevars(DefId),
621+
[eval_always] MaybeUnusedTraitImport(DefId),
622+
[eval_always] MaybeUnusedExternCrates,
623+
[eval_always] NamesImportedByGlobUse(DefId),
641624
[eval_always] StabilityIndex,
642625
[eval_always] AllTraits,
643-
[input] AllCrateNums,
626+
[eval_always] AllCrateNums,
644627
[] ExportedSymbols(CrateNum),
645628
[eval_always] CollectAndPartitionMonoItems,
646629
[] IsCodegenedItem(DefId),
647630
[] CodegenUnit(InternedString),
648631
[] BackendOptimizationLevel(CrateNum),
649632
[] CompileCodegenUnit(InternedString),
650-
[input] OutputFilenames,
633+
[eval_always] OutputFilenames,
651634
[] NormalizeProjectionTy(CanonicalProjectionGoal<'tcx>),
652635
[] NormalizeTyAfterErasingRegions(ParamEnvAnd<'tcx, Ty<'tcx>>),
653636
[] ImpliedOutlivesBounds(CanonicalTyGoal<'tcx>),
@@ -666,11 +649,11 @@ define_dep_nodes!( <'tcx>
666649
[] SubstituteNormalizeAndTestPredicates { key: (DefId, SubstsRef<'tcx>) },
667650
[] MethodAutoderefSteps(CanonicalTyGoal<'tcx>),
668651

669-
[input] TargetFeaturesWhitelist,
652+
[eval_always] TargetFeaturesWhitelist,
670653

671654
[] InstanceDefSizeEstimate { instance_def: InstanceDef<'tcx> },
672655

673-
[input] Features,
656+
[eval_always] Features,
674657

675658
[] ProgramClausesFor(DefId),
676659
[] ProgramClausesForEnv(traits::Environment<'tcx>),

0 commit comments

Comments
 (0)