-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ConstEval/ConstProp: get rid of Panic
error kind
#66902
Comments
Unless I'm not understanding what you're saying, that's exactly how it currently works in ConstProp: rust/src/librustc_mir/transform/const_prop.rs Lines 817 to 822 in d8bdb3f
|
Yeah I think that is what I imagined. So I will start by experimenting with replacing the |
PR opened at #66927. |
Turns out that assumption is wrong: the MIR of promoteds actually is not well-formed in this sense; it can contain unchecked array/slice accesses. |
add reusable MachineStop variant to Miri engine error enum Replace the Miri-tool-specific `Exit` error variant with something dynamically typed that all clients of the Miri engine can use. r? @oli-obk Cc rust-lang#66902
Miri core engine: use throw_ub instead of throw_panic See rust-lang#66902 for context: panicking is not really an "interpreter error", but just part of a normal Rust execution. This is a first step towards removing the `InterpError::Panic` variant: the core Miri engine does not use it any more. ConstProp and ConstEval still use it, though. This will be addressed in future PRs. From what I can tell, all the error messages this removes are actually duplicates. r? @oli-obk @wesleywiser
Miri core engine: use throw_ub instead of throw_panic See rust-lang#66902 for context: panicking is not really an "interpreter error", but just part of a normal Rust execution. This is a first step towards removing the `InterpError::Panic` variant: the core Miri engine does not use it any more. ConstProp and ConstEval still use it, though. This will be addressed in future PRs. From what I can tell, all the error messages this removes are actually duplicates. r? @oli-obk @wesleywiser
Miri core engine: use throw_ub instead of throw_panic See #66902 for context: panicking is not really an "interpreter error", but just part of a normal Rust execution. This is a first step towards removing the `InterpError::Panic` variant: the core Miri engine does not use it any more. ConstProp and ConstEval still use it, though. This will be addressed in future PRs. From what I can tell, all the error messages this removes are actually duplicates. r? @oli-obk @wesleywiser
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.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_panic
hook added by Miri engine: proper support forAssert
MIR 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 anAssert
terminator 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
The text was updated successfully, but these errors were encountered: