aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/optimize.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r--gcc/cp/optimize.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 839c4e6..1b50825 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -99,7 +99,7 @@ maybe_clone_body (tree fn)
tree parm;
tree clone_parm;
int parmno;
- splay_tree decl_map;
+ struct pointer_map_t *decl_map;
/* Update CLONE's source position information to match FN's. */
DECL_SOURCE_LOCATION (clone) = DECL_SOURCE_LOCATION (fn);
@@ -139,7 +139,7 @@ maybe_clone_body (tree fn)
start_preparsed_function (clone, NULL_TREE, SF_PRE_PARSED);
/* Remap the parameters. */
- decl_map = splay_tree_new (splay_tree_compare_pointers, NULL, NULL);
+ decl_map = pointer_map_create ();
for (parmno = 0,
parm = DECL_ARGUMENTS (fn),
clone_parm = DECL_ARGUMENTS (clone);
@@ -152,9 +152,7 @@ maybe_clone_body (tree fn)
{
tree in_charge;
in_charge = in_charge_arg_for_name (DECL_NAME (clone));
- splay_tree_insert (decl_map,
- (splay_tree_key) parm,
- (splay_tree_value) in_charge);
+ *pointer_map_insert (decl_map, parm) = in_charge;
}
else if (DECL_ARTIFICIAL (parm)
&& DECL_NAME (parm) == vtt_parm_identifier)
@@ -165,26 +163,18 @@ maybe_clone_body (tree fn)
if (DECL_HAS_VTT_PARM_P (clone))
{
DECL_ABSTRACT_ORIGIN (clone_parm) = parm;
- splay_tree_insert (decl_map,
- (splay_tree_key) parm,
- (splay_tree_value) clone_parm);
+ *pointer_map_insert (decl_map, parm) = clone_parm;
clone_parm = TREE_CHAIN (clone_parm);
}
/* Otherwise, map the VTT parameter to `NULL'. */
else
- {
- splay_tree_insert (decl_map,
- (splay_tree_key) parm,
- (splay_tree_value) null_pointer_node);
- }
+ *pointer_map_insert (decl_map, parm) = null_pointer_node;
}
/* Map other parameters to their equivalents in the cloned
function. */
else
{
- splay_tree_insert (decl_map,
- (splay_tree_key) parm,
- (splay_tree_value) clone_parm);
+ *pointer_map_insert (decl_map, parm) = clone_parm;
clone_parm = TREE_CHAIN (clone_parm);
}
}
@@ -193,14 +183,13 @@ maybe_clone_body (tree fn)
{
parm = DECL_RESULT (fn);
clone_parm = DECL_RESULT (clone);
- splay_tree_insert (decl_map, (splay_tree_key) parm,
- (splay_tree_value) clone_parm);
+ *pointer_map_insert (decl_map, parm) = clone_parm;
}
/* Clone the body. */
clone_body (clone, fn, decl_map);
/* Clean up. */
- splay_tree_delete (decl_map);
+ pointer_map_destroy (decl_map);
/* The clone can throw iff the original function can throw. */
cp_function_chain->can_throw = !TREE_NOTHROW (fn);