From ec1e2a4097535d7075929d638f4120c5a5694725 Mon Sep 17 00:00:00 2001 From: Bernd Edlinger Date: Wed, 27 Jul 2016 20:35:35 +0000 Subject: [PATCH] defaults.h (LOG2_BITS_PER_UNIT): Move from here... 2016-07-27 Bernd Edlinger * defaults.h (LOG2_BITS_PER_UNIT): Move from here... * tree.h (LOG2_BITS_PER_UNIT): ...to here. (BITS_PER_UNIT_LOG): Remove. (int_bit_position): Use LOG2_BITS_PER_UNIT instead of BITS_PER_UNIT_LOG. * expr.c (expand_assignment): Likewise. * stor-layout.c (initialize_sizetypes): Likewise. c-family: 2016-07-27 Bernd Edlinger * c-common.c (check_user_alignment): Use LOG2_BITS_PER_UNIT instead of BITS_PER_UNIT_LOG. From-SVN: r238800 --- gcc/ChangeLog | 9 +++++++++ gcc/c-family/ChangeLog | 5 +++++ gcc/c-family/c-common.c | 2 +- gcc/defaults.h | 8 -------- gcc/expr.c | 3 +-- gcc/stor-layout.c | 2 +- gcc/tree.h | 19 ++++++++++++------- 7 files changed, 29 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 858228fbb69..3289d0affa3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-07-27 Bernd Edlinger + + * defaults.h (LOG2_BITS_PER_UNIT): Move from here... + * tree.h (LOG2_BITS_PER_UNIT): ...to here. + (BITS_PER_UNIT_LOG): Remove. + (int_bit_position): Use LOG2_BITS_PER_UNIT instead of BITS_PER_UNIT_LOG. + * expr.c (expand_assignment): Likewise. + * stor-layout.c (initialize_sizetypes): Likewise. + 2016-07-27 Michael Meissner * config/rs6000/vector.md (vec_extract): Change the calling diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 72ccd035c99..34c65ecc7f8 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2016-07-27 Bernd Edlinger + + * c-common.c (check_user_alignment): Use LOG2_BITS_PER_UNIT instead of + BITS_PER_UNIT_LOG. + 2016-07-25 Jason Merrill PR c++/65970 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 1c5974a8e92..38a7b2e383d 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -7679,7 +7679,7 @@ check_user_alignment (const_tree align, bool allow_zero) error ("requested alignment is not a positive power of 2"); return -1; } - else if (i >= HOST_BITS_PER_INT - BITS_PER_UNIT_LOG) + else if (i >= HOST_BITS_PER_INT - LOG2_BITS_PER_UNIT) { error ("requested alignment is too large"); return -1; diff --git a/gcc/defaults.h b/gcc/defaults.h index 319a7dce6f5..af8fe916be4 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -491,14 +491,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see your target, you should override these values by defining the appropriate symbols in your tm.h file. */ -#if BITS_PER_UNIT == 8 -#define LOG2_BITS_PER_UNIT 3 -#elif BITS_PER_UNIT == 16 -#define LOG2_BITS_PER_UNIT 4 -#else -#error Unknown BITS_PER_UNIT -#endif - #ifndef BITS_PER_WORD #define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD) #endif diff --git a/gcc/expr.c b/gcc/expr.c index 1cb233caf79..46de35f2549 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -4990,8 +4990,7 @@ expand_assignment (tree to, tree from, bool nontemporal) if (bitpos < 0) { gcc_assert (offset == NULL_TREE); - offset = size_int (bitpos >> (BITS_PER_UNIT == 8 - ? 3 : exact_log2 (BITS_PER_UNIT))); + offset = size_int (bitpos >> LOG2_BITS_PER_UNIT); bitpos &= BITS_PER_UNIT - 1; } diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 4ada959a45a..242e79b6d9d 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -2572,7 +2572,7 @@ initialize_sizetypes (void) } bprecision - = MIN (precision + BITS_PER_UNIT_LOG + 1, MAX_FIXED_MODE_SIZE); + = MIN (precision + LOG2_BITS_PER_UNIT + 1, MAX_FIXED_MODE_SIZE); bprecision = GET_MODE_PRECISION (smallest_mode_for_size (bprecision, MODE_INT)); if (bprecision > HOST_BITS_PER_DOUBLE_INT) diff --git a/gcc/tree.h b/gcc/tree.h index 14c8f7a59f4..fff65d6c809 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -4235,6 +4235,8 @@ extern tree bit_position (const_tree); extern tree byte_position (const_tree); extern HOST_WIDE_INT int_byte_position (const_tree); +/* Type for sizes of data-type. */ + #define sizetype sizetype_tab[(int) stk_sizetype] #define bitsizetype sizetype_tab[(int) stk_bitsizetype] #define ssizetype sizetype_tab[(int) stk_ssizetype] @@ -4244,12 +4246,15 @@ extern HOST_WIDE_INT int_byte_position (const_tree); #define bitsize_int(L) size_int_kind (L, stk_bitsizetype) #define sbitsize_int(L) size_int_kind (L, stk_sbitsizetype) -/* Type for sizes of data-type. */ +/* Log2 of BITS_PER_UNIT. */ -#define BITS_PER_UNIT_LOG \ - ((BITS_PER_UNIT > 1) + (BITS_PER_UNIT > 2) + (BITS_PER_UNIT > 4) \ - + (BITS_PER_UNIT > 8) + (BITS_PER_UNIT > 16) + (BITS_PER_UNIT > 32) \ - + (BITS_PER_UNIT > 64) + (BITS_PER_UNIT > 128) + (BITS_PER_UNIT > 256)) +#if BITS_PER_UNIT == 8 +#define LOG2_BITS_PER_UNIT 3 +#elif BITS_PER_UNIT == 16 +#define LOG2_BITS_PER_UNIT 4 +#else +#error Unknown BITS_PER_UNIT +#endif /* Concatenate two lists (chains of TREE_LIST nodes) X and Y by making the last node in X point to Y. @@ -5400,8 +5405,8 @@ extern GTY(()) struct int_n_trees_t int_n_trees[NUM_INT_N_ENTS]; inline HOST_WIDE_INT int_bit_position (const_tree field) -{ - return ((wi::to_offset (DECL_FIELD_OFFSET (field)) << BITS_PER_UNIT_LOG) +{ + return ((wi::to_offset (DECL_FIELD_OFFSET (field)) << LOG2_BITS_PER_UNIT) + wi::to_offset (DECL_FIELD_BIT_OFFSET (field))).to_shwi (); } -- 2.30.2