3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-21 05:13:39 +00:00

deal with shift exponent error

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-06-06 18:23:04 -07:00
parent d7f51f2443
commit ad67424987

View file

@ -79,10 +79,10 @@ unsigned u_gcd(unsigned u, unsigned v) {
if (v == 0) return u; if (v == 0) return u;
unsigned shift = _trailing_zeros32(u | v); unsigned shift = _trailing_zeros32(u | v);
u >>= _trailing_zeros32(u); u >>= _trailing_zeros32(u);
v >>= _trailing_zeros32(v);
if (u == 1 || v == 1) return 1 << shift; if (u == 1 || v == 1) return 1 << shift;
if (u == v) return u << shift; if (u == v) return u << shift;
do { do {
v >>= _trailing_zeros32(v);
#if 1 #if 1
unsigned diff = u - v; unsigned diff = u - v;
unsigned mdiff = diff & (unsigned)((int)diff >> 31); unsigned mdiff = diff & (unsigned)((int)diff >> 31);
@ -113,8 +113,6 @@ unsigned u_gcd(unsigned u, unsigned v) {
u = _bit_min(u, v); u = _bit_min(u, v);
v = md12 | md21; v = md12 | md21;
#endif #endif
v >>= _trailing_zeros32(v);
} }
while (v != 0); while (v != 0);
return u << shift; return u << shift;