Skip to content

Commit 07322e6

Browse files
committed
Store known passes as an IndexSet
1 parent e76c2fa commit 07322e6

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

compiler/rustc_mir_transform/src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@ macro_rules! declare_passes {
6969
)*
7070

7171
#[cfg(debug_assertions)]
72-
static PASS_NAMES: LazyLock<Vec<String>> = LazyLock::new(|| vec![
72+
static PASS_NAMES: LazyLock<FxIndexSet<&str>> = LazyLock::new(|| [
7373
// Fake marker pass
74-
"PreCodegen".to_string(),
74+
"PreCodegen",
7575
$(
7676
$(
77-
stringify!($pass_name).to_string(),
77+
stringify!($pass_name),
7878
$(
7979
$(
80-
$mod_name::$pass_name::$ident.name().to_string(),
80+
$mod_name::$pass_name::$ident.name(),
8181
)*
8282
)?
8383
)+
8484
)*
85-
]);
85+
].into_iter().collect());
8686
};
8787
}
8888

compiler/rustc_mir_transform/src/pass_manager.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,16 @@ fn run_passes_inner<'tcx>(
200200

201201
let named_passes: FxIndexSet<_> =
202202
overridden_passes.iter().map(|(name, _)| name.as_str()).collect();
203-
let known_passes: FxIndexSet<_> = crate::PASS_NAMES.iter().map(|p| p.as_str()).collect();
204203

205-
for &name in named_passes.difference(&known_passes) {
204+
for &name in named_passes.difference(&*crate::PASS_NAMES) {
206205
tcx.dcx().emit_warn(errors::UnknownPassName { name });
207206
}
208207

209208
// Verify that no passes are missing from the `declare_passes` invocation
210209
#[cfg(debug_assertions)]
211210
{
212211
let used_passes: FxIndexSet<_> = passes.iter().map(|p| p.name()).collect();
213-
for &name in used_passes.difference(&known_passes) {
212+
for &name in used_passes.difference(&*crate::PASS_NAMES) {
214213
tcx.dcx().bug(format!("pass `{name}` is not declared in `PASS_NAMES`"));
215214
}
216215
}

0 commit comments

Comments
 (0)