+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
#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'. */
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
--- /dev/null
+#include <test-flt-eval-method.c>
--- /dev/null
+#include <test-flt-eval-method.c>