From 25a3be9c7eea77d544f32abb26c059dfb9bb816f Mon Sep 17 00:00:00 2001 From: Scott Olson Date: Sun, 12 Jun 2016 21:00:23 -0600 Subject: [PATCH] Handle Misc casts slightly more sanely. Still insanely, though. --- src/interpreter/mod.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/interpreter/mod.rs b/src/interpreter/mod.rs index 37113f387319..39dc20bb855e 100644 --- a/src/interpreter/mod.rs +++ b/src/interpreter/mod.rs @@ -1045,8 +1045,14 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { Misc => { // FIXME(solson): Wrong for almost everything. - let size = dest_layout.size(&self.tcx.data_layout).bytes() as usize; - self.memory.copy(src, dest, size)?; + let dest_size = self.type_size(dest_ty, self.substs()); + let src_size = self.type_size(src_ty, self.substs()); + if dest_size == src_size { + warn!("performing fishy cast from {:?} to {:?}", src_ty, dest_ty); + self.memory.copy(src, dest, dest_size)?; + } else { + return Err(EvalError::Unimplemented(format!("can't handle cast: {:?}", rvalue))); + } } _ => return Err(EvalError::Unimplemented(format!("can't handle cast: {:?}", rvalue))),