This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]