aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2014-08-28 06:25:10 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2014-08-28 06:25:10 +0000
commit11315a95c7e729d82c8016e287d5a21b6fde4dc2 (patch)
treecec2e33317f60d89708c6088802bc8f8a92a7582 /gcc
parent3b4459f903c6da3b6c6e867bf1c62d6471ba5702 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/varasm.c27
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;
}