+/**
+ * An entry in the avail set.
+ */
+typedef struct avail_entry_t {
+ ir_node *ptr; /**< the address pointer */
+ ir_mode *mode; /**< the load mode */
+ ir_node *load; /**< the associated Load */
+} avail_entry_t;
+
+/**
+ * Compare two avail entries.
+ */
+static int cmp_avail_entry(const void *elt, const void *key, size_t size) {
+ const avail_entry_t *a = elt;
+ const avail_entry_t *b = key;
+ (void) size;
+
+ return a->ptr != b->ptr || a->mode != b->mode;
+} /* cmp_avail_entry */
+
+/**
+ * Calculate the hash value of an avail entry.
+ */
+static unsigned hash_cache_entry(const avail_entry_t *entry) {
+ return get_irn_idx(entry->ptr) * 9 + HASH_PTR(entry->mode);
+} /* hash_cache_entry */
+