Skip to content

Commit ae1f8ab

Browse files
committed
fix miri engine debug output for uninitialized locals
1 parent 525c68c commit ae1f8ab

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

src/librustc_mir/interpret/eval_context.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -698,15 +698,10 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'a, 'mir, 'tcx>> InterpretCx<'a, 'mir, 'tc
698698
}
699699
write!(msg, ":").unwrap();
700700

701-
match self.stack[frame].locals[local].access() {
702-
Err(err) => {
703-
if let InterpError::DeadLocal = err.kind {
704-
write!(msg, " is dead").unwrap();
705-
} else {
706-
panic!("Failed to access local: {:?}", err);
707-
}
708-
}
709-
Ok(Operand::Indirect(mplace)) => {
701+
match self.stack[frame].locals[local].state {
702+
LocalValue::Dead => write!(msg, " is dead").unwrap(),
703+
LocalValue::Uninitialized => write!(msg, " is uninitialized").unwrap(),
704+
LocalValue::Live(Operand::Indirect(mplace)) => {
710705
let (ptr, align) = mplace.to_scalar_ptr_align();
711706
match ptr {
712707
Scalar::Ptr(ptr) => {
@@ -716,13 +711,13 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'a, 'mir, 'tcx>> InterpretCx<'a, 'mir, 'tc
716711
ptr => write!(msg, " by integral ref: {:?}", ptr).unwrap(),
717712
}
718713
}
719-
Ok(Operand::Immediate(Immediate::Scalar(val))) => {
714+
LocalValue::Live(Operand::Immediate(Immediate::Scalar(val))) => {
720715
write!(msg, " {:?}", val).unwrap();
721716
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val {
722717
allocs.push(ptr.alloc_id);
723718
}
724719
}
725-
Ok(Operand::Immediate(Immediate::ScalarPair(val1, val2))) => {
720+
LocalValue::Live(Operand::Immediate(Immediate::ScalarPair(val1, val2))) => {
726721
write!(msg, " ({:?}, {:?})", val1, val2).unwrap();
727722
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val1 {
728723
allocs.push(ptr.alloc_id);

0 commit comments

Comments
 (0)