diff options
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r-- | gcc/cp/optimize.c | 27 |
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); |