Skip to content

Commit 97ddcf1

Browse files
committed
adjust for div/rem overflow being UB
1 parent 2b23786 commit 97ddcf1

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#![feature(core_intrinsics)]
22
fn main() {
33
// divison of MIN by -1
4-
unsafe { std::intrinsics::exact_div(i64::MIN, -1); } //~ ERROR result of dividing MIN by -1 cannot be represented
4+
unsafe { std::intrinsics::exact_div(i64::MIN, -1); } //~ ERROR overflow in signed remainder (dividing MIN by -1)
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#![feature(core_intrinsics)]
22
fn main() {
33
// MIN/-1 cannot be represented
4-
unsafe { std::intrinsics::unchecked_div(i16::MIN, -1); } //~ ERROR overflow executing `unchecked_div`
4+
unsafe { std::intrinsics::unchecked_div(i16::MIN, -1); } //~ ERROR overflow in signed division (dividing MIN by -1)
55
}

tests/run-pass/integer-ops.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ pub fn main() {
116116
assert_eq!(100i8.wrapping_rem(10), 0);
117117
assert_eq!((-128i8).wrapping_rem(-1), 0);
118118

119+
assert_eq!(i32::MIN.wrapping_div(-1), i32::MIN);
120+
assert_eq!(i32::MIN.wrapping_rem(-1), 0);
121+
119122
assert_eq!(100i8.wrapping_neg(), -100);
120123
assert_eq!((-128i8).wrapping_neg(), -128);
121124

0 commit comments

Comments
 (0)