Use fabs(f/l) rather than __fabs

A few math functions still use __fabs(f/l) rather than fabs, which
means they won't be inlined. Rename them so they are inlined.
Also add -fno-builtin-fabsl to nofpu powerpc makefile to work around
BZ #29253.

	* sysdeps/ieee754/dbl-64/e_lgamma_r.c
	(__ieee754_lgamma_r): Use fabs rather than __fabs.
	* sysdeps/ieee754/dbl-64/e_log10.c (__ieee754_log10): Likewise.
	* sysdeps/ieee754/dbl-64/e_log2.c (__ieee754_log2): Likewise.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c
	(__ieee754_lgammaf_r): Use fabsf rather than __fabsf.
	* sysdeps/ieee754/flt-32/e_log10f.c (__ieee754_log10f): Likewise.
	* sysdeps/ieee754/flt-32/e_log2f.c (__ieee754_log2f): Likewise.
	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c
	(__ieee754_lgammal_r): Use fabsl rather than __fabsl.
	* sysdeps/ieee754/ldbl-128/e_log10l.c (__ieee754_log10l): Likewise.
	* sysdeps/ieee754/ldbl-128/e_log2l.c (__ieee754_log2l): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
	(__ieee754_lgammal_r): Use fabsl rather than __fabsl.
	* sysdeps/ieee754/ldbl-128ibm/e_log10l.c (__ieee754_log10l): Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (__ieee754_log2l): Likewise.
	* sysdeps/powerpc/nofpu/Makefile: Add -fno-builtin-fabsl for BZ #29253.
This commit is contained in:
Wilco Dijkstra 2017-09-29 18:54:24 +01:00
parent fffb150735
commit bd8d53bb33
13 changed files with 34 additions and 11 deletions

View File

@ -1,3 +1,23 @@
2017-09-29 Wilco Dijkstra <wdijkstr@arm.com>
* sysdeps/ieee754/dbl-64/e_lgamma_r.c
(__ieee754_lgamma_r): Use fabs rather than __fabs.
* sysdeps/ieee754/dbl-64/e_log10.c (__ieee754_log10): Likewise.
* sysdeps/ieee754/dbl-64/e_log2.c (__ieee754_log2): Likewise.
* sysdeps/ieee754/flt-32/e_lgammaf_r.c
(__ieee754_lgammaf_r): Use fabsf rather than __fabsf.
* sysdeps/ieee754/flt-32/e_log10f.c (__ieee754_log10f): Likewise.
* sysdeps/ieee754/flt-32/e_log2f.c (__ieee754_log2f): Likewise.
* sysdeps/ieee754/ldbl-128/e_lgammal_r.c
(__ieee754_lgammal_r): Use fabsl rather than __fabsl.
* sysdeps/ieee754/ldbl-128/e_log10l.c (__ieee754_log10l): Likewise.
* sysdeps/ieee754/ldbl-128/e_log2l.c (__ieee754_log2l): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
(__ieee754_lgammal_r): Use fabsl rather than __fabsl.
* sysdeps/ieee754/ldbl-128ibm/e_log10l.c (__ieee754_log10l): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_log2l.c (__ieee754_log2l): Likewise.
* sysdeps/powerpc/nofpu/Makefile: Add -fno-builtin-fabsl for BZ #29253.
2017-09-29 Wilco Dijkstra <wdijkstr@arm.com>
* math/bits/cmathcalls.h (cimag): Remove inline.

View File

@ -225,7 +225,7 @@ __ieee754_lgamma_r(double x, int *signgamp)
if(hx<0) {
if(__builtin_expect(ix>=0x43300000, 0))
/* |x|>=2**52, must be -integer */
return __fabs (x)/zero;
return fabs (x)/zero;
if (x < -2.0 && x > -28.0)
return __lgamma_neg (x, signgamp);
t = sin_pi(x);

View File

@ -65,7 +65,7 @@ __ieee754_log10 (double x)
if (hx < 0x00100000)
{ /* x < 2**-1022 */
if (__glibc_unlikely (((hx & 0x7fffffff) | lx) == 0))
return -two54 / __fabs (x); /* log(+-0)=-inf */
return -two54 / fabs (x); /* log(+-0)=-inf */
if (__glibc_unlikely (hx < 0))
return (x - x) / (x - x); /* log(-#) = NaN */
k -= 54;

View File

@ -83,7 +83,7 @@ __ieee754_log2 (double x)
if (hx < 0x00100000)
{ /* x < 2**-1022 */
if (__glibc_unlikely (((hx & 0x7fffffff) | lx) == 0))
return -two54 / __fabs (x); /* log(+-0)=-inf */
return -two54 / fabs (x); /* log(+-0)=-inf */
if (__glibc_unlikely (hx < 0))
return (x - x) / (x - x); /* log(-#) = NaN */
k -= 54;

View File

@ -160,7 +160,7 @@ __ieee754_lgammaf_r(float x, int *signgamp)
}
if(hx<0) {
if(ix>=0x4b000000) /* |x|>=2**23, must be -integer */
return __fabsf (x)/zero;
return fabsf (x)/zero;
if (ix > 0x40000000 /* X < 2.0f. */
&& ix < 0x41700000 /* X > -15.0f. */)
return __lgamma_negf (x, signgamp);

View File

@ -34,7 +34,7 @@ __ieee754_log10f(float x)
k=0;
if (hx < 0x00800000) { /* x < 2**-126 */
if (__builtin_expect((hx&0x7fffffff)==0, 0))
return -two25/__fabsf (x); /* log(+-0)=-inf */
return -two25/fabsf (x); /* log(+-0)=-inf */
if (__builtin_expect(hx<0, 0))
return (x-x)/(x-x); /* log(-#) = NaN */
k -= 25; x *= two25; /* subnormal number, scale up x */

View File

@ -778,7 +778,7 @@ __ieee754_lgammal_r (_Float128 x, int *signgamp)
q = -x;
p = __floorl (q);
if (p == q)
return (one / __fabsl (p - p));
return (one / fabsl (p - p));
_Float128 halfp = p * L(0.5);
if (halfp == __floorl (halfp))
*signgamp = -1;

View File

@ -187,7 +187,7 @@ __ieee754_log10l (_Float128 x)
/* Test for domain */
GET_LDOUBLE_WORDS64 (hx, lx, x);
if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
return (-1 / __fabsl (x)); /* log10l(+-0)=-inf */
return (-1 / fabsl (x)); /* log10l(+-0)=-inf */
if (hx < 0)
return (x - x) / (x - x);
if (hx >= 0x7fff000000000000LL)

View File

@ -181,7 +181,7 @@ __ieee754_log2l (_Float128 x)
/* Test for domain */
GET_LDOUBLE_WORDS64 (hx, lx, x);
if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
return (-1 / __fabsl (x)); /* log2l(+-0)=-inf */
return (-1 / fabsl (x)); /* log2l(+-0)=-inf */
if (hx < 0)
return (x - x) / (x - x);
if (hx >= 0x7fff000000000000LL)

View File

@ -728,7 +728,7 @@ __ieee754_lgammal_r (long double x, int *signgamp)
q = -x;
p = __floorl (q);
if (p == q)
return (one / __fabsl (p - p));
return (one / fabsl (p - p));
long double halfp = p * 0.5L;
if (halfp == __floorl (halfp))
*signgamp = -1;

View File

@ -189,7 +189,7 @@ __ieee754_log10l (long double x)
xhi = ldbl_high (x);
EXTRACT_WORDS64 (hx, xhi);
if ((hx & 0x7fffffffffffffffLL) == 0)
return (-1.0L / __fabsl (x)); /* log10l(+-0)=-inf */
return (-1.0L / fabsl (x)); /* log10l(+-0)=-inf */
if (hx < 0)
return (x - x) / (x - x);
if (hx >= 0x7ff0000000000000LL)

View File

@ -183,7 +183,7 @@ __ieee754_log2l (long double x)
xhi = ldbl_high (x);
EXTRACT_WORDS64 (hx, xhi);
if ((hx & 0x7fffffffffffffffLL) == 0)
return (-1.0L / __fabsl (x)); /* log2l(+-0)=-inf */
return (-1.0L / fabsl (x)); /* log2l(+-0)=-inf */
if (hx < 0)
return (x - x) / (x - x);
if (hx >= 0x7ff0000000000000LL)

View File

@ -29,4 +29,7 @@ CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
CFLAGS-w_j1l_compat.c += -fno-builtin-fabsl
CFLAGS-e_lgammal_r.c += -fno-builtin-fabsl
CFLAGS-e_log10l.c += -fno-builtin-fabsl
CFLAGS-e_log2l.c += -fno-builtin-fabsl
endif