diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-09-23 18:08:16 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-09-23 16:08:16 +0000 |
commit | 10b8fa2ed23366f5a9224a050db24b5f9d1236ab (patch) | |
tree | edac9be42c0dfb8002518876a201a76bdd0d3e7f /gcc/tree.h | |
parent | 54f9184b594d38d288471029277733a0c3374a65 (diff) | |
download | gcc-10b8fa2ed23366f5a9224a050db24b5f9d1236ab.zip gcc-10b8fa2ed23366f5a9224a050db24b5f9d1236ab.tar.gz gcc-10b8fa2ed23366f5a9224a050db24b5f9d1236ab.tar.bz2 |
tree.h (int_bit_position): Turn into inline function; implement using wide int.
* tree.h (int_bit_position): Turn into inline function;
implement using wide int.
* tree.c (int_bit_position): Remove.
From-SVN: r215518
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -3877,7 +3877,6 @@ extern tree size_in_bytes (const_tree); extern HOST_WIDE_INT int_size_in_bytes (const_tree); extern HOST_WIDE_INT max_int_size_in_bytes (const_tree); extern tree bit_position (const_tree); -extern HOST_WIDE_INT int_bit_position (const_tree); extern tree byte_position (const_tree); extern HOST_WIDE_INT int_byte_position (const_tree); @@ -4797,4 +4796,14 @@ extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *, EXP, an ARRAY_REF or an ARRAY_RANGE_REF. */ extern tree array_ref_low_bound (tree); +/* Like bit_position, but return as an integer. It must be representable in + that way (since it could be a signed value, we don't have the + option of returning -1 like int_size_in_byte can. */ + +inline HOST_WIDE_INT +int_bit_position (const_tree field) +{ + return (wi::lshift (wi::to_offset (DECL_FIELD_OFFSET (field)), BITS_PER_UNIT_LOG) + + wi::to_offset (DECL_FIELD_BIT_OFFSET (field))).to_shwi (); +} #endif /* GCC_TREE_H */ |