From: aesok Date: Mon, 3 May 2010 16:21:15 +0000 (+0000) Subject: * double-int.h (tree_to_double_int): Remove macro. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=f730f36c4c1fe1dfc04e0a8a627fb3374276d2be;hp=2f259da408c2029c086c5686bbf17f1e1054e2cc;ds=sidebyside * double-int.h (tree_to_double_int): Remove macro. (double_int_to_tree, double_int_fits_to_tree_p): Move prototypes ... * tree.h (double_int_to_tree, double_int_fits_to_tree_p): ... here. (tree_to_double_int): New function. * double-int.c (double_int_to_tree, double_int_fits_to_tree_p): Move ... * tree.c (double_int_to_tree, double_int_fits_to_tree_p): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158993 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e461f4b9ec1..485dfbe4e5e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2010-05-03 Anatoly Sokolov + + * double-int.h (tree_to_double_int): Remove macro. + (double_int_to_tree, double_int_fits_to_tree_p): Move prototypes ... + * tree.h (double_int_to_tree, double_int_fits_to_tree_p): ... here. + (tree_to_double_int): New function. + * double-int.c (double_int_to_tree, double_int_fits_to_tree_p): + Move ... + * tree.c (double_int_to_tree, double_int_fits_to_tree_p): ... here. + 2010-05-03 Richard Guenther PR tree-optimization/43971 diff --git a/gcc/double-int.c b/gcc/double-int.c index d8b596e650f..000be2bf7b0 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -1049,32 +1049,6 @@ double_int_rshift (double_int a, HOST_WIDE_INT count, unsigned int prec, bool ar return ret; } -/* Constructs tree in type TYPE from with value given by CST. Signedness of CST - is assumed to be the same as the signedness of TYPE. */ - -tree -double_int_to_tree (tree type, double_int cst) -{ - if (bitpos < HOST_BITS_PER_WIDE_INT) - a.low |= (unsigned HOST_WIDE_INT) 1 << bitpos; - else - a.high |= (HOST_WIDE_INT) 1 << (bitpos - HOST_BITS_PER_WIDE_INT); - - return a; -} - -/* Shift A left by COUNT places keeping only PREC bits of result. Shift - right if COUNT is negative. ARITH true specifies arithmetic shifting; - otherwise use logical shift. */ - -double_int -double_int_lshift (double_int a, HOST_WIDE_INT count, unsigned int prec, bool arith) -{ - double_int ret; - lshift_double (a.low, a.high, count, prec, &ret.low, &ret.high, arith); - return ret; -} - /* Returns -1 if A < B, 0 if A == B and 1 if A > B. Signedness of the comparison is given by UNS. */ diff --git a/gcc/double-int.h b/gcc/double-int.h index 47991ca41b8..65d25ef04cb 100644 --- a/gcc/double-int.h +++ b/gcc/double-int.h @@ -61,13 +61,6 @@ typedef struct /* Constructors and conversions. */ -tree double_int_to_tree (tree, double_int); -bool double_int_fits_to_tree_p (const_tree, double_int); - -/* Constructs double_int from tree CST. */ - -#define tree_to_double_int(cst) (TREE_INT_CST (cst)) - /* Constructs double_int from integer CST. The bits over the precision of HOST_WIDE_INT are filled with the sign bit. */ diff --git a/gcc/tree.c b/gcc/tree.c index 24482af95d8..b8f80deaf69 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1082,6 +1082,30 @@ build_int_cst_wide_type (tree type, return build_int_cst_wide (type, low, high); } +/* Constructs tree in type TYPE from with value given by CST. Signedness + of CST is assumed to be the same as the signedness of TYPE. */ + +tree +double_int_to_tree (tree type, double_int cst) +{ + cst = double_int_ext (cst, TYPE_PRECISION (type), TYPE_UNSIGNED (type)); + + return build_int_cst_wide (type, cst.low, cst.high); +} + +/* Returns true if CST fits into range of TYPE. Signedness of CST is assumed + to be the same as the signedness of TYPE. */ + +bool +double_int_fits_to_tree_p (const_tree type, double_int cst) +{ + double_int ext = double_int_ext (cst, + TYPE_PRECISION (type), + TYPE_UNSIGNED (type)); + + return double_int_equal_p (cst, ext); +} + /* These are the hash table functions for the hash table of INTEGER_CST nodes of a sizetype. */ diff --git a/gcc/tree.h b/gcc/tree.h index 0cfdcad224b..0a16c0df004 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3998,6 +3998,17 @@ extern tree build_var_debug_value_stat (tree, tree MEM_STAT_DECL); #define build_var_debug_value(t1,t2) \ build_var_debug_value_stat (t1,t2 MEM_STAT_INFO) +/* Constructs double_int from tree CST. */ + +static inline double_int +tree_to_double_int (const_tree cst) +{ + return TREE_INT_CST (cst); +} + +extern tree double_int_to_tree (tree, double_int); +extern bool double_int_fits_to_tree_p (const_tree, double_int); + extern tree build_int_cst (tree, HOST_WIDE_INT); extern tree build_int_cst_type (tree, HOST_WIDE_INT); extern tree build_int_cstu (tree, unsigned HOST_WIDE_INT);