about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-11-05 18:25:41 +0000
committerMichael Goulet <michael@errs.io>2022-12-07 03:10:56 +0000
commitb45b9489bb3fb918fbe267154f8dcf4fee61854d (patch)
treec6128a2fe32597f3f8efe35e7296a500cef56122 /compiler
parent023b5136b597053f76941b54eeae668219e6e18d (diff)
downloadrust-b45b9489bb3fb918fbe267154f8dcf4fee61854d.tar.gz
rust-b45b9489bb3fb918fbe267154f8dcf4fee61854d.zip
Compute generator sizes with -Zprint_type_sizes
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_session/src/code_stats.rs3
-rw-r--r--compiler/rustc_ty_utils/src/layout.rs6
2 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_session/src/code_stats.rs b/compiler/rustc_session/src/code_stats.rs
index eede4d16ea3..7a6da1b7350 100644
--- a/compiler/rustc_session/src/code_stats.rs
+++ b/compiler/rustc_session/src/code_stats.rs
@@ -33,6 +33,7 @@ pub enum DataTypeKind {
     Union,
     Enum,
     Closure,
+    Generator,
 }
 
 #[derive(PartialEq, Eq, Hash, Debug)]
@@ -113,7 +114,7 @@ impl CodeStats {
             let mut max_variant_size = discr_size;
 
             let struct_like = match kind {
-                DataTypeKind::Struct | DataTypeKind::Closure => true,
+                DataTypeKind::Struct | DataTypeKind::Closure | DataTypeKind::Generator => true,
                 DataTypeKind::Enum | DataTypeKind::Union => false,
             };
             for (i, variant_info) in variants.into_iter().enumerate() {
diff --git a/compiler/rustc_ty_utils/src/layout.rs b/compiler/rustc_ty_utils/src/layout.rs
index fbc055b5d23..1c65bec6964 100644
--- a/compiler/rustc_ty_utils/src/layout.rs
+++ b/compiler/rustc_ty_utils/src/layout.rs
@@ -826,6 +826,12 @@ fn record_layout_for_printing_outlined<'tcx>(
             return;
         }
 
+        ty::Generator(..) => {
+            debug!("print-type-size t: `{:?}` record generator", layout.ty);
+            record(DataTypeKind::Generator, false, None, vec![]);
+            return;
+        }
+
         _ => {
             debug!("print-type-size t: `{:?}` skip non-nominal", layout.ty);
             return;