Skip to content

Commit 4b21e20

Browse files
authored
Rollup merge of rust-lang#62169 - Zoxc:store-query-results, r=eddyb
Derive which queries to save using the proc macro Based on rust-lang#62166. r? @eddyb
2 parents 1d45156 + b9344e3 commit 4b21e20

File tree

3 files changed

+26
-24
lines changed

3 files changed

+26
-24
lines changed

src/librustc/query/mod.rs

-5
Original file line numberDiff line numberDiff line change
@@ -422,11 +422,6 @@ rustc_queries! {
422422
"const-evaluating `{}`",
423423
tcx.def_path_str(key.value.instance.def.def_id())
424424
}
425-
cache_on_disk_if(_, opt_result) {
426-
// Only store results without errors
427-
// FIXME: We never store these
428-
opt_result.map_or(true, |r| r.is_ok())
429-
}
430425
}
431426

432427
/// Results of evaluating const items or constants embedded in

src/librustc/ty/query/on_disk_cache.rs

+13-19
Original file line numberDiff line numberDiff line change
@@ -201,28 +201,22 @@ impl<'sess> OnDiskCache<'sess> {
201201
let mut query_result_index = EncodedQueryResultIndex::new();
202202

203203
time(tcx.sess, "encode query results", || {
204-
use crate::ty::query::queries::*;
205204
let enc = &mut encoder;
206205
let qri = &mut query_result_index;
207206

208-
encode_query_results::<type_of<'_>, _>(tcx, enc, qri)?;
209-
encode_query_results::<generics_of<'_>, _>(tcx, enc, qri)?;
210-
encode_query_results::<predicates_of<'_>, _>(tcx, enc, qri)?;
211-
encode_query_results::<used_trait_imports<'_>, _>(tcx, enc, qri)?;
212-
encode_query_results::<typeck_tables_of<'_>, _>(tcx, enc, qri)?;
213-
encode_query_results::<codegen_fulfill_obligation<'_>, _>(tcx, enc, qri)?;
214-
encode_query_results::<optimized_mir<'_>, _>(tcx, enc, qri)?;
215-
encode_query_results::<unsafety_check_result<'_>, _>(tcx, enc, qri)?;
216-
encode_query_results::<borrowck<'_>, _>(tcx, enc, qri)?;
217-
encode_query_results::<mir_borrowck<'_>, _>(tcx, enc, qri)?;
218-
encode_query_results::<mir_const_qualif<'_>, _>(tcx, enc, qri)?;
219-
encode_query_results::<const_is_rvalue_promotable_to_static<'_>, _>(tcx, enc, qri)?;
220-
encode_query_results::<symbol_name<'_>, _>(tcx, enc, qri)?;
221-
encode_query_results::<check_match<'_>, _>(tcx, enc, qri)?;
222-
encode_query_results::<codegen_fn_attrs<'_>, _>(tcx, enc, qri)?;
223-
encode_query_results::<specialization_graph_of<'_>, _>(tcx, enc, qri)?;
224-
encode_query_results::<const_eval<'_>, _>(tcx, enc, qri)?;
225-
// FIXME: Include const_eval_raw?
207+
macro_rules! encode_queries {
208+
($($query:ident,)*) => {
209+
$(
210+
encode_query_results::<ty::query::queries::$query<'_>, _>(
211+
tcx,
212+
enc,
213+
qri
214+
)?;
215+
)*
216+
}
217+
}
218+
219+
rustc_cached_queries!(encode_queries!);
226220

227221
Ok(())
228222
})?;

src/librustc_macros/src/query.rs

+13
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
414414
let mut dep_node_force_stream = quote! {};
415415
let mut try_load_from_on_disk_cache_stream = quote! {};
416416
let mut no_force_queries = Vec::new();
417+
let mut cached_queries = quote! {};
417418

418419
for group in groups.0 {
419420
let mut group_stream = quote! {};
@@ -427,6 +428,12 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
427428
_ => quote! { #result_full },
428429
};
429430

431+
if modifiers.cache.is_some() {
432+
cached_queries.extend(quote! {
433+
#name,
434+
});
435+
}
436+
430437
if modifiers.cache.is_some() && !modifiers.no_force {
431438
try_load_from_on_disk_cache_stream.extend(quote! {
432439
DepKind::#name => {
@@ -549,6 +556,12 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
549556
}
550557
}
551558
}
559+
macro_rules! rustc_cached_queries {
560+
($($macro:tt)*) => {
561+
$($macro)*(#cached_queries);
562+
}
563+
}
564+
552565
#query_description_stream
553566

554567
impl DepNode {

0 commit comments

Comments
 (0)