diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2014-08-28 06:25:10 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2014-08-28 06:25:10 +0000 |
commit | 11315a95c7e729d82c8016e287d5a21b6fde4dc2 (patch) | |
tree | cec2e33317f60d89708c6088802bc8f8a92a7582 /gcc | |
parent | 3b4459f903c6da3b6c6e867bf1c62d6471ba5702 (diff) | |
download | gcc-11315a95c7e729d82c8016e287d5a21b6fde4dc2.zip gcc-11315a95c7e729d82c8016e287d5a21b6fde4dc2.tar.gz gcc-11315a95c7e729d82c8016e287d5a21b6fde4dc2.tar.bz2 |
varasm.c: Include rtl-iter.h.
gcc/
* varasm.c: Include rtl-iter.h.
(const_rtx_hash_1): Take a const_rtx rather than an rtx *.
Remove the pointer to the cumulative hashval_t and just return
the hash for this rtx instead. Remove recursive CONST_VECTOR case.
(const_rtx_hash): Use FOR_EACH_SUBRTX instead of for_each_rtx.
Accumulate the hashval_ts here instead of const_rtx_hash_1.
From-SVN: r214665
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/varasm.c | 27 |
2 files changed, 18 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 93dac73..3009393 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2014-08-28 Richard Sandiford <rdsandiford@googlemail.com> + * varasm.c: Include rtl-iter.h. + (const_rtx_hash_1): Take a const_rtx rather than an rtx *. + Remove the pointer to the cumulative hashval_t and just return + the hash for this rtx instead. Remove recursive CONST_VECTOR case. + (const_rtx_hash): Use FOR_EACH_SUBRTX instead of for_each_rtx. + Accumulate the hashval_ts here instead of const_rtx_hash_1. + +2014-08-28 Richard Sandiford <rdsandiford@googlemail.com> + * var-tracking.c (add_uses): Take an rtx rather than an rtx *. Give real type of data parameter. Remove return value. (add_uses_1): Use FOR_EACH_SUBRTX_VAR rather than for_each_rtx diff --git a/gcc/varasm.c b/gcc/varasm.c index c820f75..ce3442a 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -53,6 +53,7 @@ along with GCC; see the file COPYING3. If not see #include "hash-set.h" #include "asan.h" #include "basic-block.h" +#include "rtl-iter.h" #ifdef XCOFF_DEBUGGING_INFO #include "xcoffout.h" /* Needed for external data @@ -3485,19 +3486,17 @@ const_desc_rtx_eq (const void *a, const void *b) return rtx_equal_p (x->constant, y->constant); } -/* This is the worker function for const_rtx_hash, called via for_each_rtx. */ +/* Hash one component of a constant. */ -static int -const_rtx_hash_1 (rtx *xp, void *data) +static hashval_t +const_rtx_hash_1 (const_rtx x) { unsigned HOST_WIDE_INT hwi; enum machine_mode mode; enum rtx_code code; - hashval_t h, *hp; - rtx x; + hashval_t h; int i; - x = *xp; code = GET_CODE (x); mode = GET_MODE (x); h = (hashval_t) code * 1048573 + mode; @@ -3543,14 +3542,6 @@ const_rtx_hash_1 (rtx *xp, void *data) h ^= fixed_hash (CONST_FIXED_VALUE (x)); break; - case CONST_VECTOR: - { - int i; - for (i = XVECLEN (x, 0); i-- > 0; ) - h = h * 251 + const_rtx_hash_1 (&XVECEXP (x, 0, i), data); - } - break; - case SYMBOL_REF: h ^= htab_hash_string (XSTR (x, 0)); break; @@ -3568,9 +3559,7 @@ const_rtx_hash_1 (rtx *xp, void *data) break; } - hp = (hashval_t *) data; - *hp = *hp * 509 + h; - return 0; + return h; } /* Compute a hash value for X, which should be a constant. */ @@ -3579,7 +3568,9 @@ static hashval_t const_rtx_hash (rtx x) { hashval_t h = 0; - for_each_rtx (&x, const_rtx_hash_1, &h); + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, x, ALL) + h = h * 509 + const_rtx_hash_1 (*iter); return h; } |