Skip to content

Commit 845c9c8

Browse files
committed
Store known passes as an IndexSet
1 parent c9e6a2a commit 845c9c8

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
@@ -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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,8 @@ 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

@@ -213,7 +212,7 @@ fn run_passes_inner<'tcx>(
213212
{
214213
let used_passes: FxIndexSet<_> = passes.iter().map(|p| p.name()).collect();
215214

216-
let undeclared = used_passes.difference(&known_passes).collect::<Vec<_>>();
215+
let undeclared = used_passes.difference(&*crate::PASS_NAMES).collect::<Vec<_>>();
217216
if let Some((name, rest)) = undeclared.split_first() {
218217
let mut err =
219218
tcx.dcx().struct_bug(format!("pass `{name}` is not declared in `PASS_NAMES`"));

0 commit comments

Comments
 (0)