about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_mir/interpret/place.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/librustc_mir/interpret/place.rs b/src/librustc_mir/interpret/place.rs
index e82a252a95b..4ca68068728 100644
--- a/src/librustc_mir/interpret/place.rs
+++ b/src/librustc_mir/interpret/place.rs
@@ -123,6 +123,9 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> {
         }
         let field_index = field.index();
         let field = base_layout.field(self, field_index)?;
+        if field.size.bytes() == 0 {
+            return Ok(Some((Value::ByVal(PrimVal::Undef), field.ty)))
+        }
         let offset = base_layout.fields.offset(field_index);
         match base {
             // the field covers the entire type