diff options
author | Trevor Saunders <tsaunders@mozilla.com> | 2014-11-20 15:10:56 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2014-11-20 15:10:56 +0000 |
commit | 509793471ab9e93d8627a6d74064ec43c36ff4ca (patch) | |
tree | 32d0ea1b5e051e3d370ca84a45ea541a8f404a5d | |
parent | 907dadbd2ade80fd356071954711375ce9b0c85a (diff) | |
download | gcc-509793471ab9e93d8627a6d74064ec43c36ff4ca.zip gcc-509793471ab9e93d8627a6d74064ec43c36ff4ca.tar.gz gcc-509793471ab9e93d8627a6d74064ec43c36ff4ca.tar.bz2 |
convert trans-mem to hash_table
gcc/
* cfgexpand.c, gimple-ssa.h, trans-mem.c: Replace htab with
hash_table.
From-SVN: r217872
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 11 | ||||
-rw-r--r-- | gcc/gimple-ssa.h | 17 | ||||
-rw-r--r-- | gcc/trans-mem.c | 11 |
4 files changed, 30 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c70fad..327a5c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2014-11-20 Trevor Saunders <tsaunders@mozilla.com> + * cfgexpand.c, gimple-ssa.h, trans-mem.c: Replace htab with + hash_table. + +2014-11-20 Trevor Saunders <tsaunders@mozilla.com> + * ipa-utils.c, lto-section-in.c, lto-streamer.h, tree-scalar-evolution.c: Replace htab with hash_table. diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index f61140e..8cdf585 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -2234,16 +2234,16 @@ static void mark_transaction_restart_calls (gimple stmt) { struct tm_restart_node dummy; - void **slot; + tm_restart_node **slot; if (!cfun->gimple_df->tm_restart) return; dummy.stmt = stmt; - slot = htab_find_slot (cfun->gimple_df->tm_restart, &dummy, NO_INSERT); + slot = cfun->gimple_df->tm_restart->find_slot (&dummy, NO_INSERT); if (slot) { - struct tm_restart_node *n = (struct tm_restart_node *) *slot; + struct tm_restart_node *n = *slot; tree list = n->label_or_list; rtx_insn *insn; @@ -6062,10 +6062,7 @@ pass_expand::execute (function *fun) /* After expanding, the tm_restart map is no longer needed. */ if (fun->gimple_df->tm_restart) - { - htab_delete (fun->gimple_df->tm_restart); - fun->gimple_df->tm_restart = NULL; - } + fun->gimple_df->tm_restart = NULL; /* Tag the blocks with a depth number so that change_scope can find the common parent easily. */ diff --git a/gcc/gimple-ssa.h b/gcc/gimple-ssa.h index c023956..9bdb233 100644 --- a/gcc/gimple-ssa.h +++ b/gcc/gimple-ssa.h @@ -28,11 +28,24 @@ along with GCC; see the file COPYING3. If not see /* This structure is used to map a gimple statement to a label, or list of labels to represent transaction restart. */ -struct GTY(()) tm_restart_node { +struct GTY((for_user)) tm_restart_node { gimple stmt; tree label_or_list; }; +/* Hasher for tm_restart_node. */ + +struct tm_restart_hasher : ggc_hasher<tm_restart_node *> +{ + static hashval_t hash (tm_restart_node *n) { return htab_hash_pointer (n); } + + static bool + equal (tm_restart_node *a, tm_restart_node *b) + { + return a == b; + } +}; + struct ssa_name_hasher : ggc_hasher<tree> { /* Hash a tree in a uid_decl_map. */ @@ -101,7 +114,7 @@ struct GTY(()) gimple_df { /* Map gimple stmt to tree label (or list of labels) for transaction restart and abort. */ - htab_t GTY ((param_is (struct tm_restart_node))) tm_restart; + hash_table<tm_restart_hasher> *tm_restart; }; diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index a7de3e6..51f79a2 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -3109,15 +3109,16 @@ split_bb_make_tm_edge (gimple stmt, basic_block dest_bb, // Record the need for the edge for the benefit of the rtl passes. if (cfun->gimple_df->tm_restart == NULL) - cfun->gimple_df->tm_restart = htab_create_ggc (31, struct_ptr_hash, - struct_ptr_eq, ggc_free); + cfun->gimple_df->tm_restart + = hash_table<tm_restart_hasher>::create_ggc (31); struct tm_restart_node dummy; dummy.stmt = stmt; dummy.label_or_list = gimple_block_label (dest_bb); - void **slot = htab_find_slot (cfun->gimple_df->tm_restart, &dummy, INSERT); - struct tm_restart_node *n = (struct tm_restart_node *) *slot; + tm_restart_node **slot = cfun->gimple_df->tm_restart->find_slot (&dummy, + INSERT); + struct tm_restart_node *n = *slot; if (n == NULL) { n = ggc_alloc<tm_restart_node> (); @@ -3196,7 +3197,7 @@ expand_block_edges (struct tm_region *const region, basic_block bb) if (cfun->gimple_df->tm_restart == NULL) cfun->gimple_df->tm_restart - = htab_create_ggc (31, struct_ptr_hash, struct_ptr_eq, ggc_free); + = hash_table<tm_restart_hasher>::create_ggc (31); // All TM builtins have an abnormal edge to the outer-most transaction. // We never restart inner transactions. |