Skip to content

Commit f9f6fd2

Browse files
committed
Store known passes as an IndexSet
1 parent 124924c commit f9f6fd2

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

compiler/rustc_mir_transform/src/lib.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,20 @@ macro_rules! declare_passes {
6868
)+
6969
)*
7070

71-
static PASS_NAMES: LazyLock<Vec<String>> = LazyLock::new(|| vec![
71+
static PASS_NAMES: LazyLock<FxIndexSet<&str>> = LazyLock::new(|| [
7272
// Fake marker pass
73-
"PreCodegen".to_string(),
73+
"PreCodegen",
7474
$(
7575
$(
76-
stringify!($pass_name).to_string(),
76+
stringify!($pass_name),
7777
$(
7878
$(
79-
$mod_name::$pass_name::$ident.name().to_string(),
79+
$mod_name::$pass_name::$ident.name(),
8080
)*
8181
)?
8282
)+
8383
)*
84-
]);
84+
].into_iter().collect());
8585
};
8686
}
8787

compiler/rustc_mir_transform/src/pass_manager.rs

+2-3
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)