diff options
author | Trevor Saunders <tsaunders@mozilla.com> | 2014-09-02 22:46:00 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2014-09-02 22:46:00 +0000 |
commit | b086d5308de0d25444243f482f2f3d1dfd3a9a62 (patch) | |
tree | cb4aa8d407cf40f28ef0fcd771f1109d53f44f3c /gcc/tree-cfg.c | |
parent | 70f0f8b2b1c9bf53b9158e4264bc1e93b963c31e (diff) | |
download | gcc-b086d5308de0d25444243f482f2f3d1dfd3a9a62.zip gcc-b086d5308de0d25444243f482f2f3d1dfd3a9a62.tar.gz gcc-b086d5308de0d25444243f482f2f3d1dfd3a9a62.tar.bz2 |
support ggc hash_map and hash_set
gcc/ChangeLog:
* alloc-pool.c: Include coretypes.h.
* cgraph.h, dbxout.c, dwarf2out.c, except.c, except.h, function.c,
function.h, symtab.c, tree-cfg.c, tree-eh.c: Use hash_map and
hash_set instead of htab.
* ggc-page.c (in_gc): New variable.
(ggc_free): Do nothing if a collection is taking place.
(ggc_collect): Set in_gc appropriately.
* ggc.h (gt_ggc_mx(const char *)): New function.
(gt_pch_nx(const char *)): Likewise.
(gt_ggc_mx(int)): Likewise.
(gt_pch_nx(int)): Likewise.
* hash-map.h (hash_map::hash_entry::ggc_mx): Likewise.
(hash_map::hash_entry::pch_nx): Likewise.
(hash_map::hash_entry::pch_nx_helper): Likewise.
(hash_map::hash_map): Adjust.
(hash_map::create_ggc): New function.
(gt_ggc_mx): Likewise.
(gt_pch_nx): Likewise.
* hash-set.h (default_hashset_traits::ggc_mx): Likewise.
(default_hashset_traits::pch_nx): Likewise.
(hash_set::hash_entry::ggc_mx): Likewise.
(hash_set::hash_entry::pch_nx): Likewise.
(hash_set::hash_entry::pch_nx_helper): Likewise.
(hash_set::hash_set): Adjust.
(hash_set::create_ggc): New function.
(hash_set::elements): Likewise.
(gt_ggc_mx): Likewise.
(gt_pch_nx): Likewise.
* hash-table.h (hash_table::hash_table): Adjust.
(hash_table::m_ggc): New member.
(hash_table::~hash_table): Adjust.
(hash_table::expand): Likewise.
(hash_table::empty): Likewise.
(gt_ggc_mx): New function.
(hashtab_entry_note_pointers): Likewise.
(gt_pch_nx): Likewise.
From-SVN: r214834
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c75516d..e89d76a 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -4723,19 +4723,17 @@ verify_node_sharing (tree *tp, int *walk_subtrees, void *data) } static bool eh_error_found; -static int -verify_eh_throw_stmt_node (void **slot, void *data) +bool +verify_eh_throw_stmt_node (const gimple &stmt, const int &, + hash_set<gimple> *visited) { - struct throw_stmt_node *node = (struct throw_stmt_node *)*slot; - hash_set<void *> *visited = (hash_set<void *> *) data; - - if (!visited->contains (node->stmt)) + if (!visited->contains (stmt)) { error ("dead STMT in EH table"); - debug_gimple_stmt (node->stmt); + debug_gimple_stmt (stmt); eh_error_found = true; } - return 1; + return true; } /* Verify if the location LOCs block is in BLOCKS. */ @@ -4996,10 +4994,10 @@ verify_gimple_in_cfg (struct function *fn, bool verify_nothrow) } eh_error_found = false; - if (get_eh_throw_stmt_table (cfun)) - htab_traverse (get_eh_throw_stmt_table (cfun), - verify_eh_throw_stmt_node, - &visited_stmts); + hash_map<gimple, int> *eh_table = get_eh_throw_stmt_table (cfun); + if (eh_table) + eh_table->traverse<hash_set<gimple> *, verify_eh_throw_stmt_node> + (&visited_stmts); if (err || eh_error_found) internal_error ("verify_gimple failed"); |