You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With the Miri engine now having support for properly executing panics, a panicking program does not really constitute an "interpreter error" any more. So we should get rid of the InterpError::Panic variant.
We'll need to decide what else to do with the throw_panic! that still exist. This one I think should be throw_ub! instead; same for the "division/remainder by zero" in this file. With well-formed MIR I think those are all unreachable, but I see no harm in letting Miri also support some "reasonable" MIR that rustc would never emit (such as omitting the bounds check on an array access, or the div-by-zero check). Overflowing pointer arithmetic should also be UB I think.
ConstEval should probably format an error message directly when a panic occurs (here or in the new assert_panic hook added by Miri engine: proper support for Assert MIR terminators #66874). This could be propagated outwards via a new MachineError(String) variant of InterpError, if nothing else fits.
I am not sure what ConstProp should do. The throw_panic! mentioned above are, I think, currently actually hit by ConstProp -- but maybe those same errors can be better shown by determining that the condition of an Assert terminator is constant, and indeed that might explain why we currently sometimes have duplicate error messages. It also contains a throw_panic!here.
With the Miri engine now having support for properly executing panics, a panicking program does not really constitute an "interpreter error" any more. So we should get rid of the
InterpError::Panicvariant.throw_panic!that still exist. This one I think should bethrow_ub!instead; same for the "division/remainder by zero" in this file. With well-formed MIR I think those are all unreachable, but I see no harm in letting Miri also support some "reasonable" MIR that rustc would never emit (such as omitting the bounds check on an array access, or the div-by-zero check). Overflowing pointer arithmetic should also be UB I think.assert_panichook added by Miri engine: proper support forAssertMIR terminators #66874). This could be propagated outwards via a newMachineError(String)variant ofInterpError, if nothing else fits.throw_panic!mentioned above are, I think, currently actually hit by ConstProp -- but maybe those same errors can be better shown by determining that the condition of anAssertterminator is constant, and indeed that might explain why we currently sometimes have duplicate error messages. It also contains athrow_panic!here.Cc @oli-obk @wesleywiser