diff options
author | Lawrence Crowl <crowl@google.com> | 2013-04-26 00:28:35 +0000 |
---|---|---|
committer | Lawrence Crowl <crowl@gcc.gnu.org> | 2013-04-26 00:28:35 +0000 |
commit | 4a8fb1a1de7c34fc788ccca21f3a15980bbce093 (patch) | |
tree | 5115f0a81b7cea52ab7997ce3322160f2baf2374 /gcc/graphite-clast-to-gimple.c | |
parent | 11dae3ad79feec9dda4610f1f9adbc742a2b3661 (diff) | |
download | gcc-4a8fb1a1de7c34fc788ccca21f3a15980bbce093.tar.gz |
This patch is the main part of a consolodation of the hash_table patches to the...
This patch is the main part of a consolodation of the hash_table
patches to the cxx-conversion branch for files not under gcc/config.
Update various hash tables from htab_t to hash_table.
Modify types and calls to match.
* tree-parloops.c'reduction
* tree-parloops.c'name_to_copy
Fold reduction_info_hash and reduction_info_eq into new struct
reduction_hasher. Fold name_to_copy_elt_eq and name_to_copy_elt_hash
into new struct name_to_copy_hasher.
* trans-mem.c'tm_log
Fold tm_log_hash, tm_log_eq, tm_log_free into new struct log_entry_hasher.
* trans-mem.c'tm_memopt_value_numbers
Fold tm_memop_hash, tm_memop_eq into new struct tm_memop_hasher.
* tree-ssa-strlen.c'decl_to_stridxlist_htab
Fold decl_to_stridxlist_hash into new struct stridxlist_hasher.
* tree-ssa-loop-ivopts.c'ivopts_data::inv_expr_tab
Fold htab_inv_expr_hash and htab_inv_expr_eq into new struct
iv_inv_expr_hasher.
* tree-ssa-uncprop.c'equiv
Equiv renamed to val_ssa_equiv because of name ambiguity with local variables.
Fold equiv_hash, equiv_eq and equiv_free into new struct val_ssa_equiv_hasher.
Renamed variables equiv_hash_elt to an_equiv_elt because of name ambiguity
with struct type. Changed equiv_hash_elt_p to an_equiv_elt_p to match.
* tree-ssa-phiopt.c'seen_ssa_names
Fold name_to_bb_hash and name_to_bb_eq into new struct ssa_names_hasher.
* tree-ssa-structalias.c'pointer_equiv_class_table
* tree-ssa-structalias.c'location_equiv_class_table
Fold equiv_class_label_hash and equiv_class_label_eq into new
struct equiv_class_hasher.
* tree-ssa-structalias.c'shared_bitmap_table
Fold shared_bitmap_hash and shared_bitmap_eq into new struct
shared_bitmap_hasher.
* tree-ssa-live.c'var_map_base_init::tree_to_index
New struct tree_int_map_hasher.
* tree-sra.c'candidates
Fold uid_decl_map_hash and uid_decl_map_eq into new struct
uid_decl_hasher. This change moves the definitions from tree-ssa.c
into tree-sra.c and removes the declarations from tree-flow.h
tree-browser.c
Remove stale declaration of removed TB_parent_eq.
Fix template parameter for base class to match value_type.
gimple.h
Use gimplify_hasher::hash rather than gimple_tree_hash in the
assertion check.
Change return values to match return type. (I.e. no conversions.)
* graphite-clast-to-gimple.c'ivs_params::newivs_index
* graphite-clast-to-gimple.c'ivs_params::params_index
* graphite-clast-to-gimple.c'print_generated_program::params_index
* graphite-clast-to-gimple.c'gloog::newivs_index
* graphite-clast-to-gimple.c'gloog::params_index
* graphite.c graphite_transform_loops::bb_pbb_mapping
* sese.c copy_bb_and_scalar_dependences::rename_map
Move hash table declarations to a new graphite-htab.h, because they
are used in few places.
Remove unused:
htab_t scop::original_pddrs
SCOP_ORIGINAL_PDDRS
Remove unused:
insert_loop_close_phis
insert_guard_phis
debug_ivtype_map
ivtype_map_elt_info
new_ivtype_map_elt
* gimplify.c'gimplify_ctx::temp_htab
Move struct gimple_temp_hash_elt and struct gimplify_ctx to a new
gimplify-ctx.h, because they are used few places.
* cselib.c'cselib_hash_table
* gcse.c'pre_ldst_table
* gimple-ssa-strength-reduction.c'base_cand_map
* haifa-sched.c'delay_htab
* haifa-sched.c'delay_htab_i2
* ira-color.c'allocno_hard_regs_htab
* ira-costs.c'cost_classes_htab
* loop-invariant.c'merge_identical_invariants::eq
* loop-iv.c'bivs
* loop-unroll.c'opt_info::insns_to_split
* loop-unroll.c'opt_info::insns_with_var_to_expand
* passes.c'name_to_pass_map
* plugin.c'event_tab
* postreload-gcse.c'expr_table
* store-motion.c'store_motion_mems_table
* tree-cfg.c'discriminator_per_locus
* tree-scalar-evolution.c'resolve_mixers::cache
* tree-ssa-dom.c'avail_exprs
Remove unused:
dse.c bitmap clear_alias_sets
dse.c bitmap disqualified_clear_alias_sets
dse.c alloc_pool clear_alias_mode_pool
dse.c dse_step2_spill
dse.c dse_step5_spill
graphds.h htab_t graph::indices
* attribs.c'scoped_attributes::attribute_hash
* bitmap.c'bitmap_desc_hash
* dwarf2cfi.c'trace_index
* dwarf2out.c'break_out_includes::cu_hash_table
* dwarf2out.c'copy_decls_for_unworthy_types::decl_table
* dwarf2out.c'optimize_external_refs::map
* dwarf2out.c'output_comp_unit::extern_map
* dwarf2out.c'output_comdat_type_unit::extern_map
* dwarf2out.c'output_macinfo::macinfo_htab
* dwarf2out.c'optimize_location_lists::htab
* dwarf2out.c'dwarf2out_finish::comdat_type_table
* except.c'ehspec_hash_type
* except.c'assign_filter_values::ttypes
* except.c'assign_filter_values::ehspec
* except.c'sjlj_assign_call_site_values::ar_hash
* except.c'convert_to_eh_region_ranges::ar_hash
* trans-mem.c'tm_new_mem_hash
* tree-browser.c'TB_up_ht
* tree-eh.c'finally_tree
Move the declaration of hash_table <alloc_pool_hasher> alloc_pool_hash
in alloc-pool.c to after the method definitions for its parameter
class.
* ggc-common.c'loc_hash
* ggc-common.c'ptr_hash
Add a new hash_table method elements_with_deleted to meet the needs of
gcc-common.c.
Correct many methods with parameter types compare_type to the correct
value_type. (Correct code was unlikely to notice the change, but
incorrect code will.)
* tree-complex.c'complex_variable_components
* tree-parloops.c'eliminate_local_variables_stmt::decl_address
* tree-parloops.c'separate_decls_in_region::decl_copies
Move hash table declarations to a new tree-hasher.h, to resolve
compilation dependences and because they are used in few places.
* lto-streamer.h'output_block::string_hash_table
* lto-streamer-in.c'file_name_hash_table
* lto-streamer.c'tree_htab
The struct string_slot moves from data-streamer.h to lto-streamer.h to
resolve compilation dependences.
Tested on x86_64.
Index: gcc/ChangeLog
2013-04-25 Lawrence Crowl <crowl@google.com>
* Makefile.in: Update as needed below.
* alloc-pool.c (static hash_table <alloc_pool_hasher> alloc_pool_hash):
Move declaration to after the type's method definitons.
* attribs.c (htab_t scoped_attributes::attribute_hash):
Change type to hash_table. Update dependent calls and types.
* bitmap.c (htab_t bitmap_desc_hash):
Change type to hash_table. Update dependent calls and types.
* cselib.c (htab_t cselib_hash_table):
Change type to hash_table. Update dependent calls and types.
* data-streamer.h (struct string_slot): Move to lto-streamer.h.
(hash_string_slot_node): Move implementation into lto-streamer.h
struct string_slot_hasher.
(eq_string_slot_node): Likewise.
* data-streamer-out.c: Update output_block::string_hash_table
dependent calls and types.
* dwarf2cfi.c (htab_t trace_index):
Change type to hash_table. Update dependent calls and types.
* dwarf2out.c (htab_t break_out_includes::cu_hash_table):
Change type to hash_table. Update dependent calls and types.
(htab_t copy_decls_for_unworthy_types::decl_table): Likewise.
(htab_t optimize_external_refs::map): Likewise.
(htab_t output_comp_unit::extern_map): Likewise.
(htab_t output_comdat_type_unit::extern_map): Likewise.
(htab_t output_macinfo::macinfo_htab): Likewise.
(htab_t optimize_location_lists::htab): Likewise.
(htab_t dwarf2out_finish::comdat_type_table): Likewise.
* except.c (htab_t ehspec_hash_type):
Change type to hash_table. Update dependent calls and types.
(assign_filter_values::ttypes): Likewise.
(assign_filter_values::ehspec): Likewise.
(sjlj_assign_call_site_values::ar_hash): Likewise.
(convert_to_eh_region_ranges::ar_hash): Likewise.
* gcse.c (htab_t pre_ldst_table):
Change type to hash_table. Update dependent calls and types.
* ggc-common.c (htab_t saving_htab):
Change type to hash_table. Update dependent calls and types.
(htab_t loc_hash): Likewise.
(htab_t ptr_hash): Likewise.
(call_count): Rename ggc_call_count.
(call_alloc): Rename ggc_call_alloc.
(loc_descriptor): Rename make_loc_descriptor.
(add_statistics): Rename ggc_add_statistics.
* ggc-common.c (saving_htab):
Change type to hash_table. Update dependent calls and types.
* gimple.h (struct gimplify_ctx): Move to gimplify-ctx.h.
(push_gimplify_context): Likewise.
(pop_gimplify_context): Likewise.
(struct gimple_temp_hash_elt): Added.
(struct gimplify_hasher): Likewise.
(struct gimplify_ctx.temp_htab):
Change type to hash_table. Update dependent calls and types.
* gimple-fold.c: Include gimplify-ctx.h.
* gimple-ssa-strength-reduction.c (htab_t base_cand_map):
Change type to hash_table. Update dependent calls and types.
(base_cand_dump_callback): Rename to ssa_base_cand_dump_callback to
avoid potential global name collision.
* gimplify.c: Include gimplify-ctx.h.
(struct gimple_temp_hash_elt): Move to gimplify-ctx.h.
(htab_t gimplify_ctx::temp_htab):
Update dependent calls and types for new type hash_table.
(gimple_tree_hash): Move into gimplify_hasher in gimplify-ctx.h.
(gimple_tree_eq): Move into gimplify_hasher in gimplify-ctx.h.
* gimplify-ctx.h: New.
(struct gimple_temp_hash_elt): Move from gimplify.c.
(class gimplify_hasher): New.
(struct gimplify_ctx): Move from gimple.h.
(htab_t gimplify_ctx::temp_htab):
Change type to hash_table. Update dependent calls and types.
* graphite-clast-to-gimple.c: Include graphite-htab.h.
(htab_t ivs_params::newivs_index):
Change type to hash_table. Update dependent calls and types.
(htab_t ivs_params::params_index): Likewise.
(htab_t print_generated_program::params_index): Likewise.
(htab_t gloog::newivs_index): Likewise.
(htab_t gloog::params_index): Likewise.
* graphite.c: Include graphite-htab.h.
4htab_t graphite_transform_loops::bb_pbb_mapping):
Change type to hash_table. Update dependent calls and types.
* graphite-clast-to-gimple.h: (extern gloog) Move to graphite-htab.h.
(bb_pbb_map_hash): Fold into bb_pbb_htab_type in graphite-htab.h.
(eq_bb_pbb_map): Fold into bb_pbb_htab_type in graphite-htab.h.
* graphite-dependences.c: Include graphite-htab.h.
(loop_is_parallel_p): Change hash table type of parameter.
* graphite-htab.h: New.
(typedef hash_table <bb_pbb_hasher> bb_pbb_htab_type): New.
(extern find_pbb_via_hash): Move from graphite-poly.h.
(extern loop_is_parallel_p): Move from graphite-poly.h.
(extern get_loop_body_pbbs): Move from graphite-poly.h.
* graphite-poly.h (extern find_pbb_via_hash): Move to graphite-htab.h.
(extern loop_is_parallel_p): Move to graphite-htab.h.
(extern get_loop_body_pbbs): Move to graphite-htab.h.
* haifa-sched.c (htab_t delay_htab):
Change type to hash_table. Update dependent calls and types.
(htab_t delay_htab_i2): Likewise.
* ira-color.c (htab_t allocno_hard_regs_htab):
Change type to hash_table. Update dependent calls and types.
* ira-costs.c (htab_t cost_classes_htab):
Change type to hash_table. Update dependent calls and types.
* loop-invariant.c (htab_t merge_identical_invariants::eq):
Change type to hash_table. Update dependent calls and types.
* loop-iv.c (htab_t bivs):
Change type to hash_table. Update dependent calls and types.
* loop-unroll.c (htab_t opt_info::insns_to_split):
Change type to hash_table. Update dependent calls and types.
(htab_t opt_info::insns_with_var_to_expand): Likewise.
* lto-streamer.h (struct string_slot): Move from data-streamer.h
(struct string_slot_hasher): New.
(htab_t output_block::string_hash_table):
Change type to hash_table. Update dependent calls and types.
* lto-streamer-in.c (freeing_string_slot_hasher): New.
(htab_t file_name_hash_table):
Change type to hash_table. Update dependent calls and types.
* lto-streamer-out.c: Update output_block::string_hash_table dependent
calls and types.
* lto-streamer.c (htab_t tree_htab):
Change type to hash_table. Update dependent calls and types.
* omp-low.c: Include gimplify-ctx.h.
* passes.c (htab_t name_to_pass_map):
Change type to hash_table. Update dependent calls and types.
(pass_traverse): Rename to passes_pass_traverse.
* plugin.c (htab_t event_tab):
Change type to hash_table. Update dependent calls and types.
* postreload-gcse.c (htab_t expr_table):
Change type to hash_table. Update dependent calls and types.
(dump_hash_table_entry): Rename dump_expr_hash_table_entry.
* sese.c (debug_rename_map_1): Make extern.
(htab_t copy_bb_and_scalar_dependences::rename_map):
Change type to hash_table. Update dependent calls and types.
* sese.h (extern debug_rename_map): Move to .c file.
* store-motion.c (htab_t store_motion_mems_table):
Change type to hash_table. Update dependent calls and types.
* trans-mem.c (htab_t tm_new_mem_hash):
Change type to hash_table. Update dependent calls and types.
* tree-browser.c (htab_t TB_up_ht):
Change type to hash_table. Update dependent calls and types.
* tree-cfg.c (htab_t discriminator_per_locus):
Change type to hash_table. Update dependent calls and types.
* tree-complex.c: Include tree-hasher.h
(htab_t complex_variable_components):
Change type to hash_table. Update dependent calls and types.
* tree-eh.c (htab_t finally_tree):
Change type to hash_table. Update dependent calls and types.
* tree-flow.h (extern int_tree_map_hash): Moved into tree-hasher
struct int_tree_hasher.
(extern int_tree_map_eq): Likewise.
(uid_decl_map_hash): Removed.
(extern decl_tree_map_eq): Likewise.
* tree-hasher.h: New.
(struct int_tree_hasher): New.
(typedef int_tree_htab_type): New.
* tree-inline.c: Include gimplify-ctx.h.
* tree-mudflap.c: Include gimplify-ctx.h.
* tree-parloops.c: Include tree-hasher.h.
(htab_t eliminate_local_variables_stmt::decl_address):
Change type to hash_table. Update dependent calls and types.
(htab_t separate_decls_in_region::decl_copies): Likewise.
* tree-scalar-evolution.c (htab_t resolve_mixers::cache):
Change type to hash_table. Update dependent calls and types.
* tree-sra.c (candidates):
Change type to hash_table. Update dependent calls and types.
* tree-ssa.c (int_tree_map_eq): Moved into struct int_tree_hasher
in tree-flow.h.
(int_tree_map_hash): Likewise.
* tree-ssa-dom.c (htab_t avail_exprs):
Change type to hash_table. Update dependent calls and types.
* tree-ssa-live.c (var_map_base_init::tree_to_index):
Change type to hash_table. Update dependent calls and types.
* tree-ssa-loop-ivopts.c (struct ivopts_data.inv_expr_tab):
Change type to hash_table. Update dependent calls and types.
* tree-ssa-phiopt.c (seen_ssa_names):
Change type to hash_table. Update dependent calls and types.
* tree-ssa-strlen.c (decl_to_stridxlist_htab):
Change type to hash_table. Update dependent calls and types.
* tree-ssa-uncprop.c (equiv):
Change type to hash_table. Update dependent calls and types.
From-SVN: r198329
Diffstat (limited to 'gcc/graphite-clast-to-gimple.c')
-rw-r--r-- | gcc/graphite-clast-to-gimple.c | 186 |
1 files changed, 98 insertions, 88 deletions
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 58a69ed0b4b..dcf8b94eaa1 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -47,6 +47,7 @@ along with GCC; see the file COPYING3. If not see #include "cloog/cloog.h" #include "graphite-poly.h" #include "graphite-clast-to-gimple.h" +#include "graphite-htab.h" typedef const struct clast_expr *clast_name_p; @@ -124,6 +125,55 @@ typedef struct clast_name_index { char *free_name; } *clast_name_index_p; +/* Helper for hashing clast_name_index. */ + +struct clast_index_hasher +{ + typedef clast_name_index value_type; + typedef clast_name_index compare_type; + static inline hashval_t hash (const value_type *); + static inline bool equal (const value_type *, const compare_type *); + static inline void remove (value_type *); +}; + +/* Computes a hash function for database element E. */ + +inline hashval_t +clast_index_hasher::hash (const value_type *e) +{ + hashval_t hash = 0; + + int length = strlen (e->name); + int i; + + for (i = 0; i < length; ++i) + hash = hash | (e->name[i] << (i % 4)); + + return hash; +} + +/* Compares database elements ELT1 and ELT2. */ + +inline bool +clast_index_hasher::equal (const value_type *elt1, const compare_type *elt2) +{ + return strcmp (elt1->name, elt2->name) == 0; +} + +/* Free the memory taken by a clast_name_index struct. */ + +inline void +clast_index_hasher::remove (value_type *c) +{ + if (c->free_name) + free (c->free_name); + mpz_clear (c->bound_one); + mpz_clear (c->bound_two); + free (c); +} + +typedef hash_table <clast_index_hasher> clast_index_htab_type; + /* Returns a pointer to a new element of type clast_name_index_p built from NAME, INDEX, LEVEL, BOUND_ONE, and BOUND_TWO. */ @@ -146,35 +196,22 @@ new_clast_name_index (const char *name, int index, int level, return res; } -/* Free the memory taken by a clast_name_index struct. */ - -static void -free_clast_name_index (void *ptr) -{ - struct clast_name_index *c = (struct clast_name_index *) ptr; - if (c->free_name) - free (c->free_name); - mpz_clear (c->bound_one); - mpz_clear (c->bound_two); - free (ptr); -} - /* For a given clast NAME, returns -1 if NAME is not in the INDEX_TABLE, otherwise returns the loop level for the induction variable NAME, or if it is a parameter, the parameter number in the vector of parameters. */ static inline int -clast_name_to_level (clast_name_p name, htab_t index_table) +clast_name_to_level (clast_name_p name, clast_index_htab_type index_table) { struct clast_name_index tmp; - PTR *slot; + clast_name_index **slot; gcc_assert (name->type == clast_expr_name); tmp.name = ((const struct clast_name *) name)->name; tmp.free_name = NULL; - slot = htab_find_slot (index_table, &tmp, NO_INSERT); + slot = index_table.find_slot (&tmp, NO_INSERT); if (slot && *slot) return ((struct clast_name_index *) *slot)->level; @@ -187,18 +224,18 @@ clast_name_to_level (clast_name_p name, htab_t index_table) SCATTERING_DIMENSIONS vector. */ static inline int -clast_name_to_index (struct clast_name *name, htab_t index_table) +clast_name_to_index (struct clast_name *name, clast_index_htab_type index_table) { struct clast_name_index tmp; - PTR *slot; + clast_name_index **slot; tmp.name = ((const struct clast_name *) name)->name; tmp.free_name = NULL; - slot = htab_find_slot (index_table, &tmp, NO_INSERT); + slot = index_table.find_slot (&tmp, NO_INSERT); if (slot && *slot) - return ((struct clast_name_index *) *slot)->index; + return (*slot)->index; return -1; } @@ -208,16 +245,16 @@ clast_name_to_index (struct clast_name *name, htab_t index_table) found in the INDEX_TABLE, false otherwise. */ static inline bool -clast_name_to_lb_ub (struct clast_name *name, htab_t index_table, +clast_name_to_lb_ub (struct clast_name *name, clast_index_htab_type index_table, mpz_t bound_one, mpz_t bound_two) { struct clast_name_index tmp; - PTR *slot; + clast_name_index **slot; tmp.name = name->name; tmp.free_name = NULL; - slot = htab_find_slot (index_table, &tmp, NO_INSERT); + slot = index_table.find_slot (&tmp, NO_INSERT); if (slot && *slot) { @@ -232,15 +269,15 @@ clast_name_to_lb_ub (struct clast_name *name, htab_t index_table, /* Records in INDEX_TABLE the INDEX and LEVEL for NAME. */ static inline void -save_clast_name_index (htab_t index_table, const char *name, +save_clast_name_index (clast_index_htab_type index_table, const char *name, int index, int level, mpz_t bound_one, mpz_t bound_two) { struct clast_name_index tmp; - PTR *slot; + clast_name_index **slot; tmp.name = name; tmp.free_name = NULL; - slot = htab_find_slot (index_table, &tmp, INSERT); + slot = index_table.find_slot (&tmp, INSERT); if (slot) { @@ -249,35 +286,6 @@ save_clast_name_index (htab_t index_table, const char *name, *slot = new_clast_name_index (name, index, level, bound_one, bound_two); } } - -/* Computes a hash function for database element ELT. */ - -static inline hashval_t -clast_name_index_elt_info (const void *elt) -{ - const struct clast_name_index *e = ((const struct clast_name_index *) elt); - hashval_t hash = 0; - - int length = strlen (e->name); - int i; - - for (i = 0; i < length; ++i) - hash = hash | (e->name[i] << (i % 4)); - - return hash; -} - -/* Compares database elements E1 and E2. */ - -static inline int -eq_clast_name_indexes (const void *e1, const void *e2) -{ - const struct clast_name_index *elt1 = (const struct clast_name_index *) e1; - const struct clast_name_index *elt2 = (const struct clast_name_index *) e2; - - return strcmp (elt1->name, elt2->name) == 0; -} - /* NEWIVS_INDEX binds CLooG's scattering name to the index of the tree @@ -288,7 +296,7 @@ eq_clast_name_indexes (const void *e1, const void *e2) typedef struct ivs_params { vec<tree> params, *newivs; - htab_t newivs_index, params_index; + clast_index_htab_type newivs_index, params_index; sese region; } *ivs_params_p; @@ -300,7 +308,7 @@ clast_name_to_gcc (struct clast_name *name, ivs_params_p ip) { int index; - if (ip->params.exists () && ip->params_index) + if (ip->params.exists () && ip->params_index.is_created ()) { index = clast_name_to_index (name, ip->params_index); @@ -308,7 +316,7 @@ clast_name_to_gcc (struct clast_name *name, ivs_params_p ip) return ip->params[index]; } - gcc_assert (ip->newivs && ip->newivs_index); + gcc_assert (ip->newivs && ip->newivs_index.is_created ()); index = clast_name_to_index (name, ip->newivs_index); gcc_assert (index >= 0); @@ -699,12 +707,12 @@ type_for_clast_name (struct clast_name *name, ivs_params_p ip, mpz_t bound_one, { bool found = false; - if (ip->params.exists () && ip->params_index) + if (ip->params.exists () && ip->params_index.is_created ()) found = clast_name_to_lb_ub (name, ip->params_index, bound_one, bound_two); if (!found) { - gcc_assert (ip->newivs && ip->newivs_index); + gcc_assert (ip->newivs && ip->newivs_index.is_created ()); found = clast_name_to_lb_ub (name, ip->newivs_index, bound_one, bound_two); gcc_assert (found); @@ -1009,13 +1017,14 @@ new_bb_pbb_def (basic_block bb, poly_bb_p pbb) /* 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, htab_t bb_pbb_mapping) +mark_bb_with_pbb (poly_bb_p pbb, basic_block bb, + bb_pbb_htab_type bb_pbb_mapping) { bb_pbb_def tmp; - PTR *x; + bb_pbb_def **x; tmp.bb = bb; - x = htab_find_slot (bb_pbb_mapping, &tmp, INSERT); + x = bb_pbb_mapping.find_slot (&tmp, INSERT); if (x && !*x) *x = new_bb_pbb_def (bb, pbb); @@ -1024,13 +1033,13 @@ mark_bb_with_pbb (poly_bb_p pbb, basic_block bb, htab_t bb_pbb_mapping) /* Find BB's related poly_bb_p in hash table BB_PBB_MAPPING. */ poly_bb_p -find_pbb_via_hash (htab_t bb_pbb_mapping, basic_block bb) +find_pbb_via_hash (bb_pbb_htab_type bb_pbb_mapping, basic_block bb) { bb_pbb_def tmp; - PTR *slot; + bb_pbb_def **slot; tmp.bb = bb; - slot = htab_find_slot (bb_pbb_mapping, &tmp, NO_INSERT); + slot = bb_pbb_mapping.find_slot (&tmp, NO_INSERT); if (slot && *slot) return ((bb_pbb_def *) *slot)->pbb; @@ -1044,7 +1053,7 @@ find_pbb_via_hash (htab_t bb_pbb_mapping, basic_block bb) related poly_bb_p. */ scop_p -get_loop_body_pbbs (loop_p loop, htab_t bb_pbb_mapping, +get_loop_body_pbbs (loop_p loop, bb_pbb_htab_type bb_pbb_mapping, vec<poly_bb_p> *pbbs) { unsigned i; @@ -1074,7 +1083,7 @@ get_loop_body_pbbs (loop_p loop, htab_t bb_pbb_mapping, static edge translate_clast_user (struct clast_user_stmt *stmt, edge next_e, - htab_t bb_pbb_mapping, ivs_params_p ip) + bb_pbb_htab_type bb_pbb_mapping, ivs_params_p ip) { int i, nb_loops; basic_block new_bb; @@ -1143,7 +1152,8 @@ graphite_create_new_loop_guard (edge entry_edge, struct clast_for *stmt, } static edge -translate_clast (loop_p, struct clast_stmt *, edge, htab_t, int, ivs_params_p); +translate_clast (loop_p, struct clast_stmt *, edge, bb_pbb_htab_type, + int, ivs_params_p); /* Create the loop for a clast for statement. @@ -1152,8 +1162,9 @@ translate_clast (loop_p, struct clast_stmt *, edge, htab_t, int, ivs_params_p); static edge translate_clast_for_loop (loop_p context_loop, struct clast_for *stmt, - edge next_e, htab_t bb_pbb_mapping, int level, - tree type, tree lb, tree ub, ivs_params_p ip) + edge next_e, bb_pbb_htab_type bb_pbb_mapping, + int level, tree type, tree lb, tree ub, + ivs_params_p ip) { struct loop *loop = graphite_create_new_loop (next_e, stmt, context_loop, type, lb, ub, level, ip); @@ -1186,7 +1197,8 @@ translate_clast_for_loop (loop_p context_loop, struct clast_for *stmt, static edge translate_clast_for (loop_p context_loop, struct clast_for *stmt, edge next_e, - htab_t bb_pbb_mapping, int level, ivs_params_p ip) + bb_pbb_htab_type bb_pbb_mapping, int level, + ivs_params_p ip) { tree type, lb, ub; edge last_e = graphite_create_new_loop_guard (next_e, stmt, &type, @@ -1244,7 +1256,7 @@ translate_clast_assignment (struct clast_assignment *stmt, edge next_e, static edge translate_clast_guard (loop_p context_loop, struct clast_guard *stmt, - edge next_e, htab_t bb_pbb_mapping, int level, + edge next_e, bb_pbb_htab_type bb_pbb_mapping, int level, ivs_params_p ip) { edge last_e = graphite_create_new_guard (next_e, stmt, ip); @@ -1263,7 +1275,7 @@ translate_clast_guard (loop_p context_loop, struct clast_guard *stmt, static edge translate_clast (loop_p context_loop, struct clast_stmt *stmt, edge next_e, - htab_t bb_pbb_mapping, int level, ivs_params_p ip) + bb_pbb_htab_type bb_pbb_mapping, int level, ivs_params_p ip) { if (!stmt) return next_e; @@ -1304,7 +1316,8 @@ translate_clast (loop_p context_loop, struct clast_stmt *stmt, edge next_e, static CloogUnionDomain * add_names_to_union_domain (scop_p scop, CloogUnionDomain *union_domain, - int nb_scattering_dims, htab_t params_index) + int nb_scattering_dims, + clast_index_htab_type params_index) { sese region = SCOP_REGION (scop); int i; @@ -1547,7 +1560,7 @@ int get_max_scattering_dimensions (scop_p scop) } static CloogInput * -generate_cloog_input (scop_p scop, htab_t params_index) +generate_cloog_input (scop_p scop, clast_index_htab_type params_index) { CloogUnionDomain *union_domain; CloogInput *cloog_input; @@ -1570,7 +1583,7 @@ generate_cloog_input (scop_p scop, htab_t params_index) without a program. */ static struct clast_stmt * -scop_to_clast (scop_p scop, htab_t params_index) +scop_to_clast (scop_p scop, clast_index_htab_type params_index) { CloogInput *cloog_input; struct clast_stmt *clast; @@ -1599,11 +1612,10 @@ void print_generated_program (FILE *file, scop_p scop) { CloogOptions *options = set_cloog_options (); - htab_t params_index; + clast_index_htab_type params_index; struct clast_stmt *clast; - params_index = htab_create (10, clast_name_index_elt_info, - eq_clast_name_indexes, free_clast_name_index); + params_index.create (10); clast = scop_to_clast (scop, params_index); @@ -1629,22 +1641,21 @@ debug_generated_program (scop_p scop) */ bool -gloog (scop_p scop, htab_t bb_pbb_mapping) +gloog (scop_p scop, bb_pbb_htab_type bb_pbb_mapping) { vec<tree> newivs; newivs.create (10); loop_p context_loop; sese region = SCOP_REGION (scop); ifsese if_region = NULL; - htab_t newivs_index, params_index; + clast_index_htab_type newivs_index, params_index; struct clast_stmt *clast; struct ivs_params ip; timevar_push (TV_GRAPHITE_CODE_GEN); gloog_error = false; - params_index = htab_create (10, clast_name_index_elt_info, - eq_clast_name_indexes, free_clast_name_index); + params_index.create (10); clast = scop_to_clast (scop, params_index); @@ -1667,8 +1678,7 @@ gloog (scop_p scop, htab_t bb_pbb_mapping) graphite_verify (); context_loop = SESE_ENTRY (region)->src->loop_father; - newivs_index = htab_create (10, clast_name_index_elt_info, - eq_clast_name_indexes, free_clast_name_index); + newivs_index.create (10); ip.newivs = &newivs; ip.newivs_index = newivs_index; @@ -1690,8 +1700,8 @@ gloog (scop_p scop, htab_t bb_pbb_mapping) free (if_region->region); free (if_region); - htab_delete (newivs_index); - htab_delete (params_index); + newivs_index.dispose (); + params_index.dispose (); newivs.release (); cloog_clast_free (clast); timevar_pop (TV_GRAPHITE_CODE_GEN); |