Commit 84cc84ec authored by rguenth's avatar rguenth
Browse files

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.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177853 138bc75d-0d04-0410-961f-82ee72b054a4
No related merge requests found
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.
......
......@@ -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
......
......@@ -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.
......
......@@ -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);
......
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