diff options
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/optimize.c | 23 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 9 |
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; } |