about summary refs log tree commit diff
path: root/compiler/rustc_metadata/src
diff options
context:
space:
mode:
authorTomasz Miąsko <tomasz.miasko@gmail.com>2021-01-14 00:00:00 +0000
committerTomasz Miąsko <tomasz.miasko@gmail.com>2021-01-14 00:00:00 +0000
commitea4cbff264371ed28c3642991d87c59f369e4e70 (patch)
treeab430b1abbd20a44261002d5659ac5768ed655ec /compiler/rustc_metadata/src
parentc7b0ddbffebee1cb06f184e815ca637706c53053 (diff)
downloadrust-ea4cbff264371ed28c3642991d87c59f369e4e70.tar.gz
rust-ea4cbff264371ed28c3642991d87c59f369e4e70.zip
Encode optimized MIR of generators when emitting metadata
Diffstat (limited to 'compiler/rustc_metadata/src')
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index d8d222dccf4..58931bc5ff0 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -1507,7 +1507,10 @@ impl EncodeContext<'a, 'tcx> {
             record!(self.tables.fn_sig[def_id] <- substs.as_closure().sig());
         }
         self.encode_generics(def_id.to_def_id());
-        let opt_mir = self.tcx.sess.opts.debugging_opts.always_encode_mir || self.emit_codegen_mir;
+        let opt_mir = // FIXME: Optimized MIR is necessary to determine the layout of generators.
+            matches!(ty.kind(), ty::Generator(..))
+            || self.tcx.sess.opts.debugging_opts.always_encode_mir
+            || self.emit_codegen_mir;
         if opt_mir {
             self.encode_optimized_mir(def_id);
             self.encode_promoted_mir(def_id);