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.24-399-g56ede9e


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  56ede9ed59684a5802cc88733055453901f1c2f0 (commit)
      from  c650aa612ff622d843c6b6e5eeb183aae1a17eaa (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=56ede9ed59684a5802cc88733055453901f1c2f0

commit 56ede9ed59684a5802cc88733055453901f1c2f0
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Nov 23 17:56:31 2016 +0000

    Fix x86_64 -mfpmath=387 float_t, double_t (bug 20787).
    
    Bug 20787 reports that, while float_t and double_t for 32-bit x86
    properly respect -mfpmath=sse, for x86_64 they fail to reflect
    -mfpmath=387, which is valid if unusual and results in FLT_EVAL_METHOD
    being 2.  This patch fixes the definitions to respect
    __FLT_EVAL_METHOD__ in that case, arranging for the test that the
    types correspond with FLT_EVAL_METHOD to be run with both -mfpmath=387
    and -mfpmath=sse.
    
    Note: this patch will also have the effect of making float_t and
    double_t be long double for x86_64 with -mfpmath=sse+387, when
    FLT_EVAL_METHOD is -1.  It seems reasonable for x86_64 to be
    consistent with 32-bit x86 in this case (and that definition is
    conservatively safe, in that it makes the types correspond to the
    widest evaluation format that might be used).
    
    Tested for x86-64 and x86.
    
    	[BZ #20787]
    	* sysdeps/x86/bits/mathdef.h (float_t): Do not define to float if
    	[__x86_64__] when __FLT_EVAL_METHOD__ is nonzero.
    	(double_t): Do not define to double if [__x86_64__] when
    	__FLT_EVAL_METHOD__ is nonzero.
    	* sysdeps/x86/fpu/test-flt-eval-method-387.c: New file.
    	* sysdeps/x86/fpu/test-flt-eval-method-sse.c: Likewise.
    	* sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add
    	test-flt-eval-method-387 and test-flt-eval-method-sse.
    	[$(subdir) = math] (CFLAGS-test-flt-eval-method-387.c): New
    	variable.
    	[$(subdir) = math] (CFLAGS-test-flt-eval-method-sse.c): Likewise.

diff --git a/ChangeLog b/ChangeLog
index 8dbd854..963bf2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2016-11-23  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #20787]
+	* sysdeps/x86/bits/mathdef.h (float_t): Do not define to float if
+	[__x86_64__] when __FLT_EVAL_METHOD__ is nonzero.
+	(double_t): Do not define to double if [__x86_64__] when
+	__FLT_EVAL_METHOD__ is nonzero.
+	* sysdeps/x86/fpu/test-flt-eval-method-387.c: New file.
+	* sysdeps/x86/fpu/test-flt-eval-method-sse.c: Likewise.
+	* sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add
+	test-flt-eval-method-387 and test-flt-eval-method-sse.
+	[$(subdir) = math] (CFLAGS-test-flt-eval-method-387.c): New
+	variable.
+	[$(subdir) = math] (CFLAGS-test-flt-eval-method-sse.c): Likewise.
+
 2016-11-23  Chris Metcalf  <cmetcalf@mellanox.com>
 
 	* scripts/build-many-glibcs.py (Context.add_all_configs): Revert
diff --git a/sysdeps/x86/bits/mathdef.h b/sysdeps/x86/bits/mathdef.h
index e61c28a..9423a7f 100644
--- a/sysdeps/x86/bits/mathdef.h
+++ b/sysdeps/x86/bits/mathdef.h
@@ -22,7 +22,8 @@
 #if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
 # define _MATH_H_MATHDEF	1
 
-# if defined __x86_64__ || (defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0)
+# if ((defined __x86_64__ && !defined __FLT_EVAL_METHOD__)		\
+      || (defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0))
 /* The x86-64 architecture computes values with the precission of the
    used type.  Similarly for -m32 -mfpmath=sse.  */
 typedef float float_t;		/* `float' expressions are evaluated as `float'.  */
diff --git a/sysdeps/x86/fpu/Makefile b/sysdeps/x86/fpu/Makefile
index b561995..a8047a4 100644
--- a/sysdeps/x86/fpu/Makefile
+++ b/sysdeps/x86/fpu/Makefile
@@ -1,7 +1,11 @@
 ifeq ($(subdir),math)
 libm-support += powl_helper
-tests += test-fenv-sse test-fenv-clear-sse test-fenv-x87 test-fenv-sse-2
+tests += test-fenv-sse test-fenv-clear-sse test-fenv-x87 test-fenv-sse-2 \
+	 test-flt-eval-method-387 test-flt-eval-method-sse
 CFLAGS-test-fenv-sse.c += -msse2 -mfpmath=sse
 CFLAGS-test-fenv-clear-sse.c += -msse2 -mfpmath=sse
 CFLAGS-test-fenv-sse-2.c += -msse2 -mfpmath=sse
+CFLAGS-test-flt-eval-method-387.c += -fexcess-precision=standard -mfpmath=387
+CFLAGS-test-flt-eval-method-sse.c += -fexcess-precision=standard -msse2 \
+				     -mfpmath=sse
 endif
diff --git a/sysdeps/x86/fpu/test-flt-eval-method-387.c b/sysdeps/x86/fpu/test-flt-eval-method-387.c
new file mode 100644
index 0000000..2fb7acf
--- /dev/null
+++ b/sysdeps/x86/fpu/test-flt-eval-method-387.c
@@ -0,0 +1 @@
+#include <test-flt-eval-method.c>
diff --git a/sysdeps/x86/fpu/test-flt-eval-method-sse.c b/sysdeps/x86/fpu/test-flt-eval-method-sse.c
new file mode 100644
index 0000000..2fb7acf
--- /dev/null
+++ b/sysdeps/x86/fpu/test-flt-eval-method-sse.c
@@ -0,0 +1 @@
+#include <test-flt-eval-method.c>

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

Summary of changes:
 ChangeLog                                  |   15 +++++++++++++++
 sysdeps/x86/bits/mathdef.h                 |    3 ++-
 sysdeps/x86/fpu/Makefile                   |    6 +++++-
 sysdeps/x86/fpu/test-flt-eval-method-387.c |    1 +
 sysdeps/x86/fpu/test-flt-eval-method-sse.c |    1 +
 5 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 sysdeps/x86/fpu/test-flt-eval-method-387.c
 create mode 100644 sysdeps/x86/fpu/test-flt-eval-method-sse.c


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]