py/mpz: Remove unreachable code in mpn_or_neg functions.
This commit is contained in:
parent
9112b0b62b
commit
e83f140463
15
py/mpz.c
15
py/mpz.c
|
@ -308,9 +308,13 @@ STATIC mp_uint_t mpn_or_neg(mpz_dig_t *idig, const mpz_dig_t *jdig, mp_uint_t jl
|
|||
carryi >>= DIG_SIZE;
|
||||
}
|
||||
|
||||
if (0 != carryi) {
|
||||
*idig++ = carryi;
|
||||
}
|
||||
// At least one of j,k must be negative so the above for-loop runs at least
|
||||
// once. For carryi to be non-zero here it must be equal to 1 at the end of
|
||||
// each iteration of the loop. So the accumulation of carryi must overflow
|
||||
// each time, ie carryi += 0xff..ff. So carryj|carryk must be 0 in the
|
||||
// DIG_MASK bits on each iteration. But considering all cases of signs of
|
||||
// j,k one sees that this is not possible.
|
||||
assert(carryi == 0);
|
||||
|
||||
return mpn_remove_trailing_zeros(oidig, idig);
|
||||
}
|
||||
|
@ -334,9 +338,8 @@ STATIC mp_uint_t mpn_or_neg(mpz_dig_t *idig, const mpz_dig_t *jdig, mp_uint_t jl
|
|||
carryi >>= DIG_SIZE;
|
||||
}
|
||||
|
||||
if (0 != carryi) {
|
||||
*idig++ = carryi;
|
||||
}
|
||||
// See comment in above mpn_or_neg for why carryi must be 0.
|
||||
assert(carryi == 0);
|
||||
|
||||
return mpn_remove_trailing_zeros(oidig, idig);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue