diff options
Diffstat (limited to 'soft-fp')
-rw-r--r-- | soft-fp/op-common.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h index e62558e..e0a108a 100644 --- a/soft-fp/op-common.h +++ b/soft-fp/op-common.h @@ -1368,7 +1368,9 @@ else \ FP_SET_EXCEPTION (FP_EX_INEXACT); \ } \ - else if (X##_e >= _FP_EXPBIAS_##fs + rsize - (rsigned > 0 || X##_s) \ + else if (X##_e >= (_FP_EXPMAX_##fs < _FP_EXPBIAS_##fs + rsize \ + ? _FP_EXPMAX_##fs \ + : _FP_EXPBIAS_##fs + rsize - (rsigned > 0 || X##_s)) \ || (!rsigned && X##_s)) \ { \ /* Overflow or converting to the most negative integer. */ \ @@ -1385,7 +1387,10 @@ r = ~r; \ } \ \ - if (rsigned && X##_s && X##_e == _FP_EXPBIAS_##fs + rsize - 1) \ + if (_FP_EXPBIAS_##fs + rsize - 1 < _FP_EXPMAX_##fs \ + && rsigned \ + && X##_s \ + && X##_e == _FP_EXPBIAS_##fs + rsize - 1) \ { \ /* Possibly converting to most negative integer; check the \ mantissa. */ \ |