diff options
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/mir')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/block.rs | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/block.rs b/compiler/rustc_codegen_ssa/src/mir/block.rs index a7e74279a13..35f12ac9dbd 100644 --- a/compiler/rustc_codegen_ssa/src/mir/block.rs +++ b/compiler/rustc_codegen_ssa/src/mir/block.rs @@ -569,16 +569,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { // checked operation, just a comparison with the minimum // value, so we have to check for the assert message. if !bx.cx().check_overflow() { - if let AssertKind::OverflowNeg(_) - | AssertKind::Overflow( - mir::BinOp::Add - | mir::BinOp::Sub - | mir::BinOp::Mul - | mir::BinOp::Shl - | mir::BinOp::Shr, - .., - ) = *msg - { + let unchecked_overflow = match msg { + AssertKind::OverflowNeg(..) => true, + AssertKind::Overflow(op, ..) => op.is_checkable(), + _ => false, + }; + if unchecked_overflow { const_cond = Some(expected); } } |
