On 2012-12-01 20:48 , Lawrence Crowl wrote:
+inline bool
+cselib_hasher::equal (const value_type *v, const compare_type *x_arg)
+{
+ struct elt_loc_list *l;
+ rtx x = CONST_CAST_RTX (x_arg);
+ enum machine_mode mode = GET_MODE (x);
+
+ gcc_assert (!CONST_SCALAR_INT_P (x) && GET_CODE (x) != CONST_FIXED);
+
+ if (mode != GET_MODE (v->val_rtx))
+ return 0;
+
+ /* Unwrap X if necessary. */
+ if (GET_CODE (x) == CONST
+ && (CONST_SCALAR_INT_P (XEXP (x, 0))
+ || GET_CODE (XEXP (x, 0)) == CONST_FIXED))
+ x = XEXP (x, 0);
+
+ /* We don't guarantee that distinct rtx's have different hash values,
+ so we need to do a comparison. */
+ for (l = v->locs; l; l = l->next)
+ if (rtx_equal_for_cselib_1 (l->loc, x, find_slot_memmode))
+ {
+ promote_debug_loc (l);
+ return 1;
+ }
+
+ return 0;
s/1/true/
s/0/false/
@@ -504,8 +557,10 @@ cselib_get_next_uid (void)
return next_uid;
}
+#if 0
/* See the documentation of cselib_find_slot below. */
static enum machine_mode find_slot_memmode;
+#endif
Remove?
+#if 0
/* The equality test for our hash table. The first argument ENTRY is a table
element (i.e. a cselib_val), while the second arg X is an rtx. We know
that all callers of htab_find_slot_with_hash will wrap CONST_INTs into a
@@ -570,6 +626,7 @@ get_value_hash (const void *entry)
const cselib_val *const v = (const cselib_val *) entry;
return v->hash;
}
+#endif
Remove?
OK otherwise.
This only leaves the GC htabs, right? What was the issue there?
gengtype being silly?
Diego.