+2011-05-08 Jan Hubicka <jh@suse.cz>
+
+ * gimple.c (type_pair_hash, type_pair_eq, lookup_type_pair):
+ Arrange type pairs to be UID ordered.
+ (gimple_lookup_type_leader): Make inline.
+
2011-05-09 Nick Clifton <nickc@redhat.com>
PR target/48897
const struct type_pair_d *pair = (const struct type_pair_d *) p;
hashval_t val1 = pair->uid1;
hashval_t val2 = pair->uid2;
- return (iterative_hash_hashval_t (val2, val1)
- ^ iterative_hash_hashval_t (val1, val2));
+ return iterative_hash_hashval_t (val1, val2);
}
/* Compare two type pairs pointed-to by P1 and P2. */
{
const struct type_pair_d *pair1 = (const struct type_pair_d *) p1;
const struct type_pair_d *pair2 = (const struct type_pair_d *) p2;
- return ((pair1->uid1 == pair2->uid1 && pair1->uid2 == pair2->uid2)
- || (pair1->uid1 == pair2->uid2 && pair1->uid2 == pair2->uid1));
+ return (pair1->uid1 == pair2->uid1 && pair1->uid2 == pair2->uid2);
}
/* Lookup the pair of types T1 and T2 in *VISITED_P. Insert a new
gcc_obstack_init (ob_p);
}
- pair.uid1 = TYPE_UID (t1);
- pair.uid2 = TYPE_UID (t2);
+ if (TYPE_UID (t1) < TYPE_UID (t2))
+ {
+ pair.uid1 = TYPE_UID (t1);
+ pair.uid2 = TYPE_UID (t2);
+ }
+ else
+ {
+ pair.uid1 = TYPE_UID (t2);
+ pair.uid2 = TYPE_UID (t1);
+ }
slot = htab_find_slot (*visited_p, &pair, INSERT);
if (*slot)
else
{
p = XOBNEW (ob_p, struct type_pair_d);
- p->uid1 = TYPE_UID (t1);
- p->uid2 = TYPE_UID (t2);
+ p->uid1 = pair.uid1;
+ p->uid2 = pair.uid2;
p->same_p[0] = -2;
p->same_p[1] = -2;
*slot = (void *) p;
/* Lookup an existing leader for T and return it or NULL_TREE, if
there is none in the cache. */
-static tree
+static inline tree
gimple_lookup_type_leader (tree t)
{
gimple_type_leader_entry *leader;