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.22-328-g6c9678e


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  6c9678ebd42358f931100130a368fafe375a0ba2 (commit)
      from  b3364d05892be0170e8f67689736bb9b7597bc94 (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=6c9678ebd42358f931100130a368fafe375a0ba2

commit 6c9678ebd42358f931100130a368fafe375a0ba2
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Oct 6 17:37:49 2015 +0000

    Fix ldbl-128ibm expl overflow in non-default rounding modes (bug 19078).
    
    The ldbl-128ibm expl wrapper checks the argument to determine when to
    call __kernel_standard_l, thereby overriding overflowing results from
    __ieee754_expl that could otherwise (given appropriately patched
    libgcc) be correct for the rounding mode.  This patch changes it to
    check the result of __ieee754_expl instead, as other versions of this
    wrapper do.
    
    Tested for powerpc.
    
    	[BZ #19078]
    	* sysdeps/ieee754/ldbl-128ibm/w_expl.c (o_thres): Remove variable.
    	(u_thres): Likewise.
    	(__expl): Determine whether to call __kernel_standard_l based on
    	value of result, not argument.

diff --git a/ChangeLog b/ChangeLog
index 2752bd2..9b762b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2015-10-06  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #19078]
+	* sysdeps/ieee754/ldbl-128ibm/w_expl.c (o_thres): Remove variable.
+	(u_thres): Likewise.
+	(__expl): Determine whether to call __kernel_standard_l based on
+	value of result, not argument.
+
 	* math/libm-test.inc (scalb_test_data): Add more expectations for
 	the "inexact" exception.
 
diff --git a/NEWS b/NEWS
index e3c0795..5ad75a3 100644
--- a/NEWS
+++ b/NEWS
@@ -18,7 +18,7 @@ Version 2.23
   18820, 18823, 18824, 18825, 18857, 18863, 18870, 18872, 18873, 18875,
   18887, 18921, 18951, 18952, 18956, 18961, 18966, 18967, 18969, 18970,
   18977, 18980, 18981, 18985, 19003, 19012, 19016, 19018, 19032, 19046,
-  19049, 19050, 19059, 19071, 19076, 19077.
+  19049, 19050, 19059, 19071, 19076, 19077, 19078.
 
 * The obsolete header <regexp.h> has been removed.  Programs that require
   this header must be updated to use <regex.h> instead.
diff --git a/sysdeps/ieee754/ldbl-128ibm/w_expl.c b/sysdeps/ieee754/ldbl-128ibm/w_expl.c
index fb5c8d3..c9d44b6 100644
--- a/sysdeps/ieee754/ldbl-128ibm/w_expl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/w_expl.c
@@ -2,9 +2,6 @@
 #include <math_private.h>
 #include <math_ldbl_opt.h>
 
-static const long double o_thres = 709.78271289338399678773454114191496482L;
-static const long double u_thres = -744.44007192138126231410729844608163411L;
-
 long double __expl(long double x)	/* wrapper exp  */
 {
   long double z;
@@ -13,9 +10,9 @@ long double __expl(long double x)	/* wrapper exp  */
     return z;
   if (isfinite(x))
     {
-      if (x >= o_thres)
+      if (!isfinite (z))
 	return __kernel_standard_l(x,x,206); /* exp overflow  */
-      else if (x <= u_thres)
+      else if (z == 0.0L)
 	return __kernel_standard_l(x,x,207); /* exp underflow  */
     }
   return z;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                            |    6 ++++++
 NEWS                                 |    2 +-
 sysdeps/ieee754/ldbl-128ibm/w_expl.c |    7 ++-----
 3 files changed, 9 insertions(+), 6 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]