about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_mir/src/interpret/intern.rs6
-rw-r--r--src/test/ui/issues/issue-68010-large-zst-consts.rs5
2 files changed, 11 insertions, 0 deletions
diff --git a/compiler/rustc_mir/src/interpret/intern.rs b/compiler/rustc_mir/src/interpret/intern.rs
index dd5e9c99774..945791eddc8 100644
--- a/compiler/rustc_mir/src/interpret/intern.rs
+++ b/compiler/rustc_mir/src/interpret/intern.rs
@@ -187,6 +187,12 @@ impl<'rt, 'mir, 'tcx: 'mir, M: CompileTimeMachine<'mir, 'tcx>> ValueVisitor<'mir
                 return walked;
             }
         }
+
+        // ZSTs do not need validation unless they're uninhabited
+        if mplace.layout.is_zst() && !mplace.layout.abi.is_uninhabited() {
+            return Ok(());
+        }
+
         self.walk_aggregate(mplace, fields)
     }
 
diff --git a/src/test/ui/issues/issue-68010-large-zst-consts.rs b/src/test/ui/issues/issue-68010-large-zst-consts.rs
new file mode 100644
index 00000000000..4f1bd45e90a
--- /dev/null
+++ b/src/test/ui/issues/issue-68010-large-zst-consts.rs
@@ -0,0 +1,5 @@
+// build-pass
+
+fn main() {
+    println!("{}", [(); std::usize::MAX].len());
+}