[1/4] Remove math-finite.h

Message ID VI1PR0801MB212753501D9DA1AA00BC7BA583E20@VI1PR0801MB2127.eurprd08.prod.outlook.com
State New
Headers show
Series
  • [1/4] Remove math-finite.h
Related show

Commit Message

Wilco Dijkstra June 26, 2019, 1:57 p.m.
Remove math-finite.h redirections for math functions.

Passes buildmanyglibc.

2019-06-26  Wilco Dijkstra  <wdijkstr@arm.com>

        * bits/math-finite.h: Delete file.
        * math/Makefile: Remove math-finite.h from installed headers.
        * math/math.h: Remove math-finite.h inclusions.
        * sysdeps/ia64/fpu/bits/math-finite.h: Delete file.

--

Comments

Adhemerval Zanella July 16, 2019, 6:19 p.m. | #1
On 26/06/2019 10:57, Wilco Dijkstra wrote:
> Remove math-finite.h redirections for math functions.

> 

> Passes buildmanyglibc.

> 

> 2019-06-26  Wilco Dijkstra  <wdijkstr@arm.com>

> 

>         * bits/math-finite.h: Delete file.

>         * math/Makefile: Remove math-finite.h from installed headers.

>         * math/math.h: Remove math-finite.h inclusions.

>         * sysdeps/ia64/fpu/bits/math-finite.h: Delete file.


I think the reasons laid out on original proposal [1] are reasonable.
The math-finite.h is the optimization that sounded like a brilliant idea
but ended up as just extra complexity when proper optimization were applied
for the original intent.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>


[1] https://sourceware.org/ml/libc-alpha/2019-03/msg00395.html

> 

> --

> diff --git a/bits/math-finite.h b/bits/math-finite.h

> deleted file mode 100644

> index 6141c1253724d022193fdd430b3ff0dab4730346..0000000000000000000000000000000000000000

> --- a/bits/math-finite.h

> +++ /dev/null

> @@ -1,197 +0,0 @@

> -/* Entry points to finite-math-only compiler runs.

> -   Copyright (C) 2011-2019 Free Software Foundation, Inc.

> -   This file is part of the GNU C Library.

> -

> -   The GNU C Library is free software; you can redistribute it and/or

> -   modify it under the terms of the GNU Lesser General Public

> -   License as published by the Free Software Foundation; either

> -   version 2.1 of the License, or (at your option) any later version.

> -

> -   The GNU C Library is distributed in the hope that it will be useful,

> -   but WITHOUT ANY WARRANTY; without even the implied warranty of

> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

> -   Lesser General Public License for more details.

> -

> -   You should have received a copy of the GNU Lesser General Public

> -   License along with the GNU C Library; if not, see

> -   <http://www.gnu.org/licenses/>.  */

> -

> -#ifndef _MATH_H

> -# error "Never use <bits/math-finite.h> directly; include <math.h> instead."

> -#endif

> -

> -#define __REDIRFROM(...) __REDIRFROM_X(__VA_ARGS__)

> -

> -#define __REDIRTO(...) __REDIRTO_X(__VA_ARGS__)

> -

> -#define __MATH_REDIRCALL_X(from, args, to) \

> -  extern _Mdouble_ __REDIRECT_NTH (from, args, to)

> -#define __MATH_REDIRCALL(function, reentrant, args) \

> -  __MATH_REDIRCALL_X \

> -   (__REDIRFROM (function, reentrant), args, \

> -    __REDIRTO (function, reentrant))

> -#define __MATH_REDIRCALL_2(from, reentrant, args, to) \

> -  __MATH_REDIRCALL_X \

> -   (__REDIRFROM (from, reentrant), args, \

> -    __REDIRTO (to, reentrant))

> -

> -#define __MATH_REDIRCALL_INTERNAL(function, reentrant, args) \

> -  __MATH_REDIRCALL_X \

> -   (__REDIRFROM (__CONCAT (__, function), \

> -		 __CONCAT (reentrant, _finite)), \

> -    args, __REDIRTO (function, _r))

> -

> -

> -/* acos.  */

> -__MATH_REDIRCALL (acos, , (_Mdouble_));

> -

> -#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99

> -/* acosh.  */

> -__MATH_REDIRCALL (acosh, , (_Mdouble_));

> -#endif

> -

> -/* asin.  */

> -__MATH_REDIRCALL (asin, , (_Mdouble_));

> -

> -/* atan2.  */

> -__MATH_REDIRCALL (atan2, , (_Mdouble_, _Mdouble_));

> -

> -#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99

> -/* atanh.  */

> -__MATH_REDIRCALL (atanh, , (_Mdouble_));

> -#endif

> -

> -/* cosh.  */

> -__MATH_REDIRCALL (cosh, , (_Mdouble_));

> -

> -/* exp.  */

> -__MATH_REDIRCALL (exp, , (_Mdouble_));

> -

> -#if __GLIBC_USE (IEC_60559_FUNCS_EXT)

> -/* exp10.  */

> -__MATH_REDIRCALL (exp10, , (_Mdouble_));

> -#endif

> -

> -#ifdef __USE_ISOC99

> -/* exp2.  */

> -__MATH_REDIRCALL (exp2, , (_Mdouble_));

> -#endif

> -

> -/* fmod.  */

> -__MATH_REDIRCALL (fmod, , (_Mdouble_, _Mdouble_));

> -

> -#if defined __USE_XOPEN || defined __USE_ISOC99

> -/* hypot.  */

> -__MATH_REDIRCALL (hypot, , (_Mdouble_, _Mdouble_));

> -#endif

> -

> -#if (__MATH_DECLARING_DOUBLE && (defined __USE_MISC || defined __USE_XOPEN)) \

> -    || (!__MATH_DECLARING_DOUBLE && defined __USE_MISC)

> -/* j0.  */

> -__MATH_REDIRCALL (j0, , (_Mdouble_));

> -

> -/* y0.  */

> -__MATH_REDIRCALL (y0, , (_Mdouble_));

> -

> -/* j1.  */

> -__MATH_REDIRCALL (j1, , (_Mdouble_));

> -

> -/* y1.  */

> -__MATH_REDIRCALL (y1, , (_Mdouble_));

> -

> -/* jn.  */

> -__MATH_REDIRCALL (jn, , (int, _Mdouble_));

> -

> -/* yn.  */

> -__MATH_REDIRCALL (yn, , (int, _Mdouble_));

> -#endif

> -

> -#ifdef __USE_MISC

> -/* lgamma_r.  */

> -__MATH_REDIRCALL (lgamma, _r, (_Mdouble_, int *));

> -#endif

> -

> -/* Redirect __lgammal_r_finite to __lgamma_r_finite when __NO_LONG_DOUBLE_MATH

> -   is set and to itself otherwise.  It also redirects __lgamma_r_finite and

> -   __lgammaf_r_finite to themselves.  */

> -__MATH_REDIRCALL_INTERNAL (lgamma, _r, (_Mdouble_, int *));

> -

> -#if ((defined __USE_XOPEN || defined __USE_ISOC99) \

> -     && defined __extern_always_inline)

> -/* lgamma.  */

> -__extern_always_inline _Mdouble_

> -__NTH (__REDIRFROM (lgamma, ) (_Mdouble_ __d))

> -{

> -# if defined __USE_MISC || defined __USE_XOPEN

> -  return __REDIRTO (lgamma, _r) (__d, &signgam);

> -# else

> -  int __local_signgam = 0;

> -  return __REDIRTO (lgamma, _r) (__d, &__local_signgam);

> -# endif

> -}

> -#endif

> -

> -#if ((defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)) \

> -     && defined __extern_always_inline) && !__MATH_DECLARING_FLOATN

> -/* gamma.  */

> -__extern_always_inline _Mdouble_

> -__NTH (__REDIRFROM (gamma, ) (_Mdouble_ __d))

> -{

> -  return __REDIRTO (lgamma, _r) (__d, &signgam);

> -}

> -#endif

> -

> -/* log.  */

> -__MATH_REDIRCALL (log, , (_Mdouble_));

> -

> -/* log10.  */

> -__MATH_REDIRCALL (log10, , (_Mdouble_));

> -

> -#ifdef __USE_ISOC99

> -/* log2.  */

> -__MATH_REDIRCALL (log2, , (_Mdouble_));

> -#endif

> -

> -/* pow.  */

> -__MATH_REDIRCALL (pow, , (_Mdouble_, _Mdouble_));

> -

> -#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99

> -/* remainder.  */

> -__MATH_REDIRCALL (remainder, , (_Mdouble_, _Mdouble_));

> -#endif

> -

> -#if ((__MATH_DECLARING_DOUBLE \

> -      && (defined __USE_MISC \

> -	  || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8))) \

> -     || (!defined __MATH_DECLARE_LDOUBLE && defined __USE_MISC)) \

> -    && !__MATH_DECLARING_FLOATN

> -/* scalb.  */

> -__MATH_REDIRCALL (scalb, , (_Mdouble_, _Mdouble_));

> -#endif

> -

> -/* sinh.  */

> -__MATH_REDIRCALL (sinh, , (_Mdouble_));

> -

> -/* sqrt.  */

> -__MATH_REDIRCALL (sqrt, , (_Mdouble_));

> -

> -#if defined __USE_ISOC99 && defined __extern_always_inline

> -/* tgamma.  */

> -extern _Mdouble_

> -__REDIRFROM (__gamma, _r_finite) (_Mdouble_, int *);

> -

> -__extern_always_inline _Mdouble_

> -__NTH (__REDIRFROM (tgamma, ) (_Mdouble_ __d))

> -{

> -  int __local_signgam = 0;

> -  _Mdouble_ __res = __REDIRTO (gamma, _r) (__d, &__local_signgam);

> -  return __local_signgam < 0 ? -__res : __res;

> -}

> -#endif

> -

> -#undef __REDIRFROM

> -#undef __REDIRTO

> -#undef __MATH_REDIRCALL

> -#undef __MATH_REDIRCALL_2

> -#undef __MATH_REDIRCALL_INTERNAL

> -#undef __MATH_REDIRCALL_X

> diff --git a/math/Makefile b/math/Makefile

> index cb4eaec6a9d54d3cb08a3ff86ea9fd15c41cf127..8d754ed02c4e60dc9becc63e2b604e8c0d6557f7 100644

> --- a/math/Makefile

> +++ b/math/Makefile

> @@ -25,8 +25,7 @@ include ../Makeconfig

>  headers		:= math.h bits/mathcalls.h bits/mathinline.h \

>  		   fpu_control.h complex.h bits/cmathcalls.h fenv.h \

>  		   bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \

> -		   bits/math-finite.h bits/math-vector.h \

> -		   finclude/math-vector-fortran.h \

> +		   bits/math-vector.h finclude/math-vector-fortran.h \

>  		   bits/libm-simd-decl-stubs.h bits/iscanonical.h \

>  		   bits/flt-eval-method.h bits/fp-fast.h bits/fp-logb.h \

>  		   bits/long-double.h bits/mathcalls-helper-functions.h \

> diff --git a/math/math.h b/math/math.h

> index d70ec3877cc125b0241b7f63edafe4f6000c5f5c..ab2bef2ff75cd6fee9abd09135e52f9504d09364 100644

> --- a/math/math.h

> +++ b/math/math.h

> @@ -1245,226 +1245,6 @@ iszero (__T __val)

>  # include <bits/mathinline.h>

>  #endif

>  

> -/* Define special entry points to use when the compiler got told to

> -   only expect finite results.  */

> -#if defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0

> -

> -/* Include bits/math-finite.h for double.  */

> -# define _Mdouble_ double

> -# define __MATH_DECLARING_DOUBLE 1

> -# define __MATH_DECLARING_FLOATN 0

> -# define __REDIRFROM_X(function, reentrant) \

> -  function ## reentrant

> -# define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## reentrant ## _finite

> -# include <bits/math-finite.h>

> -# undef _Mdouble_

> -# undef __MATH_DECLARING_DOUBLE

> -# undef __MATH_DECLARING_FLOATN

> -# undef __REDIRFROM_X

> -# undef __REDIRTO_X

> -

> -/* When __USE_ISOC99 is defined, include math-finite for float and

> -   long double, as well.  */

> -# ifdef __USE_ISOC99

> -

> -/* Include bits/math-finite.h for float.  */

> -#  define _Mdouble_ float

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 0

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f ## reentrant

> -#  define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f ## reentrant ## _finite

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -

> -/* Include bits/math-finite.h for long double.  */

> -#  ifdef __MATH_DECLARE_LDOUBLE

> -#   define _Mdouble_ long double

> -#   define __MATH_DECLARING_DOUBLE 0

> -#   define __MATH_DECLARING_FLOATN 0

> -#   define __REDIRFROM_X(function, reentrant) \

> -  function ## l ## reentrant

> -#   ifdef __NO_LONG_DOUBLE_MATH

> -#    define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## reentrant ## _finite

> -#   else

> -#    define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## l ## reentrant ## _finite

> -#   endif

> -#   include <bits/math-finite.h>

> -#   undef _Mdouble_

> -#   undef __MATH_DECLARING_DOUBLE

> -#   undef __MATH_DECLARING_FLOATN

> -#   undef __REDIRFROM_X

> -#   undef __REDIRTO_X

> -#  endif

> -

> -# endif /* __USE_ISOC99.  */

> -

> -/* Include bits/math-finite.h for _FloatN and _FloatNx.  */

> -

> -# if (__HAVE_DISTINCT_FLOAT16 || (__HAVE_FLOAT16 && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float16

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f16 ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT16

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f16 ## reentrant ## _finite

> -#  else

> -#   error "non-disinct _Float16"

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT32 || (__HAVE_FLOAT32 && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float32

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f32 ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT32

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f32 ## reentrant ## _finite

> -#  else

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f ## reentrant ## _finite

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT64 || (__HAVE_FLOAT64 && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float64

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f64 ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT64

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f64 ## reentrant ## _finite

> -#  else

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## reentrant ## _finite

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT128 || (__HAVE_FLOAT128 && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float128

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f128 ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT128

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f128 ## reentrant ## _finite

> -#  else

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## l ## reentrant ## _finite

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT32X || (__HAVE_FLOAT32X && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float32x

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f32x ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT32X

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f32x ## reentrant ## _finite

> -#  else

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## reentrant ## _finite

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT64X || (__HAVE_FLOAT64X && !defined _LIBC))	\

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float64x

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f64x ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT64X

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f64x ## reentrant ## _finite

> -#  elif __HAVE_FLOAT64X_LONG_DOUBLE

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## l ## reentrant ## _finite

> -#  else

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f128 ## reentrant ## _finite

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -# if (__HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !defined _LIBC)) \

> -      && __GLIBC_USE (IEC_60559_TYPES_EXT)

> -#  define _Mdouble_ _Float128x

> -#  define __MATH_DECLARING_DOUBLE 0

> -#  define __MATH_DECLARING_FLOATN 1

> -#  define __REDIRFROM_X(function, reentrant) \

> -  function ## f128x ## reentrant

> -#  if __HAVE_DISTINCT_FLOAT128X

> -#   define __REDIRTO_X(function, reentrant) \

> -   __ ## function ## f128x ## reentrant ## _finite

> -#  else

> -#   error "non-disinct _Float128x"

> -#  endif

> -#  include <bits/math-finite.h>

> -#  undef _Mdouble_

> -#  undef __MATH_DECLARING_DOUBLE

> -#  undef __MATH_DECLARING_FLOATN

> -#  undef __REDIRFROM_X

> -#  undef __REDIRTO_X

> -# endif

> -

> -#endif /* __FINITE_MATH_ONLY__ > 0.  */

>  

>  #if __GLIBC_USE (IEC_60559_BFP_EXT)

>  /* An expression whose type has the widest of the evaluation formats

> diff --git a/sysdeps/ia64/fpu/bits/math-finite.h b/sysdeps/ia64/fpu/bits/math-finite.h

> deleted file mode 100644

> index 83b126df3fe8a213aab5e3fffd9b3149117aa281..0000000000000000000000000000000000000000

> --- a/sysdeps/ia64/fpu/bits/math-finite.h

> +++ /dev/null

> @@ -1,24 +0,0 @@

> -/* Entry points to finite-math-only compiler runs.

> -   Copyright (C) 2011-2019 Free Software Foundation, Inc.

> -   This file is part of the GNU C Library.

> -

> -   The GNU C Library is free software; you can redistribute it and/or

> -   modify it under the terms of the GNU Lesser General Public

> -   License as published by the Free Software Foundation; either

> -   version 2.1 of the License, or (at your option) any later version.

> -

> -   The GNU C Library is distributed in the hope that it will be useful,

> -   but WITHOUT ANY WARRANTY; without even the implied warranty of

> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

> -   Lesser General Public License for more details.

> -

> -   You should have received a copy of the GNU Lesser General Public

> -   License along with the GNU C Library; if not, see

> -   <http://www.gnu.org/licenses/>.  */

> -

> -#ifndef _MATH_H

> -# error "Never use <bits/math-finite.h> directly; include <math.h> instead."

> -#endif

> -

> -/* Nothing can be done for IA-64 since the math functions differ in their

> -   structure.  */

>
Adhemerval Zanella Oct. 18, 2019, 6:11 p.m. | #2
On 16/07/2019 15:19, Adhemerval Zanella wrote:
> 

> 

> On 26/06/2019 10:57, Wilco Dijkstra wrote:

>> Remove math-finite.h redirections for math functions.

>>

>> Passes buildmanyglibc.

>>

>> 2019-06-26  Wilco Dijkstra  <wdijkstr@arm.com>

>>

>>         * bits/math-finite.h: Delete file.

>>         * math/Makefile: Remove math-finite.h from installed headers.

>>         * math/math.h: Remove math-finite.h inclusions.

>>         * sysdeps/ia64/fpu/bits/math-finite.h: Delete file.

> 

> I think the reasons laid out on original proposal [1] are reasonable.

> The math-finite.h is the optimization that sounded like a brilliant idea

> but ended up as just extra complexity when proper optimization were applied

> for the original intent.

> 

> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> 

> [1] https://sourceware.org/ml/libc-alpha/2019-03/msg00395.html


I chatted with Wilco and I will commit this patch shortly on his
behalf.

Patch

diff --git a/bits/math-finite.h b/bits/math-finite.h
deleted file mode 100644
index 6141c1253724d022193fdd430b3ff0dab4730346..0000000000000000000000000000000000000000
--- a/bits/math-finite.h
+++ /dev/null
@@ -1,197 +0,0 @@ 
-/* Entry points to finite-math-only compiler runs.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/math-finite.h> directly; include <math.h> instead."
-#endif
-
-#define __REDIRFROM(...) __REDIRFROM_X(__VA_ARGS__)
-
-#define __REDIRTO(...) __REDIRTO_X(__VA_ARGS__)
-
-#define __MATH_REDIRCALL_X(from, args, to) \
-  extern _Mdouble_ __REDIRECT_NTH (from, args, to)
-#define __MATH_REDIRCALL(function, reentrant, args) \
-  __MATH_REDIRCALL_X \
-   (__REDIRFROM (function, reentrant), args, \
-    __REDIRTO (function, reentrant))
-#define __MATH_REDIRCALL_2(from, reentrant, args, to) \
-  __MATH_REDIRCALL_X \
-   (__REDIRFROM (from, reentrant), args, \
-    __REDIRTO (to, reentrant))
-
-#define __MATH_REDIRCALL_INTERNAL(function, reentrant, args) \
-  __MATH_REDIRCALL_X \
-   (__REDIRFROM (__CONCAT (__, function), \
-		 __CONCAT (reentrant, _finite)), \
-    args, __REDIRTO (function, _r))
-
-
-/* acos.  */
-__MATH_REDIRCALL (acos, , (_Mdouble_));
-
-#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
-/* acosh.  */
-__MATH_REDIRCALL (acosh, , (_Mdouble_));
-#endif
-
-/* asin.  */
-__MATH_REDIRCALL (asin, , (_Mdouble_));
-
-/* atan2.  */
-__MATH_REDIRCALL (atan2, , (_Mdouble_, _Mdouble_));
-
-#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
-/* atanh.  */
-__MATH_REDIRCALL (atanh, , (_Mdouble_));
-#endif
-
-/* cosh.  */
-__MATH_REDIRCALL (cosh, , (_Mdouble_));
-
-/* exp.  */
-__MATH_REDIRCALL (exp, , (_Mdouble_));
-
-#if __GLIBC_USE (IEC_60559_FUNCS_EXT)
-/* exp10.  */
-__MATH_REDIRCALL (exp10, , (_Mdouble_));
-#endif
-
-#ifdef __USE_ISOC99
-/* exp2.  */
-__MATH_REDIRCALL (exp2, , (_Mdouble_));
-#endif
-
-/* fmod.  */
-__MATH_REDIRCALL (fmod, , (_Mdouble_, _Mdouble_));
-
-#if defined __USE_XOPEN || defined __USE_ISOC99
-/* hypot.  */
-__MATH_REDIRCALL (hypot, , (_Mdouble_, _Mdouble_));
-#endif
-
-#if (__MATH_DECLARING_DOUBLE && (defined __USE_MISC || defined __USE_XOPEN)) \
-    || (!__MATH_DECLARING_DOUBLE && defined __USE_MISC)
-/* j0.  */
-__MATH_REDIRCALL (j0, , (_Mdouble_));
-
-/* y0.  */
-__MATH_REDIRCALL (y0, , (_Mdouble_));
-
-/* j1.  */
-__MATH_REDIRCALL (j1, , (_Mdouble_));
-
-/* y1.  */
-__MATH_REDIRCALL (y1, , (_Mdouble_));
-
-/* jn.  */
-__MATH_REDIRCALL (jn, , (int, _Mdouble_));
-
-/* yn.  */
-__MATH_REDIRCALL (yn, , (int, _Mdouble_));
-#endif
-
-#ifdef __USE_MISC
-/* lgamma_r.  */
-__MATH_REDIRCALL (lgamma, _r, (_Mdouble_, int *));
-#endif
-
-/* Redirect __lgammal_r_finite to __lgamma_r_finite when __NO_LONG_DOUBLE_MATH
-   is set and to itself otherwise.  It also redirects __lgamma_r_finite and
-   __lgammaf_r_finite to themselves.  */
-__MATH_REDIRCALL_INTERNAL (lgamma, _r, (_Mdouble_, int *));
-
-#if ((defined __USE_XOPEN || defined __USE_ISOC99) \
-     && defined __extern_always_inline)
-/* lgamma.  */
-__extern_always_inline _Mdouble_
-__NTH (__REDIRFROM (lgamma, ) (_Mdouble_ __d))
-{
-# if defined __USE_MISC || defined __USE_XOPEN
-  return __REDIRTO (lgamma, _r) (__d, &signgam);
-# else
-  int __local_signgam = 0;
-  return __REDIRTO (lgamma, _r) (__d, &__local_signgam);
-# endif
-}
-#endif
-
-#if ((defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)) \
-     && defined __extern_always_inline) && !__MATH_DECLARING_FLOATN
-/* gamma.  */
-__extern_always_inline _Mdouble_
-__NTH (__REDIRFROM (gamma, ) (_Mdouble_ __d))
-{
-  return __REDIRTO (lgamma, _r) (__d, &signgam);
-}
-#endif
-
-/* log.  */
-__MATH_REDIRCALL (log, , (_Mdouble_));
-
-/* log10.  */
-__MATH_REDIRCALL (log10, , (_Mdouble_));
-
-#ifdef __USE_ISOC99
-/* log2.  */
-__MATH_REDIRCALL (log2, , (_Mdouble_));
-#endif
-
-/* pow.  */
-__MATH_REDIRCALL (pow, , (_Mdouble_, _Mdouble_));
-
-#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
-/* remainder.  */
-__MATH_REDIRCALL (remainder, , (_Mdouble_, _Mdouble_));
-#endif
-
-#if ((__MATH_DECLARING_DOUBLE \
-      && (defined __USE_MISC \
-	  || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8))) \
-     || (!defined __MATH_DECLARE_LDOUBLE && defined __USE_MISC)) \
-    && !__MATH_DECLARING_FLOATN
-/* scalb.  */
-__MATH_REDIRCALL (scalb, , (_Mdouble_, _Mdouble_));
-#endif
-
-/* sinh.  */
-__MATH_REDIRCALL (sinh, , (_Mdouble_));
-
-/* sqrt.  */
-__MATH_REDIRCALL (sqrt, , (_Mdouble_));
-
-#if defined __USE_ISOC99 && defined __extern_always_inline
-/* tgamma.  */
-extern _Mdouble_
-__REDIRFROM (__gamma, _r_finite) (_Mdouble_, int *);
-
-__extern_always_inline _Mdouble_
-__NTH (__REDIRFROM (tgamma, ) (_Mdouble_ __d))
-{
-  int __local_signgam = 0;
-  _Mdouble_ __res = __REDIRTO (gamma, _r) (__d, &__local_signgam);
-  return __local_signgam < 0 ? -__res : __res;
-}
-#endif
-
-#undef __REDIRFROM
-#undef __REDIRTO
-#undef __MATH_REDIRCALL
-#undef __MATH_REDIRCALL_2
-#undef __MATH_REDIRCALL_INTERNAL
-#undef __MATH_REDIRCALL_X
diff --git a/math/Makefile b/math/Makefile
index cb4eaec6a9d54d3cb08a3ff86ea9fd15c41cf127..8d754ed02c4e60dc9becc63e2b604e8c0d6557f7 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -25,8 +25,7 @@  include ../Makeconfig
 headers		:= math.h bits/mathcalls.h bits/mathinline.h \
 		   fpu_control.h complex.h bits/cmathcalls.h fenv.h \
 		   bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \
-		   bits/math-finite.h bits/math-vector.h \
-		   finclude/math-vector-fortran.h \
+		   bits/math-vector.h finclude/math-vector-fortran.h \
 		   bits/libm-simd-decl-stubs.h bits/iscanonical.h \
 		   bits/flt-eval-method.h bits/fp-fast.h bits/fp-logb.h \
 		   bits/long-double.h bits/mathcalls-helper-functions.h \
diff --git a/math/math.h b/math/math.h
index d70ec3877cc125b0241b7f63edafe4f6000c5f5c..ab2bef2ff75cd6fee9abd09135e52f9504d09364 100644
--- a/math/math.h
+++ b/math/math.h
@@ -1245,226 +1245,6 @@  iszero (__T __val)
 # include <bits/mathinline.h>
 #endif
 
-/* Define special entry points to use when the compiler got told to
-   only expect finite results.  */
-#if defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0
-
-/* Include bits/math-finite.h for double.  */
-# define _Mdouble_ double
-# define __MATH_DECLARING_DOUBLE 1
-# define __MATH_DECLARING_FLOATN 0
-# define __REDIRFROM_X(function, reentrant) \
-  function ## reentrant
-# define __REDIRTO_X(function, reentrant) \
-   __ ## function ## reentrant ## _finite
-# include <bits/math-finite.h>
-# undef _Mdouble_
-# undef __MATH_DECLARING_DOUBLE
-# undef __MATH_DECLARING_FLOATN
-# undef __REDIRFROM_X
-# undef __REDIRTO_X
-
-/* When __USE_ISOC99 is defined, include math-finite for float and
-   long double, as well.  */
-# ifdef __USE_ISOC99
-
-/* Include bits/math-finite.h for float.  */
-#  define _Mdouble_ float
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 0
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f ## reentrant
-#  define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f ## reentrant ## _finite
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-
-/* Include bits/math-finite.h for long double.  */
-#  ifdef __MATH_DECLARE_LDOUBLE
-#   define _Mdouble_ long double
-#   define __MATH_DECLARING_DOUBLE 0
-#   define __MATH_DECLARING_FLOATN 0
-#   define __REDIRFROM_X(function, reentrant) \
-  function ## l ## reentrant
-#   ifdef __NO_LONG_DOUBLE_MATH
-#    define __REDIRTO_X(function, reentrant) \
-   __ ## function ## reentrant ## _finite
-#   else
-#    define __REDIRTO_X(function, reentrant) \
-   __ ## function ## l ## reentrant ## _finite
-#   endif
-#   include <bits/math-finite.h>
-#   undef _Mdouble_
-#   undef __MATH_DECLARING_DOUBLE
-#   undef __MATH_DECLARING_FLOATN
-#   undef __REDIRFROM_X
-#   undef __REDIRTO_X
-#  endif
-
-# endif /* __USE_ISOC99.  */
-
-/* Include bits/math-finite.h for _FloatN and _FloatNx.  */
-
-# if (__HAVE_DISTINCT_FLOAT16 || (__HAVE_FLOAT16 && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float16
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f16 ## reentrant
-#  if __HAVE_DISTINCT_FLOAT16
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f16 ## reentrant ## _finite
-#  else
-#   error "non-disinct _Float16"
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT32 || (__HAVE_FLOAT32 && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float32
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f32 ## reentrant
-#  if __HAVE_DISTINCT_FLOAT32
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f32 ## reentrant ## _finite
-#  else
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f ## reentrant ## _finite
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT64 || (__HAVE_FLOAT64 && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float64
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f64 ## reentrant
-#  if __HAVE_DISTINCT_FLOAT64
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f64 ## reentrant ## _finite
-#  else
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## reentrant ## _finite
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT128 || (__HAVE_FLOAT128 && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float128
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f128 ## reentrant
-#  if __HAVE_DISTINCT_FLOAT128
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f128 ## reentrant ## _finite
-#  else
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## l ## reentrant ## _finite
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT32X || (__HAVE_FLOAT32X && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float32x
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f32x ## reentrant
-#  if __HAVE_DISTINCT_FLOAT32X
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f32x ## reentrant ## _finite
-#  else
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## reentrant ## _finite
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT64X || (__HAVE_FLOAT64X && !defined _LIBC))	\
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float64x
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f64x ## reentrant
-#  if __HAVE_DISTINCT_FLOAT64X
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f64x ## reentrant ## _finite
-#  elif __HAVE_FLOAT64X_LONG_DOUBLE
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## l ## reentrant ## _finite
-#  else
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f128 ## reentrant ## _finite
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-# if (__HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !defined _LIBC)) \
-      && __GLIBC_USE (IEC_60559_TYPES_EXT)
-#  define _Mdouble_ _Float128x
-#  define __MATH_DECLARING_DOUBLE 0
-#  define __MATH_DECLARING_FLOATN 1
-#  define __REDIRFROM_X(function, reentrant) \
-  function ## f128x ## reentrant
-#  if __HAVE_DISTINCT_FLOAT128X
-#   define __REDIRTO_X(function, reentrant) \
-   __ ## function ## f128x ## reentrant ## _finite
-#  else
-#   error "non-disinct _Float128x"
-#  endif
-#  include <bits/math-finite.h>
-#  undef _Mdouble_
-#  undef __MATH_DECLARING_DOUBLE
-#  undef __MATH_DECLARING_FLOATN
-#  undef __REDIRFROM_X
-#  undef __REDIRTO_X
-# endif
-
-#endif /* __FINITE_MATH_ONLY__ > 0.  */
 
 #if __GLIBC_USE (IEC_60559_BFP_EXT)
 /* An expression whose type has the widest of the evaluation formats
diff --git a/sysdeps/ia64/fpu/bits/math-finite.h b/sysdeps/ia64/fpu/bits/math-finite.h
deleted file mode 100644
index 83b126df3fe8a213aab5e3fffd9b3149117aa281..0000000000000000000000000000000000000000
--- a/sysdeps/ia64/fpu/bits/math-finite.h
+++ /dev/null
@@ -1,24 +0,0 @@ 
-/* Entry points to finite-math-only compiler runs.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/math-finite.h> directly; include <math.h> instead."
-#endif
-
-/* Nothing can be done for IA-64 since the math functions differ in their
-   structure.  */