about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2025-02-22 11:36:45 +0100
committerGitHub <noreply@github.com>2025-02-22 11:36:45 +0100
commitf13feb34dca81ad7f2fd8f1a80d29d1cfd526630 (patch)
tree154955d137d8ea5c38c669fc1ee522197eed9229 /compiler
parentb0286b5c21cd5ea11cd8a9d93e92a8f3df8c1959 (diff)
parent2fc920549be505e419ed4458695fb088c30ba3d7 (diff)
downloadrust-f13feb34dca81ad7f2fd8f1a80d29d1cfd526630.tar.gz
rust-f13feb34dca81ad7f2fd8f1a80d29d1cfd526630.zip
Rollup merge of #137377 - bjorn3:crate_loader_cleanup, r=compiler-errors
Always allow reusing cratenum in CrateLoader::load

The only case where can_reuse_cratenum could have been false in the past are rustc plugins, support for which has been removed over a year ago now. Nowadays the only case where locator.tuple is not target_triple is when loading a proc macro, in which case we also set can_reuse_cratenum to true. As such it is always true and we can remove some dead code.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_metadata/src/creader.rs30
1 files changed, 9 insertions, 21 deletions
diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs
index c2dda21bb72..4351d340013 100644
--- a/compiler/rustc_metadata/src/creader.rs
+++ b/compiler/rustc_metadata/src/creader.rs
@@ -762,29 +762,17 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
         // against a hash, we could load a crate which has the same hash
         // as an already loaded crate. If this is the case prevent
         // duplicates by just using the first crate.
-        //
-        // Note that we only do this for target triple crates, though, as we
-        // don't want to match a host crate against an equivalent target one
-        // already loaded.
         let root = library.metadata.get_root();
-        // FIXME: why is this condition necessary? It was adding in #33625 but I
-        // don't know why and the original author doesn't remember ...
-        let can_reuse_cratenum =
-            locator.tuple == self.sess.opts.target_triple || locator.is_proc_macro;
-        Ok(Some(if can_reuse_cratenum {
-            let mut result = LoadResult::Loaded(library);
-            for (cnum, data) in self.cstore.iter_crate_data() {
-                if data.name() == root.name() && root.hash() == data.hash() {
-                    assert!(locator.hash.is_none());
-                    info!("load success, going to previous cnum: {}", cnum);
-                    result = LoadResult::Previous(cnum);
-                    break;
-                }
+        let mut result = LoadResult::Loaded(library);
+        for (cnum, data) in self.cstore.iter_crate_data() {
+            if data.name() == root.name() && root.hash() == data.hash() {
+                assert!(locator.hash.is_none());
+                info!("load success, going to previous cnum: {}", cnum);
+                result = LoadResult::Previous(cnum);
+                break;
             }
-            result
-        } else {
-            LoadResult::Loaded(library)
-        }))
+        }
+        Ok(Some(result))
     }
 
     /// Go through the crate metadata and load any crates that it references.