From 6b8045e1bb221bff9ca107b3bd9109b9de044bc1 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Thu, 18 Aug 2011 12:42:22 +0000 Subject: [PATCH] tree.h (tree_int_cst_msb): Remove. 2011-08-18 Richard Guenther * tree.h (tree_int_cst_msb): Remove. * tree.c (tree_int_cst_msb): Likewise. (tree_int_cst_sign_bit): Move from ... * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): ... here. From-SVN: r177853 --- gcc/ChangeLog | 7 +++++++ gcc/tree-ssa-loop-ivopts.c | 20 -------------------- gcc/tree.c | 26 ++++++++++++++------------ gcc/tree.h | 1 - 4 files changed, 21 insertions(+), 33 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27cc388..4491a17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-08-18 Richard Guenther + + * tree.h (tree_int_cst_msb): Remove. + * tree.c (tree_int_cst_msb): Likewise. + (tree_int_cst_sign_bit): Move from ... + * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): ... here. + 2011-08-18 Richard Sandiford * doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter. diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index c939827..0efa716 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -2892,26 +2892,6 @@ var_at_stmt (struct loop *loop, struct iv_cand *cand, gimple stmt) return cand->var_before; } -/* Return the most significant (sign) bit of T. Similar to tree_int_cst_msb, - but the bit is determined from TYPE_PRECISION, not MODE_BITSIZE. */ - -int -tree_int_cst_sign_bit (const_tree t) -{ - unsigned bitno = TYPE_PRECISION (TREE_TYPE (t)) - 1; - unsigned HOST_WIDE_INT w; - - if (bitno < HOST_BITS_PER_WIDE_INT) - w = TREE_INT_CST_LOW (t); - else - { - w = TREE_INT_CST_HIGH (t); - bitno -= HOST_BITS_PER_WIDE_INT; - } - - return (w >> bitno) & 1; -} - /* If A is (TYPE) BA and B is (TYPE) BB, and the types of BA and BB have the same precision that is at least as wide as the precision of TYPE, stores BA to A and BB to B, and returns the type of BA. Otherwise, returns the diff --git a/gcc/tree.c b/gcc/tree.c index 3eaf2f9..714ccbb 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -6513,21 +6513,23 @@ tree_low_cst (const_tree t, int pos) return TREE_INT_CST_LOW (t); } -/* Return the most significant bit of the integer constant T. */ +/* Return the most significant (sign) bit of T. */ int -tree_int_cst_msb (const_tree t) +tree_int_cst_sign_bit (const_tree t) { - int prec; - HOST_WIDE_INT h; - unsigned HOST_WIDE_INT l; - - /* Note that using TYPE_PRECISION here is wrong. We care about the - actual bits, not the (arbitrary) range of the type. */ - prec = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (t))) - 1; - rshift_double (TREE_INT_CST_LOW (t), TREE_INT_CST_HIGH (t), prec, - 2 * HOST_BITS_PER_WIDE_INT, &l, &h, 0); - return (l & 1) == 1; + unsigned bitno = TYPE_PRECISION (TREE_TYPE (t)) - 1; + unsigned HOST_WIDE_INT w; + + if (bitno < HOST_BITS_PER_WIDE_INT) + w = TREE_INT_CST_LOW (t); + else + { + w = TREE_INT_CST_HIGH (t); + bitno -= HOST_BITS_PER_WIDE_INT; + } + + return (w >> bitno) & 1; } /* Return an indication of the sign of the integer constant T. diff --git a/gcc/tree.h b/gcc/tree.h index 820431f..1f56c49 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -4380,7 +4380,6 @@ tree_low_cst (const_tree t, int pos) return TREE_INT_CST_LOW (t); } #endif -extern int tree_int_cst_msb (const_tree); extern int tree_int_cst_sgn (const_tree); extern int tree_int_cst_sign_bit (const_tree); extern unsigned int tree_int_cst_min_precision (tree, bool); -- 2.7.4