aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2007-01-15 23:56:32 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2007-01-15 23:56:32 +0000
commitaf7a7593fa558ca9a873ab79484142678c08d6f4 (patch)
tree86084db26d4ef713152109d2b364df463fe9548e
parente9d59899de7c74fc819d11f650e858fc717e3424 (diff)
downloadgcc-af7a7593fa558ca9a873ab79484142678c08d6f4.zip
gcc-af7a7593fa558ca9a873ab79484142678c08d6f4.tar.gz
gcc-af7a7593fa558ca9a873ab79484142678c08d6f4.tar.bz2
op-common.h, op-4.h: Update from glibc CVS.
* config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from glibc CVS. From-SVN: r120806
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/soft-fp/op-4.h6
-rw-r--r--gcc/config/soft-fp/op-common.h9
3 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 30bc446..74b2285 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-15 Joseph S. Myers <joseph@codesourcery.com>
+
+ * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
+ glibc CVS.
+
2007-01-15 Tom Tromey <tromey@redhat.com>
* doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
diff --git a/gcc/config/soft-fp/op-4.h b/gcc/config/soft-fp/op-4.h
index 34f5098..1b90535 100644
--- a/gcc/config/soft-fp/op-4.h
+++ b/gcc/config/soft-fp/op-4.h
@@ -564,7 +564,7 @@
r1 = x1 - y1; \
_c2 = r1 > x1; \
r1 -= _c1; \
- _c2 |= r1 > _c1; \
+ _c2 |= _c1 && (y1 == x1); \
r2 = x2 - y2 - _c2; \
} while (0)
#endif
@@ -578,11 +578,11 @@
r1 = x1 - y1; \
_c2 = r1 > x1; \
r1 -= _c1; \
- _c2 |= r1 > _c1; \
+ _c2 |= _c1 && (y1 == x1); \
r2 = x2 - y2; \
_c3 = r2 > x2; \
r2 -= _c2; \
- _c3 |= r2 > _c2; \
+ _c3 |= _c2 && (y2 == x2); \
r3 = x3 - y3 - _c3; \
} while (0)
#endif
diff --git a/gcc/config/soft-fp/op-common.h b/gcc/config/soft-fp/op-common.h
index 4ec7fad..0aa6e3e 100644
--- a/gcc/config/soft-fp/op-common.h
+++ b/gcc/config/soft-fp/op-common.h
@@ -1,5 +1,5 @@
/* Software floating-point emulation. Common operations.
- Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2006,2007 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),
@@ -99,10 +99,10 @@ do { \
else \
{ \
X##_e = _FP_EXPMAX_##fs - 1; \
- FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
- FP_SET_EXCEPTION(FP_EX_INEXACT); \
_FP_FRAC_SET_##wc(X, _FP_MAXFRAC_##wc); \
} \
+ FP_SET_EXCEPTION(FP_EX_INEXACT); \
+ FP_SET_EXCEPTION(FP_EX_OVERFLOW); \
} while (0)
/* Check for a semi-raw value being a signaling NaN and raise the
@@ -1252,6 +1252,9 @@ do { \
_FP_FRAC_SRL_##swc(S, (_FP_WFRACBITS_##sfs \
- _FP_WFRACBITS_##dfs)); \
_FP_FRAC_COPY_##dwc##_##swc(D, S); \
+ /* Semi-raw NaN must have all workbits cleared. */ \
+ _FP_FRAC_LOW_##dwc(D) \
+ &= ~(_FP_W_TYPE) ((1 << _FP_WORKBITS) - 1); \
_FP_FRAC_HIGH_##dfs(D) |= _FP_QNANBIT_SH_##dfs; \
} \
} \