From 2faec6a4fbd444c1396586fa3b00cf1fb73c2530 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 13 Mar 2017 20:40:44 -0500 Subject: [PATCH] fix debug assertion in modsi3 / moddi3 fixes #151 this fix is very similar to #149 --- src/int/sdiv.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/int/sdiv.rs b/src/int/sdiv.rs index 7f30eaf..1906560 100644 --- a/src/int/sdiv.rs +++ b/src/int/sdiv.rs @@ -33,9 +33,10 @@ macro_rules! mod_ { #[cfg_attr(not(test), no_mangle)] pub extern "C" fn $intrinsic(a: $ty, b: $ty) -> $tyret { let s = b >> (<$ty>::bits() - 1); - let b = (b ^ s) - s; + // NOTE(wrapping_sub) see comment in the `div` macro + let b = (b ^ s).wrapping_sub(s); let s = a >> (<$ty>::bits() - 1); - let a = (a ^ s) - s; + let a = (a ^ s).wrapping_sub(s); let r = urem!(a as $uty, b as $uty); ($conv)((r as $ty ^ s) - s)