about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroli <oli@uhura.edef.eu>2020-10-26 15:49:11 +0000
committeroli <github35764891676564198441@oli-obk.de>2021-01-04 21:40:38 +0000
commit248b4dbc4fcc03db855bbd2cfef88652a47c2010 (patch)
tree61a3403e493558cbc307b65930b2c744935ab675
parentdadf937a12ca35ba1ea3646d415607278a2ddcbd (diff)
downloadrust-248b4dbc4fcc03db855bbd2cfef88652a47c2010.tar.gz
rust-248b4dbc4fcc03db855bbd2cfef88652a47c2010.zip
Limit trait item mir encoding to items with default bodies
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index 24225d96ba4..2774e817d3b 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -1013,8 +1013,15 @@ impl EncodeContext<'a, 'tcx> {
         self.encode_inferred_outlives(def_id);
 
         // This should be kept in sync with `PrefetchVisitor.visit_trait_item`.
-        self.encode_optimized_mir(def_id.expect_local());
-        self.encode_promoted_mir(def_id.expect_local());
+        match trait_item.kind {
+            ty::AssocKind::Type => {}
+            ty::AssocKind::Const | ty::AssocKind::Fn => {
+                if self.tcx.mir_keys(LOCAL_CRATE).contains(&def_id.expect_local()) {
+                    self.encode_optimized_mir(def_id.expect_local());
+                    self.encode_promoted_mir(def_id.expect_local());
+                }
+            }
+        }
     }
 
     fn metadata_output_only(&self) -> bool {