diff options
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/double-int.c | 24 | ||||
-rw-r--r-- | gcc/double-int.h | 7 | ||||
-rw-r--r-- | gcc/tree.c | 24 | ||||
-rw-r--r-- | gcc/tree.h | 11 |
5 files changed, 45 insertions, 31 deletions
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 <aesok@post.ru> + + * 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 <rguenther@suse.de> PR tree-optimization/43971 diff --git a/gcc/double-int.c b/gcc/double-int.c index 8e4a3f5e596..000be2bf7b0 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -1049,30 +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) -{ - 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); -} - /* 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); |