Move math_narrow_eval to separate math-narrow-eval.h.

This patch continues cleaning up the math_private.h header, which
contains lots of different definitions many of which are only needed
by a limited subset of files using that header (and some of which are
overridden by architectures that only want to override selected parts
of the header), by moving the math_narrow_eval macro out to a separate
math-narrow-eval.h header, only included by those files that need it.
That header is placed in include/ (since it's used in stdlib/, not
just files built in math/, but no sysdeps variants are needed at
present).

Tested for x86_64, and with build-many-glibcs.py.  (Installed stripped
shared libraries change because of line numbers in assertions in
strtod_l.c.)

	* include/math-narrow-eval.h: New file.  Contents moved from ....
	* sysdeps/generic/math_private.h: ... here.
	(math_narrow_eval): Remove macro.  Moved to math-narrow-eval.h.
	[FLT_EVAL_METHOD != 0] (excess_precision): Likewise.
	* math/s_fdim_template.c: Include <math-narrow-eval.h>.
	* stdlib/strtod_l.c: Likewise.
	* sysdeps/i386/fpu/s_f32xaddf64.c: Likewise.
	* sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
	* sysdeps/i386/fpu/s_fdim.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_cosh.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_gamma_r.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_j1.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_jn.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_lgamma_r.c: Likewise.
	* sysdeps/ieee754/dbl-64/e_sinh.c: Likewise.
	* sysdeps/ieee754/dbl-64/gamma_productf.c: Likewise.
	* sysdeps/ieee754/dbl-64/k_rem_pio2.c: Likewise.
	* sysdeps/ieee754/dbl-64/lgamma_neg.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_erf.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_llrint.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_lrint.c: Likewise.
	* sysdeps/ieee754/flt-32/e_coshf.c: Likewise.
	* sysdeps/ieee754/flt-32/e_exp2f.c: Likewise.
	* sysdeps/ieee754/flt-32/e_expf.c: Likewise.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise.
	* sysdeps/ieee754/flt-32/e_j1f.c: Likewise.
	* sysdeps/ieee754/flt-32/e_jnf.c: Likewise.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c: Likewise.
	* sysdeps/ieee754/flt-32/e_sinhf.c: Likewise.
	* sysdeps/ieee754/flt-32/k_rem_pio2f.c: Likewise.
	* sysdeps/ieee754/flt-32/lgamma_negf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_erff.c: Likewise.
	* sysdeps/ieee754/flt-32/s_llrintf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_lrintf.c: Likewise.
	* sysdeps/ieee754/ldbl-96/gamma_product.c: Likewise.
This commit is contained in:
Joseph Myers 2018-05-09 00:15:10 +00:00
parent 0555c47719
commit aaee3cd88e
34 changed files with 116 additions and 23 deletions

View File

@ -1,3 +1,41 @@
2018-05-09 Joseph Myers <joseph@codesourcery.com>
* include/math-narrow-eval.h: New file. Contents moved from ....
* sysdeps/generic/math_private.h: ... here.
(math_narrow_eval): Remove macro. Moved to math-narrow-eval.h.
[FLT_EVAL_METHOD != 0] (excess_precision): Likewise.
* math/s_fdim_template.c: Include <math-narrow-eval.h>.
* stdlib/strtod_l.c: Likewise.
* sysdeps/i386/fpu/s_f32xaddf64.c: Likewise.
* sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
* sysdeps/i386/fpu/s_fdim.c: Likewise.
* sysdeps/ieee754/dbl-64/e_cosh.c: Likewise.
* sysdeps/ieee754/dbl-64/e_gamma_r.c: Likewise.
* sysdeps/ieee754/dbl-64/e_j1.c: Likewise.
* sysdeps/ieee754/dbl-64/e_jn.c: Likewise.
* sysdeps/ieee754/dbl-64/e_lgamma_r.c: Likewise.
* sysdeps/ieee754/dbl-64/e_sinh.c: Likewise.
* sysdeps/ieee754/dbl-64/gamma_productf.c: Likewise.
* sysdeps/ieee754/dbl-64/k_rem_pio2.c: Likewise.
* sysdeps/ieee754/dbl-64/lgamma_neg.c: Likewise.
* sysdeps/ieee754/dbl-64/s_erf.c: Likewise.
* sysdeps/ieee754/dbl-64/s_llrint.c: Likewise.
* sysdeps/ieee754/dbl-64/s_lrint.c: Likewise.
* sysdeps/ieee754/flt-32/e_coshf.c: Likewise.
* sysdeps/ieee754/flt-32/e_exp2f.c: Likewise.
* sysdeps/ieee754/flt-32/e_expf.c: Likewise.
* sysdeps/ieee754/flt-32/e_gammaf_r.c: Likewise.
* sysdeps/ieee754/flt-32/e_j1f.c: Likewise.
* sysdeps/ieee754/flt-32/e_jnf.c: Likewise.
* sysdeps/ieee754/flt-32/e_lgammaf_r.c: Likewise.
* sysdeps/ieee754/flt-32/e_sinhf.c: Likewise.
* sysdeps/ieee754/flt-32/k_rem_pio2f.c: Likewise.
* sysdeps/ieee754/flt-32/lgamma_negf.c: Likewise.
* sysdeps/ieee754/flt-32/s_erff.c: Likewise.
* sysdeps/ieee754/flt-32/s_llrintf.c: Likewise.
* sysdeps/ieee754/flt-32/s_lrintf.c: Likewise.
* sysdeps/ieee754/ldbl-96/gamma_product.c: Likewise.
2018-05-08 Andreas Schwab <schwab@suse.de>
* sysdeps/nptl/internaltypes.h: Fix comment.

View File

@ -0,0 +1,47 @@
/* Narrow floating-point values to their semantic type.
Copyright (C) 2015-2018 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_NARROW_EVAL_H
#define _MATH_NARROW_EVAL_H 1
#include <float.h>
/* math_narrow_eval reduces its floating-point argument to the range
and precision of its semantic type. (The original evaluation may
still occur with excess range and precision, so the result may be
affected by double rounding.) */
#if FLT_EVAL_METHOD == 0
# define math_narrow_eval(x) (x)
#else
# if FLT_EVAL_METHOD == 1
# define excess_precision(type) __builtin_types_compatible_p (type, float)
# else
# define excess_precision(type) (__builtin_types_compatible_p (type, float) \
|| __builtin_types_compatible_p (type, \
double))
# endif
# define math_narrow_eval(x) \
({ \
__typeof (x) math_narrow_eval_tmp = (x); \
if (excess_precision (__typeof (math_narrow_eval_tmp))) \
__asm__ ("" : "+m" (math_narrow_eval_tmp)); \
math_narrow_eval_tmp; \
})
#endif
#endif /* math-narrow-eval.h */

View File

@ -19,6 +19,7 @@
#include <errno.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
FLOAT

View File

@ -66,6 +66,7 @@ extern double ____strtod_l_internal (const char *, char **, int, locale_t);
#include <float.h>
#include "../locale/localeinfo.h"
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <stdlib.h>
#include <string.h>

View File

@ -270,29 +270,6 @@ extern void __docos (double __x, double __dx, double __v[]);
({ __typeof (x) __x = (x); __asm __volatile__ ("" : : "m" (__x)); })
#endif
/* math_narrow_eval reduces its floating-point argument to the range
and precision of its semantic type. (The original evaluation may
still occur with excess range and precision, so the result may be
affected by double rounding.) */
#if FLT_EVAL_METHOD == 0
# define math_narrow_eval(x) (x)
#else
# if FLT_EVAL_METHOD == 1
# define excess_precision(type) __builtin_types_compatible_p (type, float)
# else
# define excess_precision(type) (__builtin_types_compatible_p (type, float) \
|| __builtin_types_compatible_p (type, \
double))
# endif
# define math_narrow_eval(x) \
({ \
__typeof (x) math_narrow_eval_tmp = (x); \
if (excess_precision (__typeof (math_narrow_eval_tmp))) \
__asm__ ("" : "+m" (math_narrow_eval_tmp)); \
math_narrow_eval_tmp; \
})
#endif
#define fabs_tg(x) __MATH_TG ((x), (__typeof (x)) __builtin_fabs, (x))
/* These must be function-like macros because some __MATH_TG

View File

@ -18,6 +18,7 @@
#include <math.h>
#include <fpu_control.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <math-narrow.h>

View File

@ -18,6 +18,7 @@
#include <math.h>
#include <fpu_control.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <math-narrow.h>

View File

@ -19,6 +19,7 @@
#include <errno.h>
#include <fpu_control.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-double.h>

View File

@ -32,6 +32,7 @@
*/
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const double one = 1.0, half = 0.5, huge = 1.0e300;

View File

@ -18,6 +18,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <float.h>

View File

@ -61,6 +61,7 @@
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static double pone (double), qone (double);

View File

@ -39,6 +39,7 @@
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const double

View File

@ -78,6 +78,7 @@
*/
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libc-diag.h>

View File

@ -34,6 +34,7 @@ static char rcsid[] = "$NetBSD: e_sinh.c,v 1.7 1995/05/10 20:46:13 jtc Exp $";
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const double one = 1.0, shuge = 1.0e307;

View File

@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <float.h>

View File

@ -131,6 +131,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $
*/
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libc-diag.h>

View File

@ -18,6 +18,7 @@
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const double lgamma_zeros[][2] =

View File

@ -115,6 +115,7 @@ static char rcsid[] = "$NetBSD: s_erf.c,v 1.8 1995/05/10 20:47:05 jtc Exp $";
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-double.h>
#include <fix-int-fp-convert-zero.h>

View File

@ -22,6 +22,7 @@
#include <limits.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-double.h>
#include <fix-fp-int-convert-overflow.h>

View File

@ -22,6 +22,7 @@
#include <limits.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-double.h>
#include <fix-fp-int-convert-overflow.h>

View File

@ -15,6 +15,7 @@
*/
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const float huge = 1.0e30;

View File

@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow-eval.h>
#include <stdint.h>
#include <shlib-compat.h>
#include <libm-alias-float.h>

View File

@ -22,6 +22,7 @@
#endif
#include <math.h>
#include <math-narrow-eval.h>
#include <stdint.h>
#include <shlib-compat.h>
#include <libm-alias-float.h>

View File

@ -18,6 +18,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <float.h>

View File

@ -16,6 +16,7 @@
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static float ponef(float), qonef(float);

View File

@ -16,6 +16,7 @@
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const float

View File

@ -14,6 +14,7 @@
*/
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libc-diag.h>

View File

@ -15,6 +15,7 @@
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const float one = 1.0, shuge = 1.0e37;

View File

@ -18,6 +18,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2f.c,v 1.4 1995/05/10 20:46:28 jtc Exp
#endif
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libc-diag.h>

View File

@ -18,6 +18,7 @@
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
static const float lgamma_zeros[][2] =

View File

@ -20,6 +20,7 @@ static char rcsid[] = "$NetBSD: s_erff.c,v 1.4 1995/05/10 20:47:07 jtc Exp $";
#include <errno.h>
#include <float.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-float.h>
#include <fix-int-fp-convert-zero.h>

View File

@ -22,6 +22,7 @@
#include <limits.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-float.h>
#include <fix-fp-int-convert-overflow.h>

View File

@ -22,6 +22,7 @@
#include <limits.h>
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <libm-alias-float.h>
#include <fix-fp-int-convert-overflow.h>

View File

@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <math-narrow-eval.h>
#include <math_private.h>
#include <float.h>