aboutsummaryrefslogtreecommitdiff
path: root/soft-fp
diff options
context:
space:
mode:
Diffstat (limited to 'soft-fp')
-rw-r--r--soft-fp/op-common.h9
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. */ \