Auto merge of #152 - rust-lang-nursery:gh151, r=alexcrichton

fix debug assertion in modsi3 / moddi3

fixes #151
this fix is very similar to #149

r? @alexcrichton
master
bors 2017-04-07 18:43:21 +00:00
commit 09145e6bda
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)