Cleanup a few cases where isinf is used to get the signbit to improve the readability and maintainability and allow inlining.

2015-09-18  Wilco Dijkstra  <wdijkstr@arm.com>

        * math/w_tgamma.c (__ieee754_gamma_r): Use explicit sign check.
        * math/w_tgammaf.c (__ieee754_gammaf_r): Likewise.
        * math/w_tgammal.c (__ieee754_gammal_r): Likewise.
        * stdio-common/printf_fp.c (___printf_fp):
        Use signbit to get the sign. Use isinf macro to allow inlining.
        * stdio-common/printf_fphex.c (__printf_fphex): Likewise.
        * stdio-common/printf_size.c (__printf_size): Likewise.
This commit is contained in:
Wilco Dijkstra 2015-09-18 21:19:48 +01:00
parent 3cc652e951
commit 89faa0340a
7 changed files with 30 additions and 28 deletions

View File

@ -1,3 +1,13 @@
2015-09-18 Wilco Dijkstra <wdijkstr@arm.com>
* math/w_tgamma.c (__ieee754_gamma_r): Use explicit sign check.
* math/w_tgammaf.c (__ieee754_gammaf_r): Likewise.
* math/w_tgammal.c (__ieee754_gammal_r): Likewise.
* stdio-common/printf_fp.c (___printf_fp):
Use signbit to get the sign. Use isinf macro to allow inlining.
* stdio-common/printf_fphex.c (__printf_fphex): Likewise.
* stdio-common/printf_size.c (__printf_size): Likewise.
2015-09-18 Mike Frysinger <vapier@gentoo.org> 2015-09-18 Mike Frysinger <vapier@gentoo.org>
* timezone/Makefile ($(testdata)/XT%): Call $(make-target-directory). * timezone/Makefile ($(testdata)/XT%): Call $(make-target-directory).

View File

@ -26,7 +26,7 @@ __tgamma(double x)
double y = __ieee754_gamma_r(x,&local_signgam); double y = __ieee754_gamma_r(x,&local_signgam);
if(__glibc_unlikely (!isfinite (y) || y == 0) if(__glibc_unlikely (!isfinite (y) || y == 0)
&& (isfinite (x) || isinf (x) < 0) && (isfinite (x) || (isinf (x) && x < 0.0))
&& _LIB_VERSION != _IEEE_) { && _LIB_VERSION != _IEEE_) {
if (x == 0.0) if (x == 0.0)
return __kernel_standard(x,x,50); /* tgamma pole */ return __kernel_standard(x,x,50); /* tgamma pole */

View File

@ -24,7 +24,7 @@ __tgammaf(float x)
float y = __ieee754_gammaf_r(x,&local_signgam); float y = __ieee754_gammaf_r(x,&local_signgam);
if(__glibc_unlikely (!isfinite (y) || y == 0) if(__glibc_unlikely (!isfinite (y) || y == 0)
&& (isfinite (x) || isinf (x) < 0) && (isfinite (x) || (isinf (x) && x < 0.0))
&& _LIB_VERSION != _IEEE_) { && _LIB_VERSION != _IEEE_) {
if (x == (float)0.0) if (x == (float)0.0)
/* tgammaf pole */ /* tgammaf pole */

View File

@ -29,7 +29,7 @@ __tgammal(long double x)
long double y = __ieee754_gammal_r(x,&local_signgam); long double y = __ieee754_gammal_r(x,&local_signgam);
if(__glibc_unlikely (!isfinite (y) || y == 0) if(__glibc_unlikely (!isfinite (y) || y == 0)
&& (isfinite (x) || isinf (x) < 0) && (isfinite (x) || (isinf (x) && x < 0.0))
&& _LIB_VERSION != _IEEE_) { && _LIB_VERSION != _IEEE_) {
if(x==0.0) if(x==0.0)
return __kernel_standard_l(x,x,250); /* tgamma pole */ return __kernel_standard_l(x,x,250); /* tgamma pole */

View File

@ -332,7 +332,6 @@ ___printf_fp (FILE *fp,
fpnum.ldbl = *(const long double *) args[0]; fpnum.ldbl = *(const long double *) args[0];
/* Check for special values: not a number or infinity. */ /* Check for special values: not a number or infinity. */
int res;
if (isnan (fpnum.ldbl)) if (isnan (fpnum.ldbl))
{ {
is_neg = signbit (fpnum.ldbl); is_neg = signbit (fpnum.ldbl);
@ -347,9 +346,9 @@ ___printf_fp (FILE *fp,
wspecial = L"nan"; wspecial = L"nan";
} }
} }
else if ((res = __isinfl (fpnum.ldbl))) else if (isinf (fpnum.ldbl))
{ {
is_neg = res < 0; is_neg = signbit (fpnum.ldbl);
if (isupper (info->spec)) if (isupper (info->spec))
{ {
special = "INF"; special = "INF";
@ -377,11 +376,9 @@ ___printf_fp (FILE *fp,
fpnum.dbl = *(const double *) args[0]; fpnum.dbl = *(const double *) args[0];
/* Check for special values: not a number or infinity. */ /* Check for special values: not a number or infinity. */
int res;
if (isnan (fpnum.dbl)) if (isnan (fpnum.dbl))
{ {
union ieee754_double u = { .d = fpnum.dbl }; is_neg = signbit (fpnum.dbl);
is_neg = u.ieee.negative != 0;
if (isupper (info->spec)) if (isupper (info->spec))
{ {
special = "NAN"; special = "NAN";
@ -393,9 +390,9 @@ ___printf_fp (FILE *fp,
wspecial = L"nan"; wspecial = L"nan";
} }
} }
else if ((res = __isinf (fpnum.dbl))) else if (isinf (fpnum.dbl))
{ {
is_neg = res < 0; is_neg = signbit (fpnum.dbl);
if (isupper (info->spec)) if (isupper (info->spec))
{ {
special = "INF"; special = "INF";

View File

@ -180,7 +180,7 @@ __printf_fphex (FILE *fp,
} }
else else
{ {
if (__isinfl (fpnum.ldbl)) if (isinf (fpnum.ldbl))
{ {
if (isupper (info->spec)) if (isupper (info->spec))
{ {
@ -204,7 +204,6 @@ __printf_fphex (FILE *fp,
/* Check for special values: not a number or infinity. */ /* Check for special values: not a number or infinity. */
if (isnan (fpnum.dbl.d)) if (isnan (fpnum.dbl.d))
{ {
negative = fpnum.dbl.ieee.negative != 0;
if (isupper (info->spec)) if (isupper (info->spec))
{ {
special = "NAN"; special = "NAN";
@ -218,8 +217,7 @@ __printf_fphex (FILE *fp,
} }
else else
{ {
int res = __isinf (fpnum.dbl.d); if (isinf (fpnum.dbl.d))
if (res)
{ {
if (isupper (info->spec)) if (isupper (info->spec))
{ {
@ -231,11 +229,9 @@ __printf_fphex (FILE *fp,
special = "inf"; special = "inf";
wspecial = L"inf"; wspecial = L"inf";
} }
negative = res < 0;
} }
else
negative = signbit (fpnum.dbl.d);
} }
negative = signbit (fpnum.dbl.d);
} }
if (special) if (special)

View File

@ -108,7 +108,7 @@ __printf_size (FILE *fp, const struct printf_info *info,
fpnum; fpnum;
const void *ptr = &fpnum; const void *ptr = &fpnum;
int fpnum_sign = 0; int is_neg = 0;
/* "NaN" or "Inf" for the special cases. */ /* "NaN" or "Inf" for the special cases. */
const char *special = NULL; const char *special = NULL;
@ -117,7 +117,6 @@ __printf_size (FILE *fp, const struct printf_info *info,
struct printf_info fp_info; struct printf_info fp_info;
int done = 0; int done = 0;
int wide = info->wide; int wide = info->wide;
int res;
/* Fetch the argument value. */ /* Fetch the argument value. */
#ifndef __NO_LONG_DOUBLE_MATH #ifndef __NO_LONG_DOUBLE_MATH
@ -130,11 +129,11 @@ __printf_size (FILE *fp, const struct printf_info *info,
{ {
special = "nan"; special = "nan";
wspecial = L"nan"; wspecial = L"nan";
// fpnum_sign = 0; Already zero // is_neg = 0; Already zero
} }
else if ((res = __isinfl (fpnum.ldbl))) else if (isinf (fpnum.ldbl))
{ {
fpnum_sign = res; is_neg = signbit (fpnum.ldbl);
special = "inf"; special = "inf";
wspecial = L"inf"; wspecial = L"inf";
} }
@ -155,11 +154,11 @@ __printf_size (FILE *fp, const struct printf_info *info,
{ {
special = "nan"; special = "nan";
wspecial = L"nan"; wspecial = L"nan";
// fpnum_sign = 0; Already zero // is_neg = 0; Already zero
} }
else if ((res = __isinf (fpnum.dbl.d))) else if (isinf (fpnum.dbl.d))
{ {
fpnum_sign = res; is_neg = signbit (fpnum.dbl.d);
special = "inf"; special = "inf";
wspecial = L"inf"; wspecial = L"inf";
} }
@ -175,14 +174,14 @@ __printf_size (FILE *fp, const struct printf_info *info,
{ {
int width = info->prec > info->width ? info->prec : info->width; int width = info->prec > info->width ? info->prec : info->width;
if (fpnum_sign < 0 || info->showsign || info->space) if (is_neg || info->showsign || info->space)
--width; --width;
width -= 3; width -= 3;
if (!info->left && width > 0) if (!info->left && width > 0)
PADN (' ', width); PADN (' ', width);
if (fpnum_sign < 0) if (is_neg)
outchar ('-'); outchar ('-');
else if (info->showsign) else if (info->showsign)
outchar ('+'); outchar ('+');