about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2019-09-02 02:18:16 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2019-09-02 02:18:16 +0900
commit4a0872b37efbd982aed7e29f166e4ccb095f5779 (patch)
tree9382dc41f3e20f26cf4bf62848d34dd24d0db8d0 /src
parent3a6aadaa8c915c3dea42c0b1fb6d96f227166148 (diff)
downloadrust-4a0872b37efbd982aed7e29f166e4ccb095f5779.tar.gz
rust-4a0872b37efbd982aed7e29f166e4ccb095f5779.zip
Add `overflow_check` check
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/transform/const_prop.rs8
-rw-r--r--src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.stderr6
2 files changed, 6 insertions, 8 deletions
diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs
index 37e14004ce8..b43323687cd 100644
--- a/src/librustc_mir/transform/const_prop.rs
+++ b/src/librustc_mir/transform/const_prop.rs
@@ -405,11 +405,13 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
                 }
 
                 let arg = self.eval_operand(arg, source_info)?;
-                let is_release_mode = self.tcx.sess.opts.debugging_opts.mir_opt_level >= 2;
+                let is_release_mode = self.tcx.sess.overflow_checks();
                 let val = self.use_ecx(source_info, |this| {
                     let prim = this.ecx.read_immediate(arg)?;
                     match op {
                         UnOp::Neg => {
+                            // We don't have to check overflow here when we already
+                            // check it in release mode.
                             if is_release_mode
                             && prim.to_bits()? == (1 << (prim.layout.size.bits() - 1)) {
                                 throw_panic!(OverflowNeg)
@@ -485,7 +487,9 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
                         Scalar::from_bool(overflow).into(),
                     )
                 } else {
-                    if self.tcx.sess.opts.debugging_opts.mir_opt_level >= 2 && overflow {
+                    // We don't have to check overflow here when we already
+                    // check it in release mode.
+                    if self.tcx.sess.overflow_checks() && overflow {
                         let err = err_panic!(Overflow(op)).into();
                         let _: Option<()> = self.use_ecx(source_info, |_| Err(err));
                         return None;
diff --git a/src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.stderr b/src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.stderr
deleted file mode 100644
index 5160c9e72a9..00000000000
--- a/src/test/ui/issues/issue-8171-default-method-self-inherit-builtin-trait.stderr
+++ /dev/null
@@ -1,6 +0,0 @@
-error: failed to remove $TEST_BUILD_DIR/issues/issue-8171-default-method-self-inherit-builtin-trait/issue-8171-default-method-self-inherit-builtin-trait.issue_8171_default_method_self_inherit_builtin_trait.7rcbfp3g-cgu.0.rcgu.o: 指定されたパスが見つかりません。 (os error 3)
-
-error: failed to remove $TEST_BUILD_DIR/issues/issue-8171-default-method-self-inherit-builtin-trait/issue-8171-default-method-self-inherit-builtin-trait.issue_8171_default_method_self_inherit_builtin_trait.7rcbfp3g-cgu.1.rcgu.o: 指定されたパスが見つかりません。 (os error 3)
-
-error: aborting due to 2 previous errors
-