fix miri engine debug output for uninitialized locals
This commit is contained in:
parent
525c68cf95
commit
ae1f8ab4aa
1 changed files with 6 additions and 11 deletions
|
@ -698,15 +698,10 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'a, 'mir, 'tcx>> InterpretCx<'a, 'mir, 'tc
|
||||||
}
|
}
|
||||||
write!(msg, ":").unwrap();
|
write!(msg, ":").unwrap();
|
||||||
|
|
||||||
match self.stack[frame].locals[local].access() {
|
match self.stack[frame].locals[local].state {
|
||||||
Err(err) => {
|
LocalValue::Dead => write!(msg, " is dead").unwrap(),
|
||||||
if let InterpError::DeadLocal = err.kind {
|
LocalValue::Uninitialized => write!(msg, " is uninitialized").unwrap(),
|
||||||
write!(msg, " is dead").unwrap();
|
LocalValue::Live(Operand::Indirect(mplace)) => {
|
||||||
} else {
|
|
||||||
panic!("Failed to access local: {:?}", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ok(Operand::Indirect(mplace)) => {
|
|
||||||
let (ptr, align) = mplace.to_scalar_ptr_align();
|
let (ptr, align) = mplace.to_scalar_ptr_align();
|
||||||
match ptr {
|
match ptr {
|
||||||
Scalar::Ptr(ptr) => {
|
Scalar::Ptr(ptr) => {
|
||||||
|
@ -716,13 +711,13 @@ impl<'a, 'mir, 'tcx: 'mir, M: Machine<'a, 'mir, 'tcx>> InterpretCx<'a, 'mir, 'tc
|
||||||
ptr => write!(msg, " by integral ref: {:?}", ptr).unwrap(),
|
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();
|
write!(msg, " {:?}", val).unwrap();
|
||||||
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val {
|
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val {
|
||||||
allocs.push(ptr.alloc_id);
|
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();
|
write!(msg, " ({:?}, {:?})", val1, val2).unwrap();
|
||||||
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val1 {
|
if let ScalarMaybeUndef::Scalar(Scalar::Ptr(ptr)) = val1 {
|
||||||
allocs.push(ptr.alloc_id);
|
allocs.push(ptr.alloc_id);
|
||||||
|
|
Loading…
Reference in a new issue