Skip to content

Commit 1203683

Browse files
committed
Store known passes as an IndexSet
1 parent 94371d5 commit 1203683

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
@@ -90,20 +90,20 @@ macro_rules! declare_passes {
9090
)+
9191
)*
9292

93-
static PASS_NAMES: LazyLock<Vec<String>> = LazyLock::new(|| vec![
93+
static PASS_NAMES: LazyLock<FxIndexSet<&str>> = LazyLock::new(|| [
9494
// Fake marker pass
95-
"PreCodegen".to_string(),
95+
"PreCodegen",
9696
$(
9797
$(
98-
stringify!($pass_name).to_string(),
98+
stringify!($pass_name),
9999
$(
100100
$(
101-
$mod_name::$pass_name::$ident.name().to_string(),
101+
$mod_name::$pass_name::$ident.name(),
102102
)*
103103
)?
104104
)+
105105
)*
106-
]);
106+
].into_iter().collect());
107107
};
108108
}
109109

compiler/rustc_mir_transform/src/pass_manager.rs

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