aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorTrevor Saunders <tsaunders@mozilla.com>2014-11-20 15:10:19 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2014-11-20 15:10:19 +0000
commitd242408fda0bb64230b5446911d860df3e19a3da (patch)
treef1326eb25df16ac5403659af6e7b0668a0042fb0 /gcc/tree.h
parentaebf76a2d6de989fe3e8c88aa047e4cfbd1e340e (diff)
downloadgcc-d242408fda0bb64230b5446911d860df3e19a3da.zip
gcc-d242408fda0bb64230b5446911d860df3e19a3da.tar.gz
gcc-d242408fda0bb64230b5446911d860df3e19a3da.tar.bz2
convert many if_marked htab to hash_table
ada/ * gcc-interface/decl.c, gcc-interface/utils.c: replace htab with hash_table. cp/ * cp-objcp-common.c: Use hash_table instead of htab. gcc/ * config/i386/i386.c, function.c, trans-mem.c, tree-core.h, tree.c, tree.h, ubsan.c, varasm.c: Use hash_table instead of htab. From-SVN: r217867
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index ed8fecd..7126dac 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4402,6 +4402,28 @@ extern unsigned int tree_map_hash (const void *);
extern unsigned int tree_decl_map_hash (const void *);
#define tree_decl_map_marked_p tree_map_base_marked_p
+struct tree_decl_map_cache_hasher : ggc_cache_hasher<tree_decl_map *>
+{
+ static hashval_t hash (tree_decl_map *m) { return tree_decl_map_hash (m); }
+ static bool
+ equal (tree_decl_map *a, tree_decl_map *b)
+ {
+ return tree_decl_map_eq (a, b);
+ }
+
+ static void
+ handle_cache_entry (tree_decl_map *&m)
+ {
+ extern void gt_ggc_mx (tree_decl_map *&);
+ if (m == HTAB_EMPTY_ENTRY || m == HTAB_DELETED_ENTRY)
+ return;
+ else if (ggc_marked_p (m->base.from))
+ gt_ggc_mx (m);
+ else
+ m = static_cast<tree_decl_map *> (HTAB_DELETED_ENTRY);
+ }
+};
+
#define tree_int_map_eq tree_map_base_eq
#define tree_int_map_hash tree_map_base_hash
#define tree_int_map_marked_p tree_map_base_marked_p