summary refs log tree commit diff
path: root/compiler/rustc_mir_transform
diff options
context:
space:
mode:
authorclubby789 <jamie@hill-daniel.co.uk>2024-11-11 16:43:49 +0000
committerclubby789 <jamie@hill-daniel.co.uk>2024-11-12 13:28:05 +0000
commit12036830d039134c447a1d7299a59560cd4a39d0 (patch)
tree95988577a9d73cc6d03784cf28e280af3c596304 /compiler/rustc_mir_transform
parent94371d5a8cf3c0480a744e4727837e9d7b2281b0 (diff)
downloadrust-12036830d039134c447a1d7299a59560cd4a39d0.tar.gz
rust-12036830d039134c447a1d7299a59560cd4a39d0.zip
Store known passes as an IndexSet
Diffstat (limited to 'compiler/rustc_mir_transform')
-rw-r--r--compiler/rustc_mir_transform/src/lib.rs10
-rw-r--r--compiler/rustc_mir_transform/src/pass_manager.rs5
2 files changed, 7 insertions, 8 deletions
diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs
index 68904c65252..d2d5facbbdc 100644
--- a/compiler/rustc_mir_transform/src/lib.rs
+++ b/compiler/rustc_mir_transform/src/lib.rs
@@ -90,20 +90,20 @@ macro_rules! declare_passes {
             )+
         )*
 
-        static PASS_NAMES: LazyLock<Vec<String>> = LazyLock::new(|| vec![
+        static PASS_NAMES: LazyLock<FxIndexSet<&str>> = LazyLock::new(|| [
             // Fake marker pass
-            "PreCodegen".to_string(),
+            "PreCodegen",
             $(
                 $(
-                    stringify!($pass_name).to_string(),
+                    stringify!($pass_name),
                     $(
                         $(
-                            $mod_name::$pass_name::$ident.name().to_string(),
+                            $mod_name::$pass_name::$ident.name(),
                         )*
                     )?
                 )+
             )*
-        ]);
+        ].into_iter().collect());
     };
 }
 
diff --git a/compiler/rustc_mir_transform/src/pass_manager.rs b/compiler/rustc_mir_transform/src/pass_manager.rs
index bc960ae0f56..e26e0c78b29 100644
--- a/compiler/rustc_mir_transform/src/pass_manager.rs
+++ b/compiler/rustc_mir_transform/src/pass_manager.rs
@@ -200,9 +200,8 @@ fn run_passes_inner<'tcx>(
 
     let named_passes: FxIndexSet<_> =
         overridden_passes.iter().map(|(name, _)| name.as_str()).collect();
-    let known_passes: FxIndexSet<_> = crate::PASS_NAMES.iter().map(|p| p.as_str()).collect();
 
-    for &name in named_passes.difference(&known_passes) {
+    for &name in named_passes.difference(&*crate::PASS_NAMES) {
         tcx.dcx().emit_warn(errors::UnknownPassName { name });
     }
 
@@ -213,7 +212,7 @@ fn run_passes_inner<'tcx>(
     {
         let used_passes: FxIndexSet<_> = passes.iter().map(|p| p.name()).collect();
 
-        let undeclared = used_passes.difference(&known_passes).collect::<Vec<_>>();
+        let undeclared = used_passes.difference(&*crate::PASS_NAMES).collect::<Vec<_>>();
         if let Some((name, rest)) = undeclared.split_first() {
             let mut err =
                 tcx.dcx().struct_bug(format!("pass `{name}` is not declared in `PASS_NAMES`"));