fix debug assertion in modsi3 / moddi3

fixes #151
this fix is very similar to #149
master
Jorge Aparicio 2017-03-13 20:40:44 -05:00
parent 9681358dc5
commit 2faec6a4fb
1 changed files with 3 additions and 2 deletions

View File

@ -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)