tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call set_used_smts.

2006-12-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
	set_used_smts.
	* tree-ssa-structalias.c (set_used_smts): Export.
	(find_what_p_points_to): Don't call set_used_smts here.
	* tree-ssa-structalias.h (set_used_smts): Add prototype.

From-SVN: r119528
This commit is contained in:
Daniel Berlin 2006-12-05 00:44:24 +00:00 committed by Daniel Berlin
parent b8d85341b6
commit e5ebbea51e
4 changed files with 25 additions and 13 deletions

View file

@ -3,20 +3,32 @@
* builtins.c (fold_builtin_memory_op): Check that expr_size match. * builtins.c (fold_builtin_memory_op): Check that expr_size match.
* explow.c (expr_size, int_expr_size): Assert that size is non_NULL. * explow.c (expr_size, int_expr_size): Assert that size is non_NULL.
2006-12-04 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
set_used_smts.
* tree-ssa-structalias.c (set_used_smts): Export.
(find_what_p_points_to): Don't call set_used_smts here.
* tree-ssa-structalias.h (set_used_smts): Add prototype.
2006-12-04 Daniel Berlin <dberlin@dberlin.org> 2006-12-04 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (compute_may_aliases): * tree-ssa-alias.c (compute_may_aliases):
Compute flow sensitive before flow insensitive. Compute flow sensitive before flow insensitive.
(compute_flow_sensitive_aliasing): Don't try to add (compute_flow_sensitive_aliasing): Don't try to add
a symbol memory tag to itself. a symbol memory tag to itself.
* alias.h (alias_set_subset_of): New prototype. * alias.h (alias_set_subset_of): New prototype.
* alias.c (alias_set_subset_of): New function. * alias.c (alias_set_subset_of): New function.
* tree-ssa-structalias.c: Update comments. * tree-ssa-structalias.c: Update comments.
(struct variable_info): Add finished_solution. (struct variable_info): Add finished_solution.
(new_varinfo): Set finished solution to NULL. (new_varinfo): Set finished solution to NULL.
(var_escaped_vars): Remove. (var_escaped_vars): Remove.
(escaped_vars_tree): Remove. (escaped_vars_tree): Remove.
(escaped_vars_id): Remove. (escaped_vars_id): Remove.
(nonlocal_vars_id): Remove.
(constraint_expr_type): Add INCLUDES. (constraint_expr_type): Add INCLUDES.
(graph_size): Removed. (graph_size): Removed.
(dump_constraint): Support INCLUDES. (dump_constraint): Support INCLUDES.
@ -29,7 +41,8 @@
(process_constraint): Fix non-field sensitive handling (process_constraint): Fix non-field sensitive handling
Handle includes. Handle includes.
(get_constraint_for): Use INCLUDES. (get_constraint_for): Use INCLUDES.
(make_constraint_from_escaped): Use nonlocal_vars_id. (make_constraint_from_anything): Renamed from
make_constraint_from_escaped.
(make_constraint_to_escaped): Removed. (make_constraint_to_escaped): Removed.
(find_global_initializers): Removed. (find_global_initializers): Removed.
(create_variable_info_for): Do not make constraints to escaped (create_variable_info_for): Do not make constraints to escaped
@ -37,17 +50,20 @@
(dump_solution_for_var): Don't print out the equivalent points-to (dump_solution_for_var): Don't print out the equivalent points-to
sets, just use the name of the variable it shares it with. sets, just use the name of the variable it shares it with.
(intra_create_variable_infos): Use INCLUDES. (intra_create_variable_infos): Use INCLUDES.
Move initialization of nonlocal variable to init_base_vars. Change nonlocal variable sets to anything sets.
(init_base_vars): Init nonlocal variable here. (init_base_vars): Remove escaped_vars and nonlocal_var
Remove escaped_vars initialization. initialization.
(find_escape_constraints): Removed. (find_escape_constraints): Removed.
(delete_points_to_sets): Remove dead code. (delete_points_to_sets): Remove dead code.
(used_smt_calculated): New variable. (used_smt_calculated): New variable.
(set_used_smts): New function. (set_used_smts): New function.
(merge_smts_into): New function. (merge_smts_into): New function.
(find_what_p_points_to): Modify to use SMTs. (find_what_p_points_to): Modify to use SMTs.
(create_nonlocal_var): Remove.
* tree-ssa-operands.c (access_can_touch_variable): Remove * tree-ssa-operands.c (access_can_touch_variable): Remove
reference to nonlocal_all. reference to nonlocal_all.
* tree-ssa.c (verify_name_tags): Remove. * tree-ssa.c (verify_name_tags): Remove.
2006-12-04 Carlos O'Donell <carlos@codesourcery.com> 2006-12-04 Carlos O'Donell <carlos@codesourcery.com>

View file

@ -1096,6 +1096,8 @@ compute_flow_sensitive_aliasing (struct alias_info *ai)
size_t i; size_t i;
tree ptr; tree ptr;
set_used_smts ();
for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++) for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
{ {
if (!find_what_p_points_to (ptr)) if (!find_what_p_points_to (ptr))

View file

@ -3876,11 +3876,10 @@ static bitmap used_smts;
calculation being a bit co-dependent, we can't just calculate SMT calculation being a bit co-dependent, we can't just calculate SMT
used info whenever we want, we have to calculate it around the time used info whenever we want, we have to calculate it around the time
that find_what_p_points_to is called. */ that find_what_p_points_to is called. */
static bool used_smt_calculated;
/* Mark which SMT's are in use by points-to anything variables. */ /* Mark which SMT's are in use by points-to anything variables. */
static void void
set_used_smts (void) set_used_smts (void)
{ {
int i; int i;
@ -3926,7 +3925,6 @@ set_used_smts (void)
} }
} }
} }
used_smt_calculated = true;
} }
/* Merge the necessary SMT's into the solution set for VI, which is /* Merge the necessary SMT's into the solution set for VI, which is
@ -4076,12 +4074,10 @@ find_what_p_points_to (tree p)
aliases for the underlying SMT. */ aliases for the underlying SMT. */
if (was_pt_anything) if (was_pt_anything)
{ {
if (!used_smt_calculated)
set_used_smts ();
merge_smts_into (p, vi); merge_smts_into (p, vi);
pi->pt_global_mem = 1; pi->pt_global_mem = 1;
} }
set_uids_in_ptset (vi->decl, vi->finished_solution, vi->solution); set_uids_in_ptset (vi->decl, vi->finished_solution, vi->solution);
pi->pt_vars = vi->finished_solution; pi->pt_vars = vi->finished_solution;
} }
@ -4324,8 +4320,6 @@ compute_points_to_sets (struct alias_info *ai)
solve_graph (graph); solve_graph (graph);
used_smt_calculated = false;
if (dump_file) if (dump_file)
dump_sa_points_to_info (dump_file); dump_sa_points_to_info (dump_file);
@ -4458,7 +4452,6 @@ ipa_pta_execute (void)
fprintf (dump_file, "\nSolving graph:\n"); fprintf (dump_file, "\nSolving graph:\n");
solve_graph (graph); solve_graph (graph);
set_used_smts ();
if (dump_file) if (dump_file)
dump_sa_points_to_info (dump_file); dump_sa_points_to_info (dump_file);

View file

@ -94,5 +94,6 @@ extern void dump_solution_for_var (FILE *, unsigned int);
extern void debug_solution_for_var (unsigned int); extern void debug_solution_for_var (unsigned int);
extern void dump_sa_points_to_info (FILE *); extern void dump_sa_points_to_info (FILE *);
extern void debug_sa_points_to_info (void); extern void debug_sa_points_to_info (void);
extern void set_used_smts (void);
#endif /* TREE_SSA_STRUCTALIAS_H */ #endif /* TREE_SSA_STRUCTALIAS_H */