diff options
author | Richard Guenther <rguenther@suse.de> | 2012-01-04 13:25:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-01-04 13:25:28 +0000 |
commit | f5a3d840b627810a521d15c4144cb5da721d9718 (patch) | |
tree | 1a1582548b6899bb4dc7ba44390c5312e814253b /gcc/tree.c | |
parent | 299c4b5f8853aa54f17ed38602aced0af0f5b503 (diff) | |
download | gcc-f5a3d840b627810a521d15c4144cb5da721d9718.zip gcc-f5a3d840b627810a521d15c4144cb5da721d9718.tar.gz gcc-f5a3d840b627810a521d15c4144cb5da721d9718.tar.bz2 |
re PR middle-end/51750 (FAIL: 25_algorithms/heap/moveable*.cc execution test)
2012-01-04 Richard Guenther <rguenther@suse.de>
PR middle-end/51750
* tree.c (size_low_cst): New function.
* tree.h (size_low_cst): Declare.
* fold-const.c (fold_comparison): Use it to extract the low
part of the POINTER_PLUS_EXPR offset.
From-SVN: r182872
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -6509,6 +6509,17 @@ tree_low_cst (const_tree t, int pos) return TREE_INT_CST_LOW (t); } +/* Return the HOST_WIDE_INT least significant bits of T, a sizetype + kind INTEGER_CST. This makes sure to properly sign-extend the + constant. */ + +HOST_WIDE_INT +size_low_cst (const_tree t) +{ + double_int d = tree_to_double_int (t); + return double_int_sext (d, TYPE_PRECISION (TREE_TYPE (t))).low; +} + /* Return the most significant (sign) bit of T. */ int |