Skip to content

Commit 4a0872b

Browse files
committed
Add overflow_check check
1 parent 3a6aada commit 4a0872b

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/librustc_mir/transform/const_prop.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,11 +405,13 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
405405
}
406406

407407
let arg = self.eval_operand(arg, source_info)?;
408-
let is_release_mode = self.tcx.sess.opts.debugging_opts.mir_opt_level >= 2;
408+
let is_release_mode = self.tcx.sess.overflow_checks();
409409
let val = self.use_ecx(source_info, |this| {
410410
let prim = this.ecx.read_immediate(arg)?;
411411
match op {
412412
UnOp::Neg => {
413+
// We don't have to check overflow here when we already
414+
// check it in release mode.
413415
if is_release_mode
414416
&& prim.to_bits()? == (1 << (prim.layout.size.bits() - 1)) {
415417
throw_panic!(OverflowNeg)
@@ -485,7 +487,9 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
485487
Scalar::from_bool(overflow).into(),
486488
)
487489
} else {
488-
if self.tcx.sess.opts.debugging_opts.mir_opt_level >= 2 && overflow {
490+
// We don't have to check overflow here when we already
491+
// check it in release mode.
492+
if self.tcx.sess.overflow_checks() && overflow {
489493
let err = err_panic!(Overflow(op)).into();
490494
let _: Option<()> = self.use_ecx(source_info, |_| Err(err));
491495
return None;

src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.stderr

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)