]> git.lizzy.rs Git - rust.git/commitdiff
fix miri engine debug output for uninitialized locals
authorRalf Jung <post@ralfj.de>
Sun, 7 Apr 2019 10:52:56 +0000 (12:52 +0200)
committerRalf Jung <post@ralfj.de>
Sun, 7 Apr 2019 10:52:56 +0000 (12:52 +0200)
src/librustc_mir/interpret/eval_context.rs

index 05207c47d5d9d4bad5129607a37312d1fcddf466..600d20be397c5e58103edc90355729151c938a4c 100644 (file)
@@ -698,15 +698,10 @@ pub fn dump_place(&self, place: Place<M::PointerTag>) {
                 }
                 write!(msg, ":").unwrap();
 
-                match self.stack[frame].locals[local].access() {
-                    Err(err) => {
-                        if let InterpError::DeadLocal = err.kind {
-                            write!(msg, " is dead").unwrap();
-                        } else {
-                            panic!("Failed to access local: {:?}", err);
-                        }
-                    }
-                    Ok(Operand::Indirect(mplace)) => {
+                match self.stack[frame].locals[local].state {
+                    LocalValue::Dead => write!(msg, " is dead").unwrap(),
+                    LocalValue::Uninitialized => write!(msg, " is uninitialized").unwrap(),
+                    LocalValue::Live(Operand::Indirect(mplace)) => {
                         let (ptr, align) = mplace.to_scalar_ptr_align();
                         match ptr {
                             Scalar::Ptr(ptr) => {
@@ -716,13 +711,13 @@ pub fn dump_place(&self, place: Place<M::PointerTag>) {
                             ptr => write!(msg, " by integral ref: {:?}", ptr).unwrap(),
                         }
                     }
-                    Ok(Operand::Immediate(Immediate::Scalar(val))) => {
+                    LocalValue::Live(Operand::Immediate(Immediate::Scalar(val))) => {
                         write!(msg, " {:?}", val).unwrap();
                         if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val {
                             allocs.push(ptr.alloc_id);
                         }
                     }
-                    Ok(Operand::Immediate(Immediate::ScalarPair(val1, val2))) => {
+                    LocalValue::Live(Operand::Immediate(Immediate::ScalarPair(val1, val2))) => {
                         write!(msg, " ({:?}, {:?})", val1, val2).unwrap();
                         if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val1 {
                             allocs.push(ptr.alloc_id);