aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-06-21 19:26:09 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-06-21 19:26:09 +0000
commitb7abb4bf78443f4f8d05a9dfa768fdee65b99d42 (patch)
tree86b3d1d629d7c42911923dd3588487e49ecbc3e4
parent79662d4270e4d5c585dd7b2af012c6ac4a8e00d1 (diff)
downloadglibc-b7abb4bf78443f4f8d05a9dfa768fdee65b99d42.zip
glibc-b7abb4bf78443f4f8d05a9dfa768fdee65b99d42.tar.gz
glibc-b7abb4bf78443f4f8d05a9dfa768fdee65b99d42.tar.bz2
Fix wordsize-64 cosh regression (bug 14273).
-rw-r--r--ChangeLog5
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c1
3 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index a754fef..f9ccbe6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2012-06-21 Joseph Myers <joseph@codesourcery.com>
+ [BZ #14273]
+ * sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c (__ieee754_cosh):
+ Clear sign bit of 64-bit integer value before comparing against
+ overflow value.
+
* sysdeps/mach/configure: Regenerated.
2012-06-21 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/NEWS b/NEWS
index b5edb99..8797a6b 100644
--- a/NEWS
+++ b/NEWS
@@ -30,7 +30,7 @@ Version 2.16
13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036, 14040, 14043,
14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075, 14080,
14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134, 14153,
- 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14278
+ 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14278
* Support for the x32 ABI on x86-64 added. The x32 target is selected by
configuring glibc with:
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
index b8ab748..8459352 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c
@@ -67,6 +67,7 @@ __ieee754_cosh (double x)
/* |x| in [log(maxdouble), overflowthresold] */
int64_t fix;
EXTRACT_WORDS64(fix, x);
+ fix &= UINT64_C(0x7fffffffffffffff);
if (fix <= UINT64_C(0x408633ce8fb9f87d)) {
w = __ieee754_exp(half*fabs(x));
t = half*w;