Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 76531be

Browse files
committedAug 25, 2022
Auto merge of rust-lang#100436 - jyn514:macro-query-system, r=cjgillot
try and simplify some things in the query system
2 parents 9b9bc63 + e188868 commit 76531be

File tree

7 files changed

+120
-113
lines changed

7 files changed

+120
-113
lines changed
 

‎compiler/rustc_macros/src/query.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -400,10 +400,8 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
400400
TokenStream::from(quote! {
401401
#[macro_export]
402402
macro_rules! rustc_query_append {
403-
([$($macro:tt)*][$($other:tt)*]) => {
403+
([$($macro:tt)*]) => {
404404
$($macro)* {
405-
$($other)*
406-
407405
#query_stream
408406
}
409407
}

‎compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ impl ProcessQueryValue<'_, Option<DeprecationEntry>> for Option<Deprecation> {
7676
}
7777

7878
macro_rules! provide_one {
79-
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => { table }) => {
79+
($tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => { table }) => {
8080
provide_one! {
81-
<$lt> $tcx, $def_id, $other, $cdata, $name => {
81+
$tcx, $def_id, $other, $cdata, $name => {
8282
$cdata
8383
.root
8484
.tables
@@ -89,9 +89,9 @@ macro_rules! provide_one {
8989
}
9090
}
9191
};
92-
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => { table_direct }) => {
92+
($tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => { table_direct }) => {
9393
provide_one! {
94-
<$lt> $tcx, $def_id, $other, $cdata, $name => {
94+
$tcx, $def_id, $other, $cdata, $name => {
9595
// We don't decode `table_direct`, since it's not a Lazy, but an actual value
9696
$cdata
9797
.root
@@ -102,11 +102,11 @@ macro_rules! provide_one {
102102
}
103103
}
104104
};
105-
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => $compute:block) => {
106-
fn $name<$lt>(
107-
$tcx: TyCtxt<$lt>,
108-
def_id_arg: ty::query::query_keys::$name<$lt>,
109-
) -> ty::query::query_values::$name<$lt> {
105+
($tcx:ident, $def_id:ident, $other:ident, $cdata:ident, $name:ident => $compute:block) => {
106+
fn $name<'tcx>(
107+
$tcx: TyCtxt<'tcx>,
108+
def_id_arg: ty::query::query_keys::$name<'tcx>,
109+
) -> ty::query::query_values::$name<'tcx> {
110110
let _prof_timer =
111111
$tcx.prof.generic_activity(concat!("metadata_decode_entry_", stringify!($name)));
112112

@@ -130,11 +130,11 @@ macro_rules! provide_one {
130130
}
131131

132132
macro_rules! provide {
133-
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident,
133+
($tcx:ident, $def_id:ident, $other:ident, $cdata:ident,
134134
$($name:ident => { $($compute:tt)* })*) => {
135135
pub fn provide_extern(providers: &mut ExternProviders) {
136136
$(provide_one! {
137-
<$lt> $tcx, $def_id, $other, $cdata, $name => { $($compute)* }
137+
$tcx, $def_id, $other, $cdata, $name => { $($compute)* }
138138
})*
139139

140140
*providers = ExternProviders {
@@ -187,7 +187,7 @@ impl IntoArgs for (CrateNum, SimplifiedType) {
187187
}
188188
}
189189

190-
provide! { <'tcx> tcx, def_id, other, cdata,
190+
provide! { tcx, def_id, other, cdata,
191191
explicit_item_bounds => { table }
192192
explicit_predicates_of => { table }
193193
generics_of => { table }

‎compiler/rustc_middle/src/dep_graph/dep_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ impl DepKind {
143143
}
144144

145145
macro_rules! define_dep_nodes {
146-
(<$tcx:tt>
146+
(
147147
$(
148148
[$($attrs:tt)*]
149149
$variant:ident $(( $tuple_arg_ty:ty $(,)? ))*
@@ -179,7 +179,7 @@ macro_rules! define_dep_nodes {
179179
);
180180
}
181181

182-
rustc_dep_node_append!([define_dep_nodes!][ <'tcx>
182+
rustc_dep_node_append!([define_dep_nodes!][
183183
// We use this for most things when incr. comp. is turned off.
184184
[] Null,
185185

‎compiler/rustc_middle/src/ty/query.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ macro_rules! opt_remap_env_constness {
173173
}
174174

175175
macro_rules! define_callbacks {
176-
(<$tcx:tt>
176+
(
177177
$($(#[$attr:meta])*
178178
[$($modifiers:tt)*] fn $name:ident($($K:tt)*) -> $V:ty,)*) => {
179179

@@ -187,33 +187,33 @@ macro_rules! define_callbacks {
187187
pub mod query_keys {
188188
use super::*;
189189

190-
$(pub type $name<$tcx> = $($K)*;)*
190+
$(pub type $name<'tcx> = $($K)*;)*
191191
}
192192
#[allow(nonstandard_style, unused_lifetimes)]
193193
pub mod query_values {
194194
use super::*;
195195

196-
$(pub type $name<$tcx> = $V;)*
196+
$(pub type $name<'tcx> = $V;)*
197197
}
198198
#[allow(nonstandard_style, unused_lifetimes)]
199199
pub mod query_storage {
200200
use super::*;
201201

202-
$(pub type $name<$tcx> = query_storage!([$($modifiers)*][$($K)*, $V]);)*
202+
$(pub type $name<'tcx> = query_storage!([$($modifiers)*][$($K)*, $V]);)*
203203
}
204204
#[allow(nonstandard_style, unused_lifetimes)]
205205
pub mod query_stored {
206206
use super::*;
207207

208-
$(pub type $name<$tcx> = <query_storage::$name<$tcx> as QueryStorage>::Stored;)*
208+
$(pub type $name<'tcx> = <query_storage::$name<'tcx> as QueryStorage>::Stored;)*
209209
}
210210

211211
#[derive(Default)]
212-
pub struct QueryCaches<$tcx> {
213-
$($(#[$attr])* pub $name: query_storage::$name<$tcx>,)*
212+
pub struct QueryCaches<'tcx> {
213+
$($(#[$attr])* pub $name: query_storage::$name<'tcx>,)*
214214
}
215215

216-
impl<$tcx> TyCtxtEnsure<$tcx> {
216+
impl<'tcx> TyCtxtEnsure<'tcx> {
217217
$($(#[$attr])*
218218
#[inline(always)]
219219
pub fn $name(self, key: query_helper_param_ty!($($K)*)) {
@@ -231,20 +231,20 @@ macro_rules! define_callbacks {
231231
})*
232232
}
233233

234-
impl<$tcx> TyCtxt<$tcx> {
234+
impl<'tcx> TyCtxt<'tcx> {
235235
$($(#[$attr])*
236236
#[inline(always)]
237237
#[must_use]
238-
pub fn $name(self, key: query_helper_param_ty!($($K)*)) -> query_stored::$name<$tcx>
238+
pub fn $name(self, key: query_helper_param_ty!($($K)*)) -> query_stored::$name<'tcx>
239239
{
240240
self.at(DUMMY_SP).$name(key)
241241
})*
242242
}
243243

244-
impl<$tcx> TyCtxtAt<$tcx> {
244+
impl<'tcx> TyCtxtAt<'tcx> {
245245
$($(#[$attr])*
246246
#[inline(always)]
247-
pub fn $name(self, key: query_helper_param_ty!($($K)*)) -> query_stored::$name<$tcx>
247+
pub fn $name(self, key: query_helper_param_ty!($($K)*)) -> query_stored::$name<'tcx>
248248
{
249249
let key = key.into_query_param();
250250
opt_remap_env_constness!([$($modifiers)*][key]);
@@ -311,11 +311,11 @@ macro_rules! define_callbacks {
311311
$($(#[$attr])*
312312
fn $name(
313313
&'tcx self,
314-
tcx: TyCtxt<$tcx>,
314+
tcx: TyCtxt<'tcx>,
315315
span: Span,
316-
key: query_keys::$name<$tcx>,
316+
key: query_keys::$name<'tcx>,
317317
mode: QueryMode,
318-
) -> Option<query_stored::$name<$tcx>>;)*
318+
) -> Option<query_stored::$name<'tcx>>;)*
319319
}
320320
};
321321
}
@@ -332,7 +332,7 @@ macro_rules! define_callbacks {
332332
// Queries marked with `fatal_cycle` do not need the latter implementation,
333333
// as they will raise an fatal error on query cycles instead.
334334

335-
rustc_query_append! { [define_callbacks!][<'tcx>] }
335+
rustc_query_append! { [define_callbacks!] }
336336

337337
mod sealed {
338338
use super::{DefId, LocalDefId};

‎compiler/rustc_query_impl/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ extern crate rustc_macros;
1515
#[macro_use]
1616
extern crate rustc_middle;
1717

18-
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
1918
use rustc_data_structures::sync::AtomicU64;
2019
use rustc_middle::arena::Arena;
2120
use rustc_middle::dep_graph::{self, DepKindStruct, SerializedDepNodeIndex};
@@ -55,7 +54,7 @@ fn describe_as_module(def_id: LocalDefId, tcx: TyCtxt<'_>) -> String {
5554
}
5655
}
5756

58-
rustc_query_append! { [define_queries!][<'tcx>] }
57+
rustc_query_append! { [define_queries!] }
5958

6059
impl<'tcx> Queries<'tcx> {
6160
// Force codegen in the dyn-trait transformation in this crate.

‎compiler/rustc_query_impl/src/plumbing.rs

Lines changed: 86 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@
22
//! generate the actual methods on tcx which find and execute the provider,
33
//! manage the caches, and so forth.
44
5+
use crate::keys::Key;
56
use crate::{on_disk_cache, Queries};
6-
use rustc_middle::dep_graph::{DepNodeIndex, SerializedDepNodeIndex};
7+
use rustc_middle::dep_graph::{self, DepKind, DepNodeIndex, SerializedDepNodeIndex};
78
use rustc_middle::ty::tls::{self, ImplicitCtxt};
8-
use rustc_middle::ty::TyCtxt;
9+
use rustc_middle::ty::{self, TyCtxt};
910
use rustc_query_system::dep_graph::HasDepContext;
10-
use rustc_query_system::query::{QueryContext, QueryJobId, QueryMap, QuerySideEffects};
11+
use rustc_query_system::ich::StableHashingContext;
12+
use rustc_query_system::query::{
13+
QueryContext, QueryJobId, QueryMap, QuerySideEffects, QueryStackFrame,
14+
};
1115

16+
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
1217
use rustc_data_structures::sync::Lock;
1318
use rustc_data_structures::thin_vec::ThinVec;
1419
use rustc_errors::{Diagnostic, Handler};
@@ -233,12 +238,58 @@ macro_rules! get_provider {
233238
};
234239
}
235240

241+
pub(crate) fn create_query_frame<
242+
'tcx,
243+
K: Copy + Key + for<'a> HashStable<StableHashingContext<'a>>,
244+
>(
245+
tcx: QueryCtxt<'tcx>,
246+
do_describe: fn(QueryCtxt<'tcx>, K) -> String,
247+
key: K,
248+
kind: DepKind,
249+
name: &'static str,
250+
) -> QueryStackFrame {
251+
// Disable visible paths printing for performance reasons.
252+
// Showing visible path instead of any path is not that important in production.
253+
let description = ty::print::with_no_visible_paths!(
254+
// Force filename-line mode to avoid invoking `type_of` query.
255+
ty::print::with_forced_impl_filename_line!(do_describe(tcx, key))
256+
);
257+
let description =
258+
if tcx.sess.verbose() { format!("{} [{}]", description, name) } else { description };
259+
let span = if kind == dep_graph::DepKind::def_span {
260+
// The `def_span` query is used to calculate `default_span`,
261+
// so exit to avoid infinite recursion.
262+
None
263+
} else {
264+
Some(key.default_span(*tcx))
265+
};
266+
let def_kind = if kind == dep_graph::DepKind::opt_def_kind {
267+
// Try to avoid infinite recursion.
268+
None
269+
} else {
270+
key.key_as_def_id()
271+
.and_then(|def_id| def_id.as_local())
272+
.and_then(|def_id| tcx.opt_def_kind(def_id))
273+
};
274+
let hash = || {
275+
tcx.with_stable_hashing_context(|mut hcx| {
276+
let mut hasher = StableHasher::new();
277+
std::mem::discriminant(&kind).hash_stable(&mut hcx, &mut hasher);
278+
key.hash_stable(&mut hcx, &mut hasher);
279+
hasher.finish::<u64>()
280+
})
281+
};
282+
283+
QueryStackFrame::new(name, description, span, def_kind, hash)
284+
}
285+
286+
// NOTE: `$V` isn't used here, but we still need to match on it so it can be passed to other macros
287+
// invoked by `rustc_query_append`.
236288
macro_rules! define_queries {
237-
(<$tcx:tt>
289+
(
238290
$($(#[$attr:meta])*
239291
[$($modifiers:tt)*] fn $name:ident($($K:tt)*) -> $V:ty,)*) => {
240292
define_queries_struct! {
241-
tcx: $tcx,
242293
input: ($(([$($modifiers)*] [$($attr)*] [$name]))*)
243294
}
244295

@@ -247,88 +298,51 @@ macro_rules! define_queries {
247298

248299
// Create an eponymous constructor for each query.
249300
$(#[allow(nonstandard_style)] $(#[$attr])*
250-
pub fn $name<$tcx>(tcx: QueryCtxt<$tcx>, key: query_keys::$name<$tcx>) -> QueryStackFrame {
301+
pub fn $name<'tcx>(tcx: QueryCtxt<'tcx>, key: <queries::$name<'tcx> as QueryConfig>::Key) -> QueryStackFrame {
251302
let kind = dep_graph::DepKind::$name;
252303
let name = stringify!($name);
253-
// Disable visible paths printing for performance reasons.
254-
// Showing visible path instead of any path is not that important in production.
255-
let description = ty::print::with_no_visible_paths!(
256-
// Force filename-line mode to avoid invoking `type_of` query.
257-
ty::print::with_forced_impl_filename_line!(
258-
queries::$name::describe(tcx, key)
259-
)
260-
);
261-
let description = if tcx.sess.verbose() {
262-
format!("{} [{}]", description, name)
263-
} else {
264-
description
265-
};
266-
let span = if kind == dep_graph::DepKind::def_span {
267-
// The `def_span` query is used to calculate `default_span`,
268-
// so exit to avoid infinite recursion.
269-
None
270-
} else {
271-
Some(key.default_span(*tcx))
272-
};
273-
let def_kind = if kind == dep_graph::DepKind::opt_def_kind {
274-
// Try to avoid infinite recursion.
275-
None
276-
} else {
277-
key.key_as_def_id()
278-
.and_then(|def_id| def_id.as_local())
279-
.and_then(|def_id| tcx.opt_def_kind(def_id))
280-
};
281-
let hash = || {
282-
tcx.with_stable_hashing_context(|mut hcx|{
283-
let mut hasher = StableHasher::new();
284-
std::mem::discriminant(&kind).hash_stable(&mut hcx, &mut hasher);
285-
key.hash_stable(&mut hcx, &mut hasher);
286-
hasher.finish::<u64>()
287-
})
288-
};
289-
290-
QueryStackFrame::new(name, description, span, def_kind, hash)
304+
$crate::plumbing::create_query_frame(tcx, queries::$name::describe, key, kind, name)
291305
})*
292306
}
293307

294308
#[allow(nonstandard_style)]
295309
mod queries {
296310
use std::marker::PhantomData;
297311

298-
$(pub struct $name<$tcx> {
299-
data: PhantomData<&$tcx ()>
312+
$(pub struct $name<'tcx> {
313+
data: PhantomData<&'tcx ()>
300314
})*
301315
}
302316

303-
$(impl<$tcx> QueryConfig for queries::$name<$tcx> {
304-
type Key = query_keys::$name<$tcx>;
305-
type Value = query_values::$name<$tcx>;
306-
type Stored = query_stored::$name<$tcx>;
317+
$(impl<'tcx> QueryConfig for queries::$name<'tcx> {
318+
type Key = query_keys::$name<'tcx>;
319+
type Value = query_values::$name<'tcx>;
320+
type Stored = query_stored::$name<'tcx>;
307321
const NAME: &'static str = stringify!($name);
308322
}
309323

310-
impl<$tcx> QueryDescription<QueryCtxt<$tcx>> for queries::$name<$tcx> {
311-
rustc_query_description! { $name<$tcx> }
324+
impl<'tcx> QueryDescription<QueryCtxt<'tcx>> for queries::$name<'tcx> {
325+
rustc_query_description! { $name<'tcx> }
312326

313-
type Cache = query_storage::$name<$tcx>;
327+
type Cache = query_storage::$name<'tcx>;
314328

315329
#[inline(always)]
316-
fn query_state<'a>(tcx: QueryCtxt<$tcx>) -> &'a QueryState<Self::Key>
317-
where QueryCtxt<$tcx>: 'a
330+
fn query_state<'a>(tcx: QueryCtxt<'tcx>) -> &'a QueryState<Self::Key>
331+
where QueryCtxt<'tcx>: 'a
318332
{
319333
&tcx.queries.$name
320334
}
321335

322336
#[inline(always)]
323-
fn query_cache<'a>(tcx: QueryCtxt<$tcx>) -> &'a Self::Cache
337+
fn query_cache<'a>(tcx: QueryCtxt<'tcx>) -> &'a Self::Cache
324338
where 'tcx:'a
325339
{
326340
&tcx.query_caches.$name
327341
}
328342

329343
#[inline]
330344
fn make_vtable(tcx: QueryCtxt<'tcx>, key: &Self::Key) ->
331-
QueryVTable<QueryCtxt<$tcx>, Self::Key, Self::Value>
345+
QueryVTable<QueryCtxt<'tcx>, Self::Key, Self::Value>
332346
{
333347
let compute = get_provider!([$($modifiers)*][tcx, $name, key]);
334348
let cache_on_disk = Self::cache_on_disk(tcx.tcx, key);
@@ -349,7 +363,6 @@ macro_rules! define_queries {
349363
mod query_callbacks {
350364
use super::*;
351365
use rustc_middle::dep_graph::DepNode;
352-
use rustc_middle::ty::query::query_keys;
353366
use rustc_query_system::dep_graph::DepNodeParams;
354367
use rustc_query_system::query::{force_query, QueryDescription};
355368
use rustc_query_system::dep_graph::FingerprintStyle;
@@ -411,7 +424,7 @@ macro_rules! define_queries {
411424
let is_eval_always = is_eval_always!([$($modifiers)*]);
412425

413426
let fingerprint_style =
414-
<query_keys::$name<'_> as DepNodeParams<TyCtxt<'_>>>::fingerprint_style();
427+
<<queries::$name<'_> as QueryConfig>::Key as DepNodeParams<TyCtxt<'_>>>::fingerprint_style();
415428

416429
if is_anon || !fingerprint_style.reconstructible() {
417430
return DepKindStruct {
@@ -424,8 +437,8 @@ macro_rules! define_queries {
424437
}
425438

426439
#[inline(always)]
427-
fn recover<'tcx>(tcx: TyCtxt<'tcx>, dep_node: DepNode) -> Option<query_keys::$name<'tcx>> {
428-
<query_keys::$name<'_> as DepNodeParams<TyCtxt<'_>>>::recover(tcx, &dep_node)
440+
fn recover<'tcx>(tcx: TyCtxt<'tcx>, dep_node: DepNode) -> Option<<queries::$name<'tcx> as QueryConfig>::Key> {
441+
<<queries::$name<'_> as QueryConfig>::Key as DepNodeParams<TyCtxt<'_>>>::recover(tcx, &dep_node)
429442
}
430443

431444
fn force_from_dep_node(tcx: TyCtxt<'_>, dep_node: DepNode) -> bool {
@@ -465,28 +478,25 @@ macro_rules! define_queries {
465478
}
466479
}
467480

468-
// FIXME(eddyb) this macro (and others?) use `$tcx` and `'tcx` interchangeably.
469-
// We should either not take `$tcx` at all and use `'tcx` everywhere, or use
470-
// `$tcx` everywhere (even if that isn't necessary due to lack of hygiene).
471481
macro_rules! define_queries_struct {
472-
(tcx: $tcx:tt,
482+
(
473483
input: ($(([$($modifiers:tt)*] [$($attr:tt)*] [$name:ident]))*)) => {
474-
pub struct Queries<$tcx> {
484+
pub struct Queries<'tcx> {
475485
local_providers: Box<Providers>,
476486
extern_providers: Box<ExternProviders>,
477487

478-
pub on_disk_cache: Option<OnDiskCache<$tcx>>,
488+
pub on_disk_cache: Option<OnDiskCache<'tcx>>,
479489

480490
jobs: AtomicU64,
481491

482-
$($(#[$attr])* $name: QueryState<query_keys::$name<$tcx>>,)*
492+
$($(#[$attr])* $name: QueryState<<queries::$name<'tcx> as QueryConfig>::Key>,)*
483493
}
484494

485-
impl<$tcx> Queries<$tcx> {
495+
impl<'tcx> Queries<'tcx> {
486496
pub fn new(
487497
local_providers: Providers,
488498
extern_providers: ExternProviders,
489-
on_disk_cache: Option<OnDiskCache<$tcx>>,
499+
on_disk_cache: Option<OnDiskCache<'tcx>>,
490500
) -> Self {
491501
Queries {
492502
local_providers: Box::new(local_providers),
@@ -498,8 +508,8 @@ macro_rules! define_queries_struct {
498508
}
499509

500510
pub(crate) fn try_collect_active_jobs(
501-
&$tcx self,
502-
tcx: TyCtxt<$tcx>,
511+
&'tcx self,
512+
tcx: TyCtxt<'tcx>,
503513
) -> Option<QueryMap> {
504514
let tcx = QueryCtxt { tcx, queries: self };
505515
let mut jobs = QueryMap::default();
@@ -532,13 +542,13 @@ macro_rules! define_queries_struct {
532542
#[tracing::instrument(level = "trace", skip(self, tcx))]
533543
fn $name(
534544
&'tcx self,
535-
tcx: TyCtxt<$tcx>,
545+
tcx: TyCtxt<'tcx>,
536546
span: Span,
537-
key: query_keys::$name<$tcx>,
547+
key: <queries::$name<'tcx> as QueryConfig>::Key,
538548
mode: QueryMode,
539-
) -> Option<query_stored::$name<$tcx>> {
549+
) -> Option<query_stored::$name<'tcx>> {
540550
let qcx = QueryCtxt { tcx, queries: self };
541-
get_query::<queries::$name<$tcx>, _>(qcx, span, key, mode)
551+
get_query::<queries::$name<'tcx>, _>(qcx, span, key, mode)
542552
})*
543553
}
544554
};

‎compiler/rustc_query_impl/src/profiling_support.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ pub fn alloc_self_profile_query_strings(tcx: TyCtxt<'_>) {
306306
let mut string_cache = QueryKeyStringCache::new();
307307

308308
macro_rules! alloc_once {
309-
(<$tcx:tt>
309+
(
310310
$($(#[$attr:meta])* [$($modifiers:tt)*] fn $name:ident($K:ty) -> $V:ty,)*
311311
) => {
312312
$({
@@ -320,5 +320,5 @@ pub fn alloc_self_profile_query_strings(tcx: TyCtxt<'_>) {
320320
}
321321
}
322322

323-
rustc_query_append! { [alloc_once!][<'tcx>] }
323+
rustc_query_append! { [alloc_once!] }
324324
}

0 commit comments

Comments
 (0)
Please sign in to comment.