diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-30 22:18:42 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-30 22:18:42 +0000 |
commit | a55dc2cd86f718c1ad76ce7d418c9a8a44b2440b (patch) | |
tree | 93a9e5ca3a3ce97f70134506548b6bda75edd769 /gcc/tree-ssa.c | |
parent | eb8c35b0e5b145fd1af8ec1337194ecc967ad753 (diff) | |
download | gcc-a55dc2cd86f718c1ad76ce7d418c9a8a44b2440b.tar.gz |
2005-06-29 Daniel Berlin <dberlin@dberlin.org>
* tree-complex.c (complex_variable_components): Now a hashtable.
(cvc_lookup): Ditto.
(cvc_insert): Ditto.
(create_components): Use referenced var iterator.
Initialize hashtable. Use cvc_insert/lookup.
(extract_components): Use cvc_insert/lookup.
(update_complex_components): Ditto.
(update_complex_components_on_edge): Ditto.
* tree-dfa.c (referenced_vars): Now a hashtable.
(dump_referenced_vars): Use iterator.
(referenced_var_lookup): New function.
(referenced_var_insert): Ditto.
(add_referenced_var): Use referenced_var_insert.
(mark_new_vars_to_rename): Use DECL_UID.
* tree-flow-inline.h (first_htab_element): New function.
(end_htab_p): Ditto.
(next_htab_element): Ditto.
(first_referenced_var): Ditto.
(end_referenced_vars_p): Ditto.
(next_referenced_var): Ditto.
(is_call_clobbered): Use DECL_UID.
(mark_call_clobbered): Ditto.
(clear_call_clobbered): Ditto.
(mark_non_addressable): Ditto.
* tree-flow.h (htab_iterator): New struct.
(FOR_EACH_HTAB_ELEMENT): New macro.
(struct int_tree_map): New struct.
(int_tree_map_hash): Prototype.
(int_tree_map_eq): Ditto.
(referenced_var_iterator): Ditto.
(FOR_EACH_REFERENCED_VAR): New macro.
(referenced_vars): Now a hashtable.
* tree-into-ssa.c (symbol_marked_for_renaming): Use DECL_UID.
(add_new_name_mapping): Ditto.
(mark_def_sites): Ditto.
(insert_phi_nodes): Use referenced_var iterator.
(mark_def_site_blocks): Ditto.
(mark_sym_for_renaming): Use DECL_UID.
* tree-sra.c (is_sra_candidate_decl): Use DECL_UID.
(lookup_element): Ditto.
(find_candidates_for_sra): Use referenced_vars iterator.
Use DECL_UID.
* tree-ssa-alias.c (NUM_REFERENCES): New macro.
(NUM_REFERENCES_CLEAR): Ditto.
(NUM_REFERENCES_INC): Ditto.
(NUM_REFERENCES_SET): Ditto.
(alias_obstack): New bitmap obstack.
(struct alias_map_d): Use bitmap, not sbitmap.
(struct alias_info): Remove num_references.
(init_alias_info): Use referenced_var iterator.
Initialize bitmap obstack.
(delete_alias_info): Use referenced_var iterator.
Free bitmap obstack.
(compute_points_to_and_addr_escape): Use DECL_UID.
Use new NUM_REFERENCES macros.
(compute_flow_sensitive_aliasing): may_aliases is now a bitmap.
Use new NUM_REFERENCES macros.
(group_aliases_into): Update prototype to use bitmap.
(setup_pointers_and_addressables): Use referenced_vars iterator.
Use DECL_UID. Use new NUM_REFERENCES macros.
(add_pointed_to_var): Use DECL_UID.
(dump_alias_info): Use referenced_var iterator.
(add_type_alias): Ditto.
(used_portions): Now a hashtable.
(used_part_map_eq): New function.
(used_part_map_hash): Ditto.
(free_used_part_map): Ditto.
(up_lookup): Ditto.
(up_insert): Ditto.
(get_or_create_used_part_for): Use up_lookup.
(create_overlap_variables_for): Ditto.
(find_used_portions): Use up_insert.
Use DECL_UID.
(create_structure_vars): Init used_portions hashtable, use
referenced_vars iterator.
* tree-ssa-live.c (create_ssa_var_map): sbitmaps became bitmaps.
Use DECL_UID.
* tree-ssa-loop-im.c (gather_mem_refs_stmt): Use DECL_UID.
* tree-ssa-operands.c (get_asm_expr_operands): Ditto.
(note_addressable): Ditto.
* tree-ssa-structalias.c (set_uids_in_ptset): Ditto.
* tree-ssa.c (verify_flow_insensitive_alias_info): Use
referenced_var iterator.
Use DECL_UID.
(delete_tree_ssa): Ditto.
(int_tree_map_eq): New function.
(int_tree_map_hash): Ditto.
* tree-stdarg.c (find_va_list_reference): Use DECL_UID.
(va_list_ptr_read): Ditto.
(va_list_counter_struct_op): Ditto.
(va_list_ptr_write): Ditto.
(check_va_list_escapes): Ditto.
(check_all_va_list_escapes): Ditto.
(execute_optimize_stdarg): Ditto.
* tree-tailcall.c (suitable_for_tail_opt_p): Used referenced_var
iterator.
2005-06-30 Daniel Berlin <dberlin@dberlin.org>
* hashtab.h (HTAB_DELETED_ENTRY): New macro.
(HTAB_EMPTY_ENTRY): New macro.
2005-06-30 Daniel Berlin <dberlin@dberlin.org>
* hashtab.c (EMPTY_ENTRY): Moved and renamed.
(DELETED_ENTRY): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 1a09ef93acf..9836bb184fd 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -373,17 +373,16 @@ error: static void verify_flow_insensitive_alias_info (void) { - size_t i; tree var; bitmap visited = BITMAP_ALLOC (NULL); + referenced_var_iterator rvi; - for (i = 0; i < num_referenced_vars; i++) + FOR_EACH_REFERENCED_VAR (var, rvi) { size_t j; var_ann_t ann; varray_type may_aliases; - var = referenced_var (i); ann = var_ann (var); may_aliases = ann->may_aliases; @@ -391,7 +390,7 @@ verify_flow_insensitive_alias_info (void) { tree alias = VARRAY_TREE (may_aliases, j); - bitmap_set_bit (visited, var_ann (alias)->uid); + bitmap_set_bit (visited, DECL_UID (alias)); if (!may_be_aliased (alias)) { @@ -402,16 +401,14 @@ verify_flow_insensitive_alias_info (void) } } - for (i = 0; i < num_referenced_vars; i++) + FOR_EACH_REFERENCED_VAR (var, rvi) { var_ann_t ann; - - var = referenced_var (i); ann = var_ann (var); if (ann->mem_tag_kind == NOT_A_TAG && ann->is_alias_tag - && !bitmap_bit_p (visited, ann->uid)) + && !bitmap_bit_p (visited, DECL_UID (var))) { error ("Addressable variable that is an alias tag but is not in any alias set."); goto err; @@ -554,13 +551,13 @@ verify_name_tags (void) for (i = 0; aliases && i < VARRAY_ACTIVE_SIZE (aliases); i++) { tree alias = VARRAY_TREE (aliases, i); - bitmap_set_bit (type_aliases, var_ann (alias)->uid); + bitmap_set_bit (type_aliases, DECL_UID (alias)); } /* When grouping, we may have added PTR's type tag into the alias set of PTR's name tag. To prevent a false positive, pretend that TMT is in its own alias set. */ - bitmap_set_bit (type_aliases, var_ann (tmt)->uid); + bitmap_set_bit (type_aliases, DECL_UID (tmt)); if (bitmap_equal_p (type_aliases, pi->pt_vars)) continue; @@ -780,13 +777,31 @@ err: internal_error ("verify_ssa failed."); } +/* Return true if the uid in both int tree maps are equal. */ + +int +int_tree_map_eq (const void *va, const void *vb) +{ + const struct int_tree_map *a = va, *b = vb; + return (a->uid == b->uid); +} + +/* Hash a UID in a int_tree_map. */ + +unsigned int +int_tree_map_hash (const void *item) +{ + return ((const struct int_tree_map *)item)->uid; +} + /* Initialize global DFA and SSA structures. */ void init_tree_ssa (void) { - referenced_vars = VEC_alloc (tree, gc, 20); + referenced_vars = htab_create_ggc (20, int_tree_map_hash, + int_tree_map_eq, NULL); call_clobbered_vars = BITMAP_ALLOC (NULL); addressable_vars = BITMAP_ALLOC (NULL); init_ssanames (); @@ -804,6 +819,8 @@ delete_tree_ssa (void) size_t i; basic_block bb; block_stmt_iterator bsi; + referenced_var_iterator rvi; + tree var; /* Release any ssa_names still in use. */ for (i = 0; i < num_ssa_names; i++) @@ -833,13 +850,13 @@ delete_tree_ssa (void) } /* Remove annotations from every referenced variable. */ - for (i = 0; i < num_referenced_vars; i++) + FOR_EACH_REFERENCED_VAR (var, rvi) { - tree var = referenced_var (i); ggc_free (var->common.ann); var->common.ann = NULL; } - VEC_free (tree, gc, referenced_vars); + htab_delete (referenced_vars); + referenced_vars = NULL; fini_ssanames (); fini_phinodes (); |