Commit 6b8045e1 by Richard Guenther Committed by Richard Biener

tree.h (tree_int_cst_msb): Remove.

2011-08-18  Richard Guenther  <rguenther@suse.de>

	* 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
parent 68f932c4
2011-08-18 Richard Guenther <rguenther@suse.de>
* 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 <richard.sandiford@linaro.org> 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
* doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter. * doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter.
......
...@@ -2892,26 +2892,6 @@ var_at_stmt (struct loop *loop, struct iv_cand *cand, gimple stmt) ...@@ -2892,26 +2892,6 @@ var_at_stmt (struct loop *loop, struct iv_cand *cand, gimple stmt)
return cand->var_before; 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 /* 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 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 BA to A and BB to B, and returns the type of BA. Otherwise, returns the
......
...@@ -6513,21 +6513,23 @@ tree_low_cst (const_tree t, int pos) ...@@ -6513,21 +6513,23 @@ tree_low_cst (const_tree t, int pos)
return TREE_INT_CST_LOW (t); 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 int
tree_int_cst_msb (const_tree t) tree_int_cst_sign_bit (const_tree t)
{ {
int prec; unsigned bitno = TYPE_PRECISION (TREE_TYPE (t)) - 1;
HOST_WIDE_INT h; unsigned HOST_WIDE_INT w;
unsigned HOST_WIDE_INT l;
if (bitno < HOST_BITS_PER_WIDE_INT)
/* Note that using TYPE_PRECISION here is wrong. We care about the w = TREE_INT_CST_LOW (t);
actual bits, not the (arbitrary) range of the type. */ else
prec = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (t))) - 1; {
rshift_double (TREE_INT_CST_LOW (t), TREE_INT_CST_HIGH (t), prec, w = TREE_INT_CST_HIGH (t);
2 * HOST_BITS_PER_WIDE_INT, &l, &h, 0); bitno -= HOST_BITS_PER_WIDE_INT;
return (l & 1) == 1; }
return (w >> bitno) & 1;
} }
/* Return an indication of the sign of the integer constant T. /* Return an indication of the sign of the integer constant T.
......
...@@ -4380,7 +4380,6 @@ tree_low_cst (const_tree t, int pos) ...@@ -4380,7 +4380,6 @@ tree_low_cst (const_tree t, int pos)
return TREE_INT_CST_LOW (t); return TREE_INT_CST_LOW (t);
} }
#endif #endif
extern int tree_int_cst_msb (const_tree);
extern int tree_int_cst_sgn (const_tree); extern int tree_int_cst_sgn (const_tree);
extern int tree_int_cst_sign_bit (const_tree); extern int tree_int_cst_sign_bit (const_tree);
extern unsigned int tree_int_cst_min_precision (tree, bool); extern unsigned int tree_int_cst_min_precision (tree, bool);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment