Skip to content

Commit 7b8cb31

Browse files
authored
Rollup merge of #128666 - pitaj:intrinsic-overflow_checks, r=BoxyUwU
Add `overflow_checks` intrinsic This adds an intrinsic which allows code in a pre-built library to inherit the overflow checks option from a crate depending on it. This enables code in the standard library to explicitly change behavior based on whether `overflow_checks` are enabled, regardless of the setting used when standard library was compiled. This is very similar to the `ub_checks` intrinsic, and refactors the two to use a common mechanism. The primary use case for this is to allow the new `RangeFrom` iterator to yield the maximum element before overflowing, as requested [here](rust-lang/rust#125687 (comment)). This PR includes a working `IterRangeFrom` implementation based on this new intrinsic that exhibits the desired behavior. [Prior discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/Ability.20to.20select.20code.20based.20on.20.60overflow_checks.60.3F)
2 parents 99874d8 + 781f9d2 commit 7b8cb31

File tree

1 file changed

+2
-7
lines changed

1 file changed

+2
-7
lines changed

src/machine.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,13 +1347,8 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
13471347
}
13481348

13491349
#[inline(always)]
1350-
fn ub_checks(ecx: &InterpCx<'tcx, Self>) -> InterpResult<'tcx, bool> {
1351-
interp_ok(ecx.tcx.sess.ub_checks())
1352-
}
1353-
1354-
#[inline(always)]
1355-
fn contract_checks(ecx: &InterpCx<'tcx, Self>) -> InterpResult<'tcx, bool> {
1356-
interp_ok(ecx.tcx.sess.contract_checks())
1350+
fn runtime_checks(ecx: &InterpCx<'tcx, Self>, r: mir::RuntimeChecks) -> InterpResult<'tcx, bool> {
1351+
interp_ok(r.value(&ecx.tcx.sess))
13571352
}
13581353

13591354
#[inline(always)]

0 commit comments

Comments
 (0)