summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2007-09-05 10:51:34 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2007-09-05 10:51:34 +0000
commitfec2d2141d54d2bf1dccfb62292aaa269b66a98e (patch)
tree28398b07d9c542a0222a47acedca2b72e7519999 /gcc
parent6c3573bf8d3fd8bcbefbe7b1a9d9d8704a3c5388 (diff)
downloadgcc-fec2d2141d54d2bf1dccfb62292aaa269b66a98e.tar.gz
* optabs.c (libfunc_entry): Change optab to integer.
(hash_libfunc, convert_optab_libfunc, optab_libfunc, set_optab_libfunc, set_conv_libfunc): Use optable indexes instead of pointers for hashing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128128 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/optabs.c16
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ff57f4bfed..760ba372191 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2007-09-05 Jan Hubicka <jh@suse.cz>
+ * optabs.c (libfunc_entry): Change optab to integer.
+ (hash_libfunc, convert_optab_libfunc, optab_libfunc,
+ set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
+ of pointers for hashing.
+
+2007-09-05 Jan Hubicka <jh@suse.cz>
+
* regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
verifier.
* fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 2501ce6cff7..32f397cdbbc 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -123,7 +123,7 @@ void debug_optab_libfuncs (void);
optab. In the first case mode2 is unused. */
struct libfunc_entry GTY(())
{
- void * GTY((skip)) optab;
+ size_t optab;
enum machine_mode mode1, mode2;
rtx libfunc;
};
@@ -139,7 +139,7 @@ hash_libfunc (const void *p)
const struct libfunc_entry *const e = (const struct libfunc_entry *) p;
return (((int) e->mode1 + (int) e->mode2 * NUM_MACHINE_MODES)
- ^ htab_hash_pointer (e->optab));
+ ^ e->optab);
}
/* Used for optab_hash. */
@@ -165,7 +165,7 @@ convert_optab_libfunc (convert_optab optab, enum machine_mode mode1,
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = optab;
+ e.optab = (size_t) (convert_optab_table[0] - optab);
e.mode1 = mode1;
e.mode2 = mode2;
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
@@ -194,7 +194,7 @@ optab_libfunc (optab optab, enum machine_mode mode)
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = optab;
+ e.optab = (size_t) (optab_table[0] - optab);
e.mode1 = mode;
e.mode2 = VOIDmode;
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, NO_INSERT);
@@ -5938,7 +5938,7 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = optable;
+ e.optab = (size_t) (optab_table[0] - optable);
e.mode1 = mode;
e.mode2 = VOIDmode;
@@ -5949,7 +5949,7 @@ set_optab_libfunc (optab optable, enum machine_mode mode, const char *name)
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc (sizeof (struct libfunc_entry));
- (*slot)->optab = optable;
+ (*slot)->optab = (size_t) (optab_table[0] - optable);
(*slot)->mode1 = mode;
(*slot)->mode2 = VOIDmode;
(*slot)->libfunc = val;
@@ -5965,7 +5965,7 @@ set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
rtx val;
struct libfunc_entry e;
struct libfunc_entry **slot;
- e.optab = optable;
+ e.optab = (size_t) (convert_optab_table[0] - optable);
e.mode1 = tmode;
e.mode2 = fmode;
@@ -5976,7 +5976,7 @@ set_conv_libfunc (convert_optab optable, enum machine_mode tmode,
slot = (struct libfunc_entry **) htab_find_slot (libfunc_hash, &e, INSERT);
if (*slot == NULL)
*slot = ggc_alloc (sizeof (struct libfunc_entry));
- (*slot)->optab = optable;
+ (*slot)->optab = (size_t) (convert_optab_table[0] - optable);
(*slot)->mode1 = tmode;
(*slot)->mode2 = fmode;
(*slot)->libfunc = val;