From 93eb85ceb25ee7aff432ddea0abf559f53d7a5fc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 24 Nov 2016 18:44:50 +0000 Subject: Refactor float_t, double_t information into bits/flt-eval-method.h. At present, definitions of float_t and double_t are split among many bits/mathdef.h headers. For all but three architectures, these types are float and double. Furthermore, if you assume __FLT_EVAL_METHOD__ to be defined, that provides a more generic way of determining the correct values of these typedefs. Defining these typedefs more generally based on __FLT_EVAL_METHOD__ was previously proposed by Paul Eggert in . This patch refactors things in the way I proposed in . A new header bits/flt-eval-method.h defines a single macro, __GLIBC_FLT_EVAL_METHOD, which is then used by math.h to define float_t and double_t. The default is based on __FLT_EVAL_METHOD__ (although actually a default to 0 would have the same effect for current ports, because ports where values other than 0 or 16 are possible all have their own headers). To avoid changing the existing semantics in any case, including for compilers not defining __FLT_EVAL_METHOD__, architecture-specific files are then added for m68k, s390, x86 which replicate the existing semantics. At least with __FLT_EVAL_METHOD__ values possible with GCC, there should be no change to the choices of float_t and double_t for any supported configuration. Architecture maintainer notes: * m68k: sysdeps/m68k/m680x0/bits/flt-eval-method.h always defines __GLIBC_FLT_EVAL_METHOD to 2 to replicate the existing logic. But actually GCC defines __FLT_EVAL_METHOD__ to 0 if TARGET_68040. It might make sense to make the header prefer to base things on __FLT_EVAL_METHOD__ if defined, like the x86 version, and so make the choices of these types more accurate (with a NEWS entry as for the other changes to these types on particular architectures). * s390: sysdeps/s390/bits/flt-eval-method.h always defines __GLIBC_FLT_EVAL_METHOD to 1 to replicate the existing logic. As previously discussed, it might make sense in coordination with GCC to eliminate the historic mistake, avoid excess precision in the -fexcess-precision=standard case and make the typedefs match (with a NEWS entry, again). Tested for x86-64 and x86. Also did compilation-only testing with build-many-glibcs.py. * bits/flt-eval-method.h: New file. * sysdeps/m68k/m680x0/bits/flt-eval-method.h: Likewise. * sysdeps/s390/bits/flt-eval-method.h: Likewise. * sysdeps/x86/bits/flt-eval-method.h: Likewise. * math/Makefile (headers): Add bits/flt-eval-method.h. * math/math.h: Include . [__USE_ISOC99] (float_t): Define based on __GLIBC_FLT_EVAL_METHOD. [__USE_ISOC99] (double_t): Likewise. * bits/mathdef.h (float_t): Remove. (double_t): Likewise. * sysdeps/aarch64/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/alpha/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/arm/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/hppa/fpu/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/ia64/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/m68k/m680x0/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/mips/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/powerpc/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/s390/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/sh/sh4/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/sparc/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/tile/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. * sysdeps/x86/bits/mathdef.h (float_t): Likewise. (double_t): Likewise. --- ChangeLog | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index bef755789a..7b4b183703 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,42 @@ +2016-11-24 Joseph Myers + + * bits/flt-eval-method.h: New file. + * sysdeps/m68k/m680x0/bits/flt-eval-method.h: Likewise. + * sysdeps/s390/bits/flt-eval-method.h: Likewise. + * sysdeps/x86/bits/flt-eval-method.h: Likewise. + * math/Makefile (headers): Add bits/flt-eval-method.h. + * math/math.h: Include . + [__USE_ISOC99] (float_t): Define based on __GLIBC_FLT_EVAL_METHOD. + [__USE_ISOC99] (double_t): Likewise. + * bits/mathdef.h (float_t): Remove. + (double_t): Likewise. + * sysdeps/aarch64/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/alpha/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/arm/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/hppa/fpu/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/ia64/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/m68k/m680x0/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/mips/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/powerpc/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/s390/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/sh/sh4/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/sparc/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/tile/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + * sysdeps/x86/bits/mathdef.h (float_t): Likewise. + (double_t): Likewise. + 2016-11-24 Aurelien Jarno * sysdeps/x86_64/memcpy_chk.S (__memcpy_chk): Check for SHARED -- cgit v1.2.3