summaryrefslogtreecommitdiff
path: root/libc/soft-fp/op-common.h
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-31 14:19:26 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-31 14:19:26 +0000
commit69731ab373b0196a860cee9bed9790c2f9ac43c9 (patch)
tree3c346b226b18b11dacfcf19842e8774607b5b988 /libc/soft-fp/op-common.h
parent978560d2d59061c18105088eefd568c7a5ac3b4b (diff)
downloadeglibc2-69731ab373b0196a860cee9bed9790c2f9ac43c9.tar.gz
Merge changes between r18832 and r18863 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@18864 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/soft-fp/op-common.h')
-rw-r--r--libc/soft-fp/op-common.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/libc/soft-fp/op-common.h b/libc/soft-fp/op-common.h
index b70026f90..db75af53e 100644
--- a/libc/soft-fp/op-common.h
+++ b/libc/soft-fp/op-common.h
@@ -1,5 +1,5 @@
/* Software floating-point emulation. Common operations.
- Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2006,2007,2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz),
@@ -146,7 +146,11 @@ do { \
if (!_FP_EXP_NORMAL(fs, wc, X) && !_FP_FRAC_ZEROP_##wc(X)) \
{ \
if (X##_e == 0) \
- FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
+ { \
+ if ((FP_CUR_EXCEPTIONS & FP_EX_INEXACT) \
+ || (FP_TRAPPING_EXCEPTIONS & FP_EX_UNDERFLOW)) \
+ FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
+ } \
else \
{ \
if (!_FP_KEEPNANFRACP) \
@@ -226,13 +230,16 @@ do { \
{ \
X##_e = 1; \
_FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \
+ FP_SET_EXCEPTION(FP_EX_INEXACT); \
} \
else \
{ \
X##_e = 0; \
_FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
- FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
} \
+ if ((FP_CUR_EXCEPTIONS & FP_EX_INEXACT) \
+ || (FP_TRAPPING_EXCEPTIONS & FP_EX_UNDERFLOW)) \
+ FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \
} \
else \
{ \