diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2005-06-30 22:18:42 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2005-06-30 22:18:42 +0000 |
commit | a3648cfc0c331051ae47bedcc40c561f9979673a (patch) | |
tree | 93a9e5ca3a3ce97f70134506548b6bda75edd769 /gcc/tree-dfa.c | |
parent | 114a6b1d3b76098db6ab09765a3d5b21926fd639 (diff) | |
download | gcc-a3648cfc0c331051ae47bedcc40c561f9979673a.tar.gz |
[multiple changes]
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.
From-SVN: r101480
Diffstat (limited to 'gcc/tree-dfa.c')
-rw-r--r-- | gcc/tree-dfa.c | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 0fa9b2c977b..5cfbe1c9aee 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -83,7 +83,7 @@ static void add_referenced_var (tree, struct walk_state *); /* Global declarations. */ /* Array of all variables referenced in the function. */ -VEC(tree,gc) *referenced_vars; +htab_t referenced_vars; /*--------------------------------------------------------------------------- @@ -230,14 +230,14 @@ make_rename_temp (tree type, const char *prefix) void dump_referenced_vars (FILE *file) { - size_t i; - + tree var; + referenced_var_iterator rvi; + fprintf (file, "\nReferenced variables in %s: %u\n\n", get_name (current_function_decl), (unsigned) num_referenced_vars); - - for (i = 0; i < num_referenced_vars; i++) + + FOR_EACH_REFERENCED_VAR (var, rvi) { - tree var = referenced_var (i); fprintf (file, "Variable: "); dump_variable (file, var); fprintf (file, "\n"); @@ -278,7 +278,7 @@ dump_variable (FILE *file, tree var) ann = var_ann (var); - fprintf (file, ", UID %u", (unsigned) ann->uid); + fprintf (file, ", UID %u", (unsigned) DECL_UID (var)); fprintf (file, ", "); print_generic_expr (file, TREE_TYPE (var), dump_flags); @@ -528,6 +528,36 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data) } +/* Lookup UID in the referenced_vars hashtable and return the associated + variable. */ + +tree +referenced_var_lookup (unsigned int uid) +{ + struct int_tree_map *h, in; + in.uid = uid; + h = htab_find_with_hash (referenced_vars, &in, uid); + gcc_assert (h || uid == 0); + if (h) + return h->to; + return NULL_TREE; +} + +/* Insert the pair UID, TO into the referenced_vars hashtable. */ + +static void +referenced_var_insert (unsigned int uid, tree to) +{ + struct int_tree_map *h; + void **loc; + + h = ggc_alloc (sizeof (struct int_tree_map)); + h->uid = uid; + h->to = to; + loc = htab_find_slot_with_hash (referenced_vars, h, uid, INSERT); + *(struct int_tree_map **) loc = h; +} + /* Add VAR to the list of dereferenced variables. WALK_STATE contains a hash table used to avoid adding the same @@ -555,8 +585,8 @@ add_referenced_var (tree var, struct walk_state *walk_state) intrinsic to the variable. */ if (slot) *slot = (void *) var; - v_ann->uid = num_referenced_vars; - VEC_safe_push (tree, gc, referenced_vars, var); + + referenced_var_insert (DECL_UID (var), var); /* Global variables are always call-clobbered. */ if (is_global_var (var)) @@ -646,7 +676,7 @@ mark_new_vars_to_rename (tree stmt) { if (!DECL_P (val)) val = SSA_NAME_VAR (val); - bitmap_set_bit (vars_in_vops_to_rename, var_ann (val)->uid); + bitmap_set_bit (vars_in_vops_to_rename, DECL_UID (val)); } /* Now force an operand re-scan on the statement and mark any newly |