aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/optimize.c23
-rw-r--r--gcc/cp/semantics.c9
3 files changed, 21 insertions, 15 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 26cc9f5..193a9c2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2014-08-02 Trevor Saunders <tsaunders@mozilla.com>
+ * optimize.c, semantics.c: Use hash_map instead of pointer_map.
+
+2014-08-02 Trevor Saunders <tsaunders@mozilla.com>
+
* class.c, cp-gimplify.c, cp-tree.h, decl.c, decl2.c, error.c,
method.c, name-lookup.c, pt.c, semantics.c, tree.c: Use hash_set
instead of pointer_set.
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 3cd8047..6eeca4d 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -86,7 +86,7 @@ clone_body (tree clone, tree fn, void *arg_map)
id.src_fn = fn;
id.dst_fn = clone;
id.src_cfun = DECL_STRUCT_FUNCTION (fn);
- id.decl_map = (struct pointer_map_t *) arg_map;
+ id.decl_map = static_cast<hash_map<tree, tree> *> (arg_map);
id.copy_decl = copy_decl_no_change;
id.transform_call_graph_edges = CB_CGE_DUPLICATE;
@@ -527,7 +527,7 @@ maybe_clone_body (tree fn)
tree parm;
tree clone_parm;
int parmno;
- struct pointer_map_t *decl_map;
+ hash_map<tree, tree> *decl_map;
bool alias = false;
clone = fns[idx];
@@ -587,7 +587,7 @@ maybe_clone_body (tree fn)
}
/* Remap the parameters. */
- decl_map = pointer_map_create ();
+ decl_map = new hash_map<tree, tree>;
for (parmno = 0,
parm = DECL_ARGUMENTS (fn),
clone_parm = DECL_ARGUMENTS (clone);
@@ -600,7 +600,7 @@ maybe_clone_body (tree fn)
{
tree in_charge;
in_charge = in_charge_arg_for_name (DECL_NAME (clone));
- *pointer_map_insert (decl_map, parm) = in_charge;
+ decl_map->put (parm, in_charge);
}
else if (DECL_ARTIFICIAL (parm)
&& DECL_NAME (parm) == vtt_parm_identifier)
@@ -611,19 +611,22 @@ maybe_clone_body (tree fn)
if (DECL_HAS_VTT_PARM_P (clone))
{
DECL_ABSTRACT_ORIGIN (clone_parm) = parm;
- *pointer_map_insert (decl_map, parm) = clone_parm;
+ decl_map->put (parm, clone_parm);
clone_parm = DECL_CHAIN (clone_parm);
}
/* Otherwise, map the VTT parameter to `NULL'. */
else
- *pointer_map_insert (decl_map, parm)
- = fold_convert (TREE_TYPE (parm), null_pointer_node);
+ {
+ tree t
+ = fold_convert (TREE_TYPE (parm), null_pointer_node);
+ decl_map->put (parm, t);
+ }
}
/* Map other parameters to their equivalents in the cloned
function. */
else
{
- *pointer_map_insert (decl_map, parm) = clone_parm;
+ decl_map->put (parm, clone_parm);
clone_parm = DECL_CHAIN (clone_parm);
}
}
@@ -632,14 +635,14 @@ maybe_clone_body (tree fn)
{
parm = DECL_RESULT (fn);
clone_parm = DECL_RESULT (clone);
- *pointer_map_insert (decl_map, parm) = clone_parm;
+ decl_map->put (parm, clone_parm);
}
/* Clone the body. */
clone_body (clone, fn, decl_map);
/* Clean up. */
- pointer_map_destroy (decl_map);
+ delete decl_map;
}
/* The clone can throw iff the original function can throw. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 735284e..4868d69 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -4977,15 +4977,15 @@ clone_omp_udr (tree stmt, tree omp_decl1, tree omp_decl2,
tree decl, tree placeholder)
{
copy_body_data id;
- struct pointer_map_t *decl_map = pointer_map_create ();
+ hash_map<tree, tree> decl_map;
- *pointer_map_insert (decl_map, omp_decl1) = placeholder;
- *pointer_map_insert (decl_map, omp_decl2) = decl;
+ decl_map.put (omp_decl1, placeholder);
+ decl_map.put (omp_decl2, decl);
memset (&id, 0, sizeof (id));
id.src_fn = DECL_CONTEXT (omp_decl1);
id.dst_fn = current_function_decl;
id.src_cfun = DECL_STRUCT_FUNCTION (id.src_fn);
- id.decl_map = decl_map;
+ id.decl_map = &decl_map;
id.copy_decl = copy_decl_no_change;
id.transform_call_graph_edges = CB_CGE_DUPLICATE;
@@ -4994,7 +4994,6 @@ clone_omp_udr (tree stmt, tree omp_decl1, tree omp_decl2,
id.transform_lang_insert_block = NULL;
id.eh_lp_nr = 0;
walk_tree (&stmt, copy_tree_body_r, &id, NULL);
- pointer_map_destroy (decl_map);
return stmt;
}