Skip to content

Commit

Permalink
use singed_int_max/min helper methods
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Mar 7, 2022
1 parent 956659e commit ac84498
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions compiler/rustc_const_eval/src/interpret/intrinsics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -493,23 +493,20 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
// Negative overflow not possible since the positive first term
// can only increase an (in range) negative term for addition
// or corresponding negated positive term for subtraction
Scalar::from_uint(
(1u128 << (num_bits - 1)) - 1, // max positive
Size::from_bits(num_bits),
)
Scalar::from_int(size.signed_int_max(), size)
} else {
// Positive overflow not possible for similar reason
// max negative
Scalar::from_uint(1u128 << (num_bits - 1), Size::from_bits(num_bits))
Scalar::from_int(size.signed_int_min(), size)
}
} else {
// unsigned
if matches!(mir_op, BinOp::Add) {
// max unsigned
Scalar::from_uint(size.unsigned_int_max(), Size::from_bits(num_bits))
Scalar::from_uint(size.unsigned_int_max(), size)
} else {
// underflow to 0
Scalar::from_uint(0u128, Size::from_bits(num_bits))
Scalar::from_uint(0u128, size)
}
}
} else {
Expand Down

0 comments on commit ac84498

Please sign in to comment.