aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-utils.c
diff options
context:
space:
mode:
authorTrevor Saunders <tsaunders@mozilla.com>2014-08-02 11:34:54 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2014-08-02 11:34:54 +0000
commitb787e7a2c2c9be2f548d4c76ec324b71859851a4 (patch)
treeb20f9df1d7e2cb3a642d2fab604f827c7d23712a /gcc/ipa-utils.c
parent6e2830c3dbe0d4972519ddd44bd1b15b2b274ba2 (diff)
downloadgcc-b787e7a2c2c9be2f548d4c76ec324b71859851a4.zip
gcc-b787e7a2c2c9be2f548d4c76ec324b71859851a4.tar.gz
gcc-b787e7a2c2c9be2f548d4c76ec324b71859851a4.tar.bz2
convert many uses of pointer_map to hash_map
gcc/c-family/ * cilk.c: Use hash_map instead of pointer_map. gcc/c/ * c-typeck.c: Use hash_map instead of pointer_map. gcc/cp/ * optimize.c, semantics.c: Use hash_map instead of pointer_map. gcc/ * hash-map.h (default_hashmap_traits::mark_key_deleted): Fix cast. (hash_map::remove): New method. (hash_map::traverse): New method. * cgraph.h, except.c, except.h, gimple-ssa-strength-reduction.c, ipa-utils.c, lto-cgraph.c, lto-streamer.h, omp-low.c, predict.c, tree-cfg.c, tree-cfgcleanup.c, tree-eh.c, tree-eh.h, tree-inline.c, tree-inline.h, tree-nested.c, tree-sra.c, tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-reassoc.c, tree-ssa-structalias.c, tree-ssa.c, tree-ssa.h, var-tracking.c: Use hash_map instead of pointer_map. From-SVN: r213517
Diffstat (limited to 'gcc/ipa-utils.c')
-rw-r--r--gcc/ipa-utils.c62
1 files changed, 28 insertions, 34 deletions
diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c
index 482fc22..265b88e 100644
--- a/gcc/ipa-utils.c
+++ b/gcc/ipa-utils.c
@@ -389,7 +389,7 @@ cgraph_node_set_new (void)
cgraph_node_set new_node_set;
new_node_set = XCNEW (struct cgraph_node_set_def);
- new_node_set->map = pointer_map_create ();
+ new_node_set->map = new hash_map<cgraph_node *, size_t>;
new_node_set->nodes.create (0);
return new_node_set;
}
@@ -400,19 +400,17 @@ cgraph_node_set_new (void)
void
cgraph_node_set_add (cgraph_node_set set, struct cgraph_node *node)
{
- void **slot;
+ bool existed_p;
+ size_t &index = set->map->get_or_insert (node, &existed_p);
- slot = pointer_map_insert (set->map, node);
-
- if (*slot)
+ if (existed_p)
{
- int index = (size_t) *slot - 1;
gcc_checking_assert ((set->nodes[index]
== node));
return;
}
- *slot = (void *)(size_t) (set->nodes.length () + 1);
+ index = set->nodes.length () + 1;
/* Insert into node vector. */
set->nodes.safe_push (node);
@@ -424,15 +422,14 @@ cgraph_node_set_add (cgraph_node_set set, struct cgraph_node *node)
void
cgraph_node_set_remove (cgraph_node_set set, struct cgraph_node *node)
{
- void **slot, **last_slot;
int index;
struct cgraph_node *last_node;
- slot = pointer_map_contains (set->map, node);
+ size_t *slot = set->map->get (node);
if (slot == NULL || !*slot)
return;
- index = (size_t) *slot - 1;
+ index = *slot - 1;
gcc_checking_assert (set->nodes[index]
== node);
@@ -441,16 +438,16 @@ cgraph_node_set_remove (cgraph_node_set set, struct cgraph_node *node)
last_node = set->nodes.pop ();
if (last_node != node)
{
- last_slot = pointer_map_contains (set->map, last_node);
+ size_t *last_slot = set->map->get (last_node);
gcc_checking_assert (last_slot && *last_slot);
- *last_slot = (void *)(size_t) (index + 1);
+ *last_slot = index + 1;
/* Move the last element to the original spot of NODE. */
set->nodes[index] = last_node;
}
/* Remove element from hash table. */
- *slot = NULL;
+ set->map->remove (node);
}
@@ -460,14 +457,14 @@ cgraph_node_set_remove (cgraph_node_set set, struct cgraph_node *node)
cgraph_node_set_iterator
cgraph_node_set_find (cgraph_node_set set, struct cgraph_node *node)
{
- void **slot;
+ size_t *slot;
cgraph_node_set_iterator csi;
- slot = pointer_map_contains (set->map, node);
+ slot = set->map->get (node);
if (slot == NULL || !*slot)
csi.index = (unsigned) ~0;
else
- csi.index = (size_t)*slot - 1;
+ csi.index = *slot - 1;
csi.set = set;
return csi;
@@ -505,7 +502,7 @@ void
free_cgraph_node_set (cgraph_node_set set)
{
set->nodes.release ();
- pointer_map_destroy (set->map);
+ delete set->map;
free (set);
}
@@ -518,7 +515,7 @@ varpool_node_set_new (void)
varpool_node_set new_node_set;
new_node_set = XCNEW (struct varpool_node_set_def);
- new_node_set->map = pointer_map_create ();
+ new_node_set->map = new hash_map<varpool_node *, size_t>;
new_node_set->nodes.create (0);
return new_node_set;
}
@@ -529,19 +526,18 @@ varpool_node_set_new (void)
void
varpool_node_set_add (varpool_node_set set, varpool_node *node)
{
- void **slot;
-
- slot = pointer_map_insert (set->map, node);
+ bool existed;
+ size_t &slot = set->map->get_or_insert (node, &existed);
- if (*slot)
+ if (existed)
{
- int index = (size_t) *slot - 1;
+ int index = slot - 1;
gcc_checking_assert ((set->nodes[index]
== node));
return;
}
- *slot = (void *)(size_t) (set->nodes.length () + 1);
+ slot = set->nodes.length () + 1;
/* Insert into node vector. */
set->nodes.safe_push (node);
@@ -553,15 +549,14 @@ varpool_node_set_add (varpool_node_set set, varpool_node *node)
void
varpool_node_set_remove (varpool_node_set set, varpool_node *node)
{
- void **slot, **last_slot;
int index;
varpool_node *last_node;
- slot = pointer_map_contains (set->map, node);
+ size_t *slot = set->map->get (node);
if (slot == NULL || !*slot)
return;
- index = (size_t) *slot - 1;
+ index = *slot - 1;
gcc_checking_assert (set->nodes[index]
== node);
@@ -570,16 +565,16 @@ varpool_node_set_remove (varpool_node_set set, varpool_node *node)
last_node = set->nodes.pop ();
if (last_node != node)
{
- last_slot = pointer_map_contains (set->map, last_node);
+ size_t *last_slot = set->map->get (last_node);
gcc_checking_assert (last_slot && *last_slot);
- *last_slot = (void *)(size_t) (index + 1);
+ *last_slot = index + 1;
/* Move the last element to the original spot of NODE. */
set->nodes[index] = last_node;
}
/* Remove element from hash table. */
- *slot = NULL;
+ set->map->remove (node);
}
@@ -589,14 +584,13 @@ varpool_node_set_remove (varpool_node_set set, varpool_node *node)
varpool_node_set_iterator
varpool_node_set_find (varpool_node_set set, varpool_node *node)
{
- void **slot;
varpool_node_set_iterator vsi;
- slot = pointer_map_contains (set->map, node);
+ size_t *slot = set->map->get (node);
if (slot == NULL || !*slot)
vsi.index = (unsigned) ~0;
else
- vsi.index = (size_t)*slot - 1;
+ vsi.index = *slot - 1;
vsi.set = set;
return vsi;
@@ -625,7 +619,7 @@ void
free_varpool_node_set (varpool_node_set set)
{
set->nodes.release ();
- pointer_map_destroy (set->map);
+ delete set->map;
free (set);
}