This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.21-113-g9438b23
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 24 Feb 2015 17:30:27 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.21-113-g9438b23
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 9438b237abca11de201dd10483717299eafb1f0b (commit)
from 6909d2767580b680138a6aa49aabf4976770e9f6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=9438b237abca11de201dd10483717299eafb1f0b
commit 9438b237abca11de201dd10483717299eafb1f0b
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Feb 24 17:30:02 2015 +0000
Fix x86/x86_64 scalb (qNaN, -Inf) (bug 16783).
Various x86 / x86_64 versions of scalb / scalbf / scalbl produce
spurious "invalid" exceptions for (qNaN, -Inf) arguments, because this
is wrongly handled like (+/-Inf, -Inf) which *should* raise such an
exception. (In fact the NaN case of the code determining whether to
quietly return a zero or a NaN for second argument -Inf was
accidentally dead since the code had been made to return a NaN with
exception.) This patch fixes the code to do the proper test for an
infinity as distinct from a NaN.
(Since the existing code does nothing to distinguish qNaNs and sNaNs
here, this patch doesn't either. If in future we systematically
implement proper sNaN semantics following TS 18661-1:2014, there will
be lots of bugs to address - Thomas found lots of issues with his
patch <https://sourceware.org/ml/libc-ports/2013-04/msg00008.html> to
add SNaN tests (which never went in and would now require significant
reworking).)
Tested for x86_64 and x86. Committed.
[BZ #16783]
* sysdeps/i386/fpu/e_scalb.S (__ieee754_scalb): Do not handle
arguments (NaN, -Inf) the same as (+/-Inf, -Inf).
* sysdeps/i386/fpu/e_scalbf.S (__ieee754_scalbf): Likewise.
* sysdeps/i386/fpu/e_scalbl.S (__ieee754_scalbl): Likewise.
* sysdeps/x86_64/fpu/e_scalbl.S (__ieee754_scalbl): Likewise.
* math/libm-test.inc (scalb_test_data): Add more tests.
diff --git a/ChangeLog b/ChangeLog
index c306867..8ae6cf1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-02-24 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #16783]
+ * sysdeps/i386/fpu/e_scalb.S (__ieee754_scalb): Do not handle
+ arguments (NaN, -Inf) the same as (+/-Inf, -Inf).
+ * sysdeps/i386/fpu/e_scalbf.S (__ieee754_scalbf): Likewise.
+ * sysdeps/i386/fpu/e_scalbl.S (__ieee754_scalbl): Likewise.
+ * sysdeps/x86_64/fpu/e_scalbl.S (__ieee754_scalbl): Likewise.
+ * math/libm-test.inc (scalb_test_data): Add more tests.
+
2015-02-24 Paul Pluzhnikov <ppluzhnikov@google.com>
[BZ #17916]
diff --git a/NEWS b/NEWS
index 3f005fe..f1127a0 100644
--- a/NEWS
+++ b/NEWS
@@ -9,9 +9,9 @@ Version 2.22
* The following bugs are resolved with this release:
- 4719, 14841, 13064, 14094, 15319, 15467, 15790, 16560, 17269, 17523,
- 17569, 17588, 17792, 17836, 17912, 17916, 17932, 17944, 17949, 17964,
- 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999.
+ 4719, 14841, 13064, 14094, 15319, 15467, 15790, 16560, 16783, 17269,
+ 17523, 17569, 17588, 17792, 17836, 17912, 17916, 17932, 17944, 17949,
+ 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999.
* Character encoding and ctype tables were updated to Unicode 7.0.0, using
new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
diff --git a/math/libm-test.inc b/math/libm-test.inc
index ffdc153..b3396b6 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -9139,6 +9139,8 @@ static const struct test_ff_f_data scalb_test_data[] =
TEST_ff_f (scalb, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+ TEST_ff_f (scalb, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+ TEST_ff_f (scalb, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_ff_f (scalb, max_value, max_value, plus_oflow, OVERFLOW_EXCEPTION|ERRNO_PLUS_OFLOW),
diff --git a/sysdeps/i386/fpu/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 20d489e..6a01aa6 100644
--- a/sysdeps/i386/fpu/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
@@ -65,8 +65,10 @@ ENTRY(__ieee754_scalb)
fstp %st
fstp %st
andl $0x80000000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $27, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/i386/fpu/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index b6dd021..12b2515 100644
--- a/sysdeps/i386/fpu/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
@@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbf)
fstp %st
fstp %st
andl $0x80000000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $27, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/i386/fpu/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 83f17b2..d10b22e 100644
--- a/sysdeps/i386/fpu/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
@@ -67,8 +67,10 @@ ENTRY(__ieee754_scalbl)
fstp %st
fstp %st
andl $0x8000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $11, %edx
addl %edx, %eax
fldl MOX(zero_nan, %eax, 1)
diff --git a/sysdeps/x86_64/fpu/e_scalbl.S b/sysdeps/x86_64/fpu/e_scalbl.S
index c422d53..331bee5 100644
--- a/sysdeps/x86_64/fpu/e_scalbl.S
+++ b/sysdeps/x86_64/fpu/e_scalbl.S
@@ -61,8 +61,10 @@ ENTRY(__ieee754_scalbl)
fstp %st
fstp %st
andl $0x8000, %edx
+ andl $0x0228, %eax
+ cmpl $0x0028, %eax
+ je 4f
andl $8, %eax
- jnz 4f
shrl $11, %edx
addl %edx, %eax
#ifdef PIC
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 10 ++++++++++
NEWS | 6 +++---
math/libm-test.inc | 2 ++
sysdeps/i386/fpu/e_scalb.S | 4 +++-
sysdeps/i386/fpu/e_scalbf.S | 4 +++-
sysdeps/i386/fpu/e_scalbl.S | 4 +++-
sysdeps/x86_64/fpu/e_scalbl.S | 4 +++-
7 files changed, 27 insertions(+), 7 deletions(-)
hooks/post-receive
--
GNU C Library master sources