diff options
author | tbsaunde <tbsaunde@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-09 03:06:09 +0000 |
---|---|---|
committer | tbsaunde <tbsaunde@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-09 03:06:09 +0000 |
commit | 5358b1527ccc2548290d0340ed3270b0f68e2b33 (patch) | |
tree | fe302b0afef5f45efd91e938d8c2eb16e20e1d0a /gcc | |
parent | f414e3532e4b9b2e6adeb505a68994006a3369df (diff) | |
download | gcc-5358b1527ccc2548290d0340ed3270b0f68e2b33.tar.gz |
convert some hash_table to hash_map
gcc/
* graphite-htab.h: Use hash_map instead of hash_table.
* graphite-clast-to-gimple.c: Adjust.
* passes.c: Use hash_map instead of hash_table.
* sese.c: Likewise.
* sese.h: Remove now unused code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212382 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/graphite-clast-to-gimple.c | 37 | ||||
-rw-r--r-- | gcc/graphite-htab.h | 30 | ||||
-rw-r--r-- | gcc/passes.c | 68 | ||||
-rw-r--r-- | gcc/sese.c | 89 | ||||
-rw-r--r-- | gcc/sese.h | 25 |
6 files changed, 65 insertions, 192 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 783bd63e27f..a49a5f0d16c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-07-08 Trevor Saunders <tsaunders@mozilla.com> + + * graphite-htab.h: Use hash_map instead of hash_table. + * graphite-clast-to-gimple.c: Adjust. + * passes.c: Use hash_map instead of hash_table. + * sese.c: Likewise. + * sese.h: Remove now unused code. + 2014-07-08 Sriraman Tallam <tmsriram@google.com> PR target/61599 diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 71507a03099..296b893809f 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -1012,34 +1012,16 @@ build_iv_mapping (vec<tree> iv_map, struct clast_user_stmt *user_stmt, mpz_clear (bound_two); } -/* Construct bb_pbb_def with BB and PBB. */ - -static bb_pbb_def * -new_bb_pbb_def (basic_block bb, poly_bb_p pbb) -{ - bb_pbb_def *bb_pbb_p; - - bb_pbb_p = XNEW (bb_pbb_def); - bb_pbb_p->bb = bb; - bb_pbb_p->pbb = pbb; - - return bb_pbb_p; -} - /* Mark BB with it's relevant PBB via hashing table BB_PBB_MAPPING. */ static void mark_bb_with_pbb (poly_bb_p pbb, basic_block bb, bb_pbb_htab_type *bb_pbb_mapping) { - bb_pbb_def tmp; - bb_pbb_def **x; - - tmp.bb = bb; - x = bb_pbb_mapping->find_slot (&tmp, INSERT); - - if (x && !*x) - *x = new_bb_pbb_def (bb, pbb); + bool existed; + poly_bb_p &e = bb_pbb_mapping->get_or_insert (bb, &existed); + if (!existed) + e = pbb; } /* Find BB's related poly_bb_p in hash table BB_PBB_MAPPING. */ @@ -1047,14 +1029,9 @@ mark_bb_with_pbb (poly_bb_p pbb, basic_block bb, poly_bb_p find_pbb_via_hash (bb_pbb_htab_type *bb_pbb_mapping, basic_block bb) { - bb_pbb_def tmp; - bb_pbb_def **slot; - - tmp.bb = bb; - slot = bb_pbb_mapping->find_slot (&tmp, NO_INSERT); - - if (slot && *slot) - return ((bb_pbb_def *) *slot)->pbb; + poly_bb_p *pbb = bb_pbb_mapping->get (bb); + if (pbb) + return *pbb; return NULL; } diff --git a/gcc/graphite-htab.h b/gcc/graphite-htab.h index 69fd05a965a..b1fd81e3013 100644 --- a/gcc/graphite-htab.h +++ b/gcc/graphite-htab.h @@ -21,43 +21,33 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_GRAPHITE_HTAB_H #define GCC_GRAPHITE_HTAB_H -#include "hash-table.h" - -/* Stores BB's related PBB. */ - -struct bb_pbb_def -{ - basic_block bb; - poly_bb_p pbb; -}; +#include "hash-map.h" /* Hashtable helpers. */ -struct bb_pbb_hasher : typed_free_remove <bb_pbb_def> +struct bb_pbb_hasher : default_hashmap_traits { - typedef bb_pbb_def value_type; - typedef bb_pbb_def compare_type; - static inline hashval_t hash (const value_type *); - static inline bool equal (const value_type *, const compare_type *); + static inline hashval_t hash (const basic_block); + static inline bool equal_keys (const basic_block, const basic_block); }; -/* Hash function for data base element BB_PBB. */ +/* Hash function. */ inline hashval_t -bb_pbb_hasher::hash (const value_type *bb_pbb) +bb_pbb_hasher::hash (const basic_block bb) { - return (hashval_t)(bb_pbb->bb->index); + return (hashval_t)(bb->index); } /* Compare data base element PB1 and PB2. */ inline bool -bb_pbb_hasher::equal (const value_type *bp1, const compare_type *bp2) +bb_pbb_hasher::equal_keys (const basic_block a, const basic_block b) { - return (bp1->bb->index == bp2->bb->index); + return (a->index == b->index); } -typedef hash_table<bb_pbb_hasher> bb_pbb_htab_type; +typedef hash_map<basic_block, poly_bb_p, bb_pbb_hasher> bb_pbb_htab_type; poly_bb_p find_pbb_via_hash (bb_pbb_htab_type *, basic_block); bool loop_is_parallel_p (loop_p, bb_pbb_htab_type *, int); diff --git a/gcc/passes.c b/gcc/passes.c index 91b644e33db..0533687c6ee 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -84,6 +84,7 @@ along with GCC; see the file COPYING3. If not see #include "pass_manager.h" #include "tree-ssa-live.h" /* For remove_unused_locals. */ #include "tree-cfgcleanup.h" +#include "hash-map.h" using namespace gcc; @@ -687,64 +688,47 @@ pass_manager::register_dump_files (opt_pass *pass) while (pass); } -struct pass_registry -{ - const char* unique_name; - opt_pass *pass; -}; - /* Helper for pass_registry hash table. */ -struct pass_registry_hasher : typed_noop_remove <pass_registry> +struct pass_registry_hasher : default_hashmap_traits { - typedef pass_registry value_type; - typedef pass_registry compare_type; - static inline hashval_t hash (const value_type *); - static inline bool equal (const value_type *, const compare_type *); + static inline hashval_t hash (const char *); + static inline bool equal_keys (const char *, const char *); }; /* Pass registry hash function. */ inline hashval_t -pass_registry_hasher::hash (const value_type *s) +pass_registry_hasher::hash (const char *name) { - return htab_hash_string (s->unique_name); + return htab_hash_string (name); } /* Hash equal function */ inline bool -pass_registry_hasher::equal (const value_type *s1, const compare_type *s2) +pass_registry_hasher::equal_keys (const char *s1, const char *s2) { - return !strcmp (s1->unique_name, s2->unique_name); + return !strcmp (s1, s2); } -static hash_table<pass_registry_hasher> *name_to_pass_map; +static hash_map<const char *, opt_pass *, pass_registry_hasher> + *name_to_pass_map; /* Register PASS with NAME. */ static void register_pass_name (opt_pass *pass, const char *name) { - struct pass_registry **slot; - struct pass_registry pr; - if (!name_to_pass_map) - name_to_pass_map = new hash_table<pass_registry_hasher> (256); - - pr.unique_name = name; - slot = name_to_pass_map->find_slot (&pr, INSERT); - if (!*slot) - { - struct pass_registry *new_pr; + name_to_pass_map + = new hash_map<const char *, opt_pass *, pass_registry_hasher> (256); - new_pr = XCNEW (struct pass_registry); - new_pr->unique_name = xstrdup (name); - new_pr->pass = pass; - *slot = new_pr; - } - else + if (name_to_pass_map->get (name)) return; /* Ignore plugin passes. */ + + const char *unique_name = xstrdup (name); + name_to_pass_map->put (unique_name, pass); } /* Map from pass id to canonicalized pass name. */ @@ -754,15 +738,13 @@ static vec<char_ptr> pass_tab = vNULL; /* Callback function for traversing NAME_TO_PASS_MAP. */ -int -passes_pass_traverse (pass_registry **p, void *data ATTRIBUTE_UNUSED) +bool +passes_pass_traverse (const char *const &name, opt_pass *const &pass, void *) { - opt_pass *pass = (*p)->pass; - gcc_assert (pass->static_pass_number > 0); gcc_assert (pass_tab.exists ()); - pass_tab[pass->static_pass_number] = (*p)->unique_name; + pass_tab[pass->static_pass_number] = name; return 1; } @@ -864,15 +846,11 @@ pass_manager::dump_passes () const static opt_pass * get_pass_by_name (const char *name) { - struct pass_registry **slot, pr; - - pr.unique_name = name; - slot = name_to_pass_map->find_slot (&pr, NO_INSERT); - - if (!slot || !*slot) - return NULL; + opt_pass **p = name_to_pass_map->get (name); + if (p) + return *p; - return (*slot)->pass; + return NULL; } diff --git a/gcc/sese.c b/gcc/sese.c index 8191cb92ec4..735248c186b 100644 --- a/gcc/sese.c +++ b/gcc/sese.c @@ -22,7 +22,7 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" -#include "hash-table.h" +#include "hash-map.h" #include "tree.h" #include "tree-pretty-print.h" #include "basic-block.h" @@ -53,56 +53,37 @@ along with GCC; see the file COPYING3. If not see #include "sese.h" #include "tree-ssa-propagate.h" -/* Print to stderr the element ELT. */ +/* Helper function for debug_rename_map. */ -static void -debug_rename_elt (rename_map_elt elt) +bool +debug_rename_map_1 (tree_node *const &old_name, tree_node *const &expr, + void *) { fprintf (stderr, "("); - print_generic_expr (stderr, elt->old_name, 0); + print_generic_expr (stderr, old_name, 0); fprintf (stderr, ", "); - print_generic_expr (stderr, elt->expr, 0); + print_generic_expr (stderr, expr, 0); fprintf (stderr, ")\n"); -} - -/* Helper function for debug_rename_map. */ - -int -debug_rename_map_1 (rename_map_elt_s **slot, void *s ATTRIBUTE_UNUSED) -{ - struct rename_map_elt_s *entry = *slot; - debug_rename_elt (entry); - return 1; + return true; } /* Hashtable helpers. */ -struct rename_map_hasher : typed_free_remove <rename_map_elt_s> +struct rename_map_hasher : default_hashmap_traits { - typedef rename_map_elt_s value_type; - typedef rename_map_elt_s compare_type; - static inline hashval_t hash (const value_type *); - static inline bool equal (const value_type *, const compare_type *); + static inline hashval_t hash (tree); }; /* Computes a hash function for database element ELT. */ inline hashval_t -rename_map_hasher::hash (const value_type *elt) +rename_map_hasher::hash (tree old_name) { - return SSA_NAME_VERSION (elt->old_name); + return SSA_NAME_VERSION (old_name); } -/* Compares database elements E1 and E2. */ - -inline bool -rename_map_hasher::equal (const value_type *elt1, const compare_type *elt2) -{ - return (elt1->old_name == elt2->old_name); -} - -typedef hash_table<rename_map_hasher> rename_map_type; +typedef hash_map<tree, tree, rename_map_hasher> rename_map_type; /* Print to stderr all the elements of RENAME_MAP. */ @@ -112,26 +93,6 @@ debug_rename_map (rename_map_type *rename_map) { rename_map->traverse <void *, debug_rename_map_1> (NULL); } - -/* Computes a hash function for database element ELT. */ - -hashval_t -rename_map_elt_info (const void *elt) -{ - return SSA_NAME_VERSION (((const struct rename_map_elt_s *) elt)->old_name); -} - -/* Compares database elements E1 and E2. */ - -int -eq_rename_map_elts (const void *e1, const void *e2) -{ - const struct rename_map_elt_s *elt1 = (const struct rename_map_elt_s *) e1; - const struct rename_map_elt_s *elt2 = (const struct rename_map_elt_s *) e2; - - return (elt1->old_name == elt2->old_name); -} - /* Record LOOP as occurring in REGION. */ @@ -418,15 +379,10 @@ get_false_edge_from_guard_bb (basic_block bb) static tree get_rename (rename_map_type *rename_map, tree old_name) { - struct rename_map_elt_s tmp; - rename_map_elt_s **slot; - gcc_assert (TREE_CODE (old_name) == SSA_NAME); - tmp.old_name = old_name; - slot = rename_map->find_slot (&tmp, NO_INSERT); - - if (slot && *slot) - return (*slot)->expr; + tree *expr = rename_map->get (old_name); + if (expr) + return *expr; return NULL_TREE; } @@ -436,21 +392,10 @@ get_rename (rename_map_type *rename_map, tree old_name) static void set_rename (rename_map_type *rename_map, tree old_name, tree expr) { - struct rename_map_elt_s tmp; - rename_map_elt_s **slot; - if (old_name == expr) return; - tmp.old_name = old_name; - slot = rename_map->find_slot (&tmp, INSERT); - - if (!slot) - return; - - free (*slot); - - *slot = new_rename_map_elt (old_name, expr); + rename_map->put (old_name, expr); } /* Renames the scalar uses of the statement COPY, using the diff --git a/gcc/sese.h b/gcc/sese.h index af919f83d02..e2a6d455c9f 100644 --- a/gcc/sese.h +++ b/gcc/sese.h @@ -249,31 +249,6 @@ if_region_get_condition_block (ifsese if_region) return if_region_entry (if_region)->dest; } -/* Structure containing the mapping between the old names and the new - names used after block copy in the new loop context. */ -typedef struct rename_map_elt_s -{ - tree old_name, expr; -} *rename_map_elt; - - -extern hashval_t rename_map_elt_info (const void *); -extern int eq_rename_map_elts (const void *, const void *); - -/* Constructs a new SCEV_INFO_STR structure for VAR and INSTANTIATED_BELOW. */ - -static inline rename_map_elt -new_rename_map_elt (tree old_name, tree expr) -{ - rename_map_elt res; - - res = XNEW (struct rename_map_elt_s); - res->old_name = old_name; - res->expr = expr; - - return res; -} - /* Free and compute again all the dominators information. */ static inline void |