aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2011-05-09 10:45:16 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2011-05-09 08:45:16 +0000
commit4fc07af967e769a658c5aef0f40c860491fc132c (patch)
treef4281d41c2f663d30508bd6551ad369dac896578 /gcc/gimple.c
parent2cf320a89d0de024bac7d92771763f8e124ce152 (diff)
downloadgcc-4fc07af967e769a658c5aef0f40c860491fc132c.zip
gcc-4fc07af967e769a658c5aef0f40c860491fc132c.tar.gz
gcc-4fc07af967e769a658c5aef0f40c860491fc132c.tar.bz2
gimple.c (type_pair_hash, [...]): Arrange type pairs to be UID ordered.
* gimple.c (type_pair_hash, type_pair_eq, lookup_type_pair): Arrange type pairs to be UID ordered. (gimple_lookup_type_leader): Make inline. From-SVN: r173560
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r--gcc/gimple.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 0d28c1b..385c098 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -3240,8 +3240,7 @@ type_pair_hash (const void *p)
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. */
@@ -3251,8 +3250,7 @@ type_pair_eq (const void *p1, const void *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
@@ -3271,8 +3269,16 @@ lookup_type_pair (tree t1, tree t2, htab_t *visited_p, struct obstack *ob_p)
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)
@@ -3280,8 +3286,8 @@ lookup_type_pair (tree t1, tree t2, htab_t *visited_p, struct obstack *ob_p)
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;
@@ -3324,7 +3330,7 @@ static GTY((deletable, length("GIMPLE_TYPE_LEADER_SIZE")))
/* 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;