aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrevor Saunders <tsaunders@mozilla.com>2014-11-20 15:10:56 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2014-11-20 15:10:56 +0000
commit509793471ab9e93d8627a6d74064ec43c36ff4ca (patch)
tree32d0ea1b5e051e3d370ca84a45ea541a8f404a5d
parent907dadbd2ade80fd356071954711375ce9b0c85a (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cfgexpand.c11
-rw-r--r--gcc/gimple-ssa.h17
-rw-r--r--gcc/trans-mem.c11
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.