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
This commit is contained in:
Richard Guenther 2011-08-18 12:42:22 +00:00 committed by Richard Biener
parent 68f932c443
commit 6b8045e1bb
4 changed files with 20 additions and 32 deletions

View file

@ -1,3 +1,10 @@
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>
* doc/tm.texi.in (TARGET_RTX_COSTS): Add an opno paramter.

View file

@ -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

View file

@ -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;
unsigned bitno = TYPE_PRECISION (TREE_TYPE (t)) - 1;
unsigned HOST_WIDE_INT w;
/* 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;
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.

View file

@ -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);