On Mon, Oct 5, 2015 at 12:43 PM, Richard Sandiford <richard.sandif...@arm.com> wrote: > This patch continues the removal of real-related macros by > replacing REAL_VALUES_LESS with real_less. > > Bootstrapped & regression-tested on x86_64-linux-gnu. Also tested by > building one target per CPU directory and checking that there were > no new warnings and no changes in testsuite output at -O2. OK to install?
Ok. Thanks, Richard. > Thanks, > Richard > > > gcc/ada/ > * gcc-interface/trans.c (convert_with_check): Use real_less instead > of REAL_VALUES_LESS. > > gcc/ > * doc/tm.texi.in (REAL_VALUES_LESS): Delete. > * doc/tm.texi: Regenerate. > * real.h (real_less): Declare. > (REAL_VALUES_LESS): Delete. > * real.c (real_less): New function. > (real_compare): Use it. > * config/m68k/m68k.c (floating_exact_log2): Use real_less instead > of REAL_VALUES_LESS. > * config/microblaze/microblaze.c (microblaze_const_double_ok): > Likewise. > * fold-const.c (fold_convert_const_int_from_real): Likewise. > * simplify-rtx.c (simplify_const_unary_operation): Likewise. > (simplify_const_relational_operation): Likewise. > * tree-call-cdce.c (check_pow): Likewise. > (gen_conditions_for_pow_cst_base): Likewise. > > diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c > index 3252ea2..9838da0 100644 > --- a/gcc/ada/gcc-interface/trans.c > +++ b/gcc/ada/gcc-interface/trans.c > @@ -8999,8 +8999,8 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, > bool overflowp, > if (INTEGRAL_TYPE_P (gnu_in_basetype) > ? tree_int_cst_lt (gnu_in_lb, gnu_out_lb) > : (FLOAT_TYPE_P (gnu_base_type) > - ? REAL_VALUES_LESS (TREE_REAL_CST (gnu_in_lb), > - TREE_REAL_CST (gnu_out_lb)) > + ? real_less (&TREE_REAL_CST (gnu_in_lb), > + &TREE_REAL_CST (gnu_out_lb)) > : 1)) > gnu_cond > = invert_truthvalue > @@ -9011,8 +9011,8 @@ convert_with_check (Entity_Id gnat_type, tree gnu_expr, > bool overflowp, > if (INTEGRAL_TYPE_P (gnu_in_basetype) > ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub) > : (FLOAT_TYPE_P (gnu_base_type) > - ? REAL_VALUES_LESS (TREE_REAL_CST (gnu_out_ub), > - TREE_REAL_CST (gnu_in_lb)) > + ? real_less (&TREE_REAL_CST (gnu_out_ub), > + &TREE_REAL_CST (gnu_in_lb)) > : 1)) > gnu_cond > = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond, > diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c > index 487cbf4..74de983 100644 > --- a/gcc/config/m68k/m68k.c > +++ b/gcc/config/m68k/m68k.c > @@ -4365,7 +4365,7 @@ floating_exact_log2 (rtx x) > > REAL_VALUE_FROM_CONST_DOUBLE (r, x); > > - if (REAL_VALUES_LESS (r, dconst1)) > + if (real_less (&r, &dconst1)) > return 0; > > exp = real_exponent (&r); > diff --git a/gcc/config/microblaze/microblaze.c > b/gcc/config/microblaze/microblaze.c > index ebcf65a..9efa739 100644 > --- a/gcc/config/microblaze/microblaze.c > +++ b/gcc/config/microblaze/microblaze.c > @@ -280,12 +280,12 @@ microblaze_const_double_ok (rtx op, machine_mode mode) > > if (mode == DFmode) > { > - if (REAL_VALUES_LESS (d, dfhigh) && REAL_VALUES_LESS (dflow, d)) > + if (real_less (&d, &dfhigh) && real_less (&dflow, &d)) > return 1; > } > else > { > - if (REAL_VALUES_LESS (d, sfhigh) && REAL_VALUES_LESS (sflow, d)) > + if (real_less (&d, &sfhigh) && real_less (&sflow, &d)) > return 1; > } > > diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi > index fdd49d9..f6a0b5d 100644 > --- a/gcc/doc/tm.texi > +++ b/gcc/doc/tm.texi > @@ -9708,10 +9708,6 @@ array of @code{HOST_WIDE_INT}, but all code should > treat it as an opaque > quantity. > @end defmac > > -@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, > REAL_VALUE_TYPE @var{y}) > -Tests whether @var{x} is less than @var{y}. > -@end deftypefn > - > @deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x}) > Truncates @var{x} to a signed integer, rounding toward zero. > @end deftypefn > diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in > index ab75ad9..7fae1ca 100644 > --- a/gcc/doc/tm.texi.in > +++ b/gcc/doc/tm.texi.in > @@ -7131,10 +7131,6 @@ array of @code{HOST_WIDE_INT}, but all code should > treat it as an opaque > quantity. > @end defmac > > -@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, > REAL_VALUE_TYPE @var{y}) > -Tests whether @var{x} is less than @var{y}. > -@end deftypefn > - > @deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x}) > Truncates @var{x} to a signed integer, rounding toward zero. > @end deftypefn > diff --git a/gcc/fold-const.c b/gcc/fold-const.c > index 1c72af6..2851a29 100644 > --- a/gcc/fold-const.c > +++ b/gcc/fold-const.c > @@ -1877,7 +1877,7 @@ fold_convert_const_int_from_real (enum tree_code code, > tree type, const_tree arg > { > tree lt = TYPE_MIN_VALUE (type); > REAL_VALUE_TYPE l = real_value_from_int_cst (NULL_TREE, lt); > - if (REAL_VALUES_LESS (r, l)) > + if (real_less (&r, &l)) > { > overflow = true; > val = lt; > @@ -1890,7 +1890,7 @@ fold_convert_const_int_from_real (enum tree_code code, > tree type, const_tree arg > if (ut) > { > REAL_VALUE_TYPE u = real_value_from_int_cst (NULL_TREE, ut); > - if (REAL_VALUES_LESS (u, r)) > + if (real_less (&u, &r)) > { > overflow = true; > val = ut; > diff --git a/gcc/real.c b/gcc/real.c > index d47f32a..49d6739 100644 > --- a/gcc/real.c > +++ b/gcc/real.c > @@ -1086,6 +1086,14 @@ real_equal (const REAL_VALUE_TYPE *op0, const > REAL_VALUE_TYPE *op1) > return do_compare (op0, op1, -1) == 0; > } > > +/* Return whether OP0 < OP1. */ > + > +bool > +real_less (const REAL_VALUE_TYPE *op0, const REAL_VALUE_TYPE *op1) > +{ > + return do_compare (op0, op1, 1) < 0; > +} > + > bool > real_compare (int icode, const REAL_VALUE_TYPE *op0, > const REAL_VALUE_TYPE *op1) > @@ -1095,7 +1103,7 @@ real_compare (int icode, const REAL_VALUE_TYPE *op0, > switch (code) > { > case LT_EXPR: > - return do_compare (op0, op1, 1) < 0; > + return real_less (op0, op1); > case LE_EXPR: > return do_compare (op0, op1, 1) <= 0; > case GT_EXPR: > diff --git a/gcc/real.h b/gcc/real.h > index 1be4104..dc55ab2 100644 > --- a/gcc/real.h > +++ b/gcc/real.h > @@ -250,6 +250,7 @@ extern bool real_isnegzero (const REAL_VALUE_TYPE *); > /* Test relationships between reals. */ > extern bool real_identical (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE > *); > extern bool real_equal (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *); > +extern bool real_less (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *); > > /* Extend or truncate to a new mode. */ > extern void real_convert (REAL_VALUE_TYPE *, machine_mode, > @@ -333,8 +334,6 @@ extern const struct real_format arm_half_format; > #define REAL_ARITHMETIC(value, code, d1, d2) \ > real_arithmetic (&(value), code, &(d1), &(d2)) > > -#define REAL_VALUES_LESS(x, y) real_compare (LT_EXPR, &(x), &(y)) > - > /* Determine whether a floating-point value X is infinite. */ > #define REAL_VALUE_ISINF(x) real_isinf (&(x)) > > diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c > index b4d95a2..9f791a7 100644 > --- a/gcc/simplify-rtx.c > +++ b/gcc/simplify-rtx.c > @@ -1862,13 +1862,13 @@ simplify_const_unary_operation (enum rtx_code code, > machine_mode mode, > /* Test against the signed upper bound. */ > wmax = wi::max_value (width, SIGNED); > real_from_integer (&t, VOIDmode, wmax, SIGNED); > - if (REAL_VALUES_LESS (t, x)) > + if (real_less (&t, &x)) > return immed_wide_int_const (wmax, mode); > > /* Test against the signed lower bound. */ > wmin = wi::min_value (width, SIGNED); > real_from_integer (&t, VOIDmode, wmin, SIGNED); > - if (REAL_VALUES_LESS (x, t)) > + if (real_less (&x, &t)) > return immed_wide_int_const (wmin, mode); > > return immed_wide_int_const (real_to_integer (&x, &fail, width), > mode); > @@ -1881,7 +1881,7 @@ simplify_const_unary_operation (enum rtx_code code, > machine_mode mode, > /* Test against the unsigned upper bound. */ > wmax = wi::max_value (width, UNSIGNED); > real_from_integer (&t, VOIDmode, wmax, UNSIGNED); > - if (REAL_VALUES_LESS (t, x)) > + if (real_less (&t, &x)) > return immed_wide_int_const (wmax, mode); > > return immed_wide_int_const (real_to_integer (&x, &fail, width), > @@ -4943,7 +4943,7 @@ simplify_const_relational_operation (enum rtx_code code, > > return comparison_result (code, > (real_equal (&d0, &d1) ? CMP_EQ : > - REAL_VALUES_LESS (d0, d1) ? CMP_LT : > CMP_GT)); > + real_less (&d0, &d1) ? CMP_LT : CMP_GT)); > } > > /* Otherwise, see if the operands are both integers. */ > diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c > index 7a0275a..112a325 100644 > --- a/gcc/tree-call-cdce.c > +++ b/gcc/tree-call-cdce.c > @@ -201,10 +201,10 @@ check_pow (gcall *pow_call) > REAL_VALUE_TYPE bcv = TREE_REAL_CST (base); > if (real_equal (&bcv, &dconst1)) > return false; > - if (REAL_VALUES_LESS (bcv, dconst1)) > + if (real_less (&bcv, &dconst1)) > return false; > real_from_integer (&mv, TYPE_MODE (TREE_TYPE (base)), 256, UNSIGNED); > - if (REAL_VALUES_LESS (mv, bcv)) > + if (real_less (&mv, &bcv)) > return false; > return true; > } > @@ -421,9 +421,9 @@ gen_conditions_for_pow_cst_base (tree base, tree expn, > REAL_VALUE_TYPE mv; > REAL_VALUE_TYPE bcv = TREE_REAL_CST (base); > gcc_assert (!real_equal (&bcv, &dconst1) > - && !REAL_VALUES_LESS (bcv, dconst1)); > + && !real_less (&bcv, &dconst1)); > real_from_integer (&mv, TYPE_MODE (TREE_TYPE (base)), 256, UNSIGNED); > - gcc_assert (!REAL_VALUES_LESS (mv, bcv)); > + gcc_assert (!real_less (&mv, &bcv)); > > exp_domain = get_domain (0, false, false, > 127, true, false); >