@@ -8696,8 +8696,6 @@ fold_builtin_strlen (location_t loc, tree expr, tree type, tree arg)
static tree
fold_builtin_inf (location_t loc, tree type, int warn)
{
- REAL_VALUE_TYPE real;
-
/* __builtin_inff is intended to be usable to define INFINITY on all
targets. If an infinity is not available, INFINITY expands "to a
positive constant of type float that overflows at translation
@@ -8708,8 +8706,7 @@ fold_builtin_inf (location_t loc, tree type, int warn)
if (!MODE_HAS_INFINITIES (TYPE_MODE (type)) && warn)
pedwarn (loc, 0, "target format does not support infinity");
- real_inf (&real);
- return build_real (type, real);
+ return build_real (type, dconstinf);
}
/* Fold function call to builtin sincos, sincosf, or sincosl. Return
@@ -9336,9 +9333,8 @@ fold_builtin_fpclassify (location_t loc, tree *args, int nargs)
if (tree_expr_maybe_infinite_p (arg))
{
- real_inf (&r);
tmp = fold_build2_loc (loc, EQ_EXPR, integer_type_node, arg,
- build_real (type, r));
+ build_real (type, dconstinf));
res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp,
fp_infinite, res);
}
@@ -1116,7 +1116,7 @@ fold_const_call_cc (real_value *result_real, real_value *result_imag,
CASE_CFN_CPROJ:
if (real_isinf (arg_real) || real_isinf (arg_imag))
{
- real_inf (result_real);
+ *result_real = dconstinf;
*result_imag = dconst0;
result_imag->sign = arg_imag->sign;
}
@@ -5300,7 +5300,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
if (cmp == LT_EXPR || cmp == GE_EXPR)
tow = dconst0;
else
- real_inf (&tow);
+ tow = dconstinf;
real_nextafter (&c2alt, fmt, &c2, &tow);
real_convert (&c2alt, fmt, &c2alt);
if (REAL_VALUE_ISINF (c2alt))
@@ -4524,12 +4524,9 @@ omp_reduction_init_op (location_t loc, enum tree_code op, tree type)
case MAX_EXPR:
if (SCALAR_FLOAT_TYPE_P (type))
{
- REAL_VALUE_TYPE max, min;
+ REAL_VALUE_TYPE min;
if (HONOR_INFINITIES (type))
- {
- real_inf (&max);
- real_arithmetic (&min, NEGATE_EXPR, &max, NULL);
- }
+ real_arithmetic (&min, NEGATE_EXPR, &dconstinf, NULL);
else
real_maxval (&min, 1, TYPE_MODE (type));
return build_real (type, min);
@@ -4551,7 +4548,7 @@ omp_reduction_init_op (location_t loc, enum tree_code op, tree type)
{
REAL_VALUE_TYPE max;
if (HONOR_INFINITIES (type))
- real_inf (&max);
+ max = dconstinf;
else
real_maxval (&max, 0, TYPE_MODE (type));
return build_real (type, max);
@@ -68,7 +68,7 @@ real_from_mpfr (REAL_VALUE_TYPE *r, mpfr_srcptr m, const real_format *format,
/* Take care of Infinity and NaN. */
if (mpfr_inf_p (m))
{
- real_inf (r);
+ *r = dconstinf;
if (mpfr_sgn (m) < 0)
*r = real_value_negate (r);
return;
@@ -2535,11 +2535,10 @@ build_complex (tree type, tree real, tree imag)
tree
build_complex_inf (tree type, bool neg)
{
- REAL_VALUE_TYPE rinf, rzero = dconst0;
+ REAL_VALUE_TYPE rzero = dconst0;
- real_inf (&rinf);
rzero.sign = neg;
- return build_complex (type, build_real (TREE_TYPE (type), rinf),
+ return build_complex (type, build_real (TREE_TYPE (type), dconstinf),
build_real (TREE_TYPE (type), rzero));
}