diff options
author | Trevor Saunders <tsaunders@mozilla.com> | 2014-11-20 15:10:19 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2014-11-20 15:10:19 +0000 |
commit | d242408fda0bb64230b5446911d860df3e19a3da (patch) | |
tree | f1326eb25df16ac5403659af6e7b0668a0042fb0 /gcc/tree.h | |
parent | aebf76a2d6de989fe3e8c88aa047e4cfbd1e340e (diff) | |
download | gcc-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.h | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -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 |