summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/expmed.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d840d64438d..654c990657e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2006-06-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR middle-end/27733
+ * expmed.c (struct alg_hash_entry): Fix type of field T
+ to match synth_mult argument.
+ (NUM_ALG_HASH_ENTRIES): Make it bigger for 64-bit HOST_WIDE_INT.
+
2006-06-08 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/27863
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 56c0d24bd66..2e8906eb7a9 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -2395,7 +2395,7 @@ struct algorithm
/* The entry for our multiplication cache/hash table. */
struct alg_hash_entry {
/* The number we are multiplying by. */
- unsigned int t;
+ unsigned HOST_WIDE_INT t;
/* The mode in which we are multiplying something by T. */
enum machine_mode mode;
@@ -2410,7 +2410,11 @@ struct alg_hash_entry {
};
/* The number of cache/hash entries. */
+#if HOST_BITS_PER_WIDE_INT == 64
+#define NUM_ALG_HASH_ENTRIES 1031
+#else
#define NUM_ALG_HASH_ENTRIES 307
+#endif
/* Each entry of ALG_HASH caches alg_code for some integer. This is
actually a hash table. If we have a collision, that the older
OpenPOWER on IntegriCloud