+2013-11-18 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * tree.h (tree_to_shwi, tree_to_uhwi): Declare, with inline expansions.
+ * tree.c (tree_to_shwi, tree_to_uhwi): New functions.
+
2013-11-18 Richard Sandiford <rdsandiford@googlemail.com>
* expr.h: Update comments to refer to tree_fits_[su]hwi_p rather
return TREE_INT_CST_LOW (t);
}
+/* T is an INTEGER_CST whose numerical value (extended according to
+ TYPE_UNSIGNED) fits in a signed HOST_WIDE_INT. Return that
+ HOST_WIDE_INT. */
+
+HOST_WIDE_INT
+tree_to_shwi (const_tree t)
+{
+ gcc_assert (tree_fits_shwi_p (t));
+ return TREE_INT_CST_LOW (t);
+}
+
+/* T is an INTEGER_CST whose numerical value (extended according to
+ TYPE_UNSIGNED) fits in an unsigned HOST_WIDE_INT. Return that
+ HOST_WIDE_INT. */
+
+HOST_WIDE_INT
+tree_to_uhwi (const_tree t)
+{
+ gcc_assert (tree_fits_uhwi_p (t));
+ return TREE_INT_CST_LOW (t);
+}
+
/* Return the most significant (sign) bit of T. */
int
#endif
;
extern HOST_WIDE_INT tree_low_cst (const_tree, int);
+extern HOST_WIDE_INT tree_to_shwi (const_tree);
+extern HOST_WIDE_INT tree_to_uhwi (const_tree);
#if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
tree_low_cst (const_tree t, int pos)
gcc_assert (host_integerp (t, pos));
return TREE_INT_CST_LOW (t);
}
+
+extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
+tree_to_shwi (const_tree t)
+{
+ gcc_assert (tree_fits_shwi_p (t));
+ return TREE_INT_CST_LOW (t);
+}
+
+extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
+tree_to_uhwi (const_tree t)
+{
+ gcc_assert (tree_fits_uhwi_p (t));
+ return TREE_INT_CST_LOW (t);
+}
#endif
extern int tree_int_cst_sgn (const_tree);
extern int tree_int_cst_sign_bit (const_tree);