From 6ad0187265dfbd9dc145042a5a809db688abbe7a Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 17 Apr 2020 14:19:26 +0200 Subject: [PATCH] rustup for FieldsShape::Primitive --- rust-version | 2 +- src/helpers.rs | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/rust-version b/rust-version index 937073ef4fc..e9b00f64977 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -df768c5c8fcb361c4dc94b4c776d6a78c12862e1 +b2c1a606feb1fbdb0ac0acba76f881ef172ed474 diff --git a/src/helpers.rs b/src/helpers.rs index 9f46a0c1ce2..40a33f09a83 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -1,5 +1,6 @@ use std::convert::TryFrom; use std::mem; +use std::num::NonZeroUsize; use log::trace; @@ -333,17 +334,15 @@ fn visit_aggregate( places.sort_by_key(|place| place.ptr.assert_ptr().offset); self.walk_aggregate(place, places.into_iter().map(Ok)) } - FieldsShape::Union { .. } => { + FieldsShape::Union { .. } | FieldsShape::Primitive => { // Uh, what? - bug!("a union is not an aggregate we should ever visit") + bug!("unions/primitives are not aggregates we should ever visit") } } } // We have to do *something* for unions. - fn visit_union(&mut self, v: MPlaceTy<'tcx, Tag>, fields: usize) -> InterpResult<'tcx> { - assert!(fields > 0); // we should never reach "pseudo-unions" with 0 fields, like primitives - + fn visit_union(&mut self, v: MPlaceTy<'tcx, Tag>, _fields: NonZeroUsize) -> InterpResult<'tcx> { // With unions, we fall back to whatever the type says, to hopefully be consistent // with LLVM IR. // FIXME: are we consistent, and is this really the behavior we want? -- 2.44.0