From dcead90ecd299239015124a21bff7243a03fe9d3 Mon Sep 17 00:00:00 2001
From: dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 5 Dec 2006 00:44:24 +0000
Subject: [PATCH] 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.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119528 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog              | 24 ++++++++++++++++++++----
 gcc/tree-ssa-alias.c       |  2 ++
 gcc/tree-ssa-structalias.c | 11 ++---------
 gcc/tree-ssa-structalias.h |  1 +
 4 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1de07b1f9c44..8a5b1aacc263 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -3,20 +3,32 @@
 	* builtins.c (fold_builtin_memory_op): Check that expr_size match.
 	* 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>
 	
 	* tree-ssa-alias.c (compute_may_aliases):
 	Compute flow sensitive before flow insensitive.
 	(compute_flow_sensitive_aliasing): Don't try to add
 	a symbol memory tag to itself.
+	
 	* alias.h (alias_set_subset_of): New prototype.
+
 	* alias.c (alias_set_subset_of): New function.
+
 	* tree-ssa-structalias.c: Update comments.
 	(struct variable_info): Add finished_solution.
 	(new_varinfo): Set finished solution to NULL.
 	(var_escaped_vars): Remove.
 	(escaped_vars_tree): Remove.
 	(escaped_vars_id): Remove.
+	(nonlocal_vars_id): Remove.
 	(constraint_expr_type): Add INCLUDES.
 	(graph_size): Removed.
 	(dump_constraint): Support INCLUDES.
@@ -29,7 +41,8 @@
 	(process_constraint): Fix non-field sensitive handling
 	Handle 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.
 	(find_global_initializers): Removed.
 	(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
 	sets, just use the name of the variable it shares it with.
 	(intra_create_variable_infos): Use INCLUDES.
-	Move initialization of nonlocal variable to init_base_vars.
-	(init_base_vars): Init nonlocal variable here.
-	Remove escaped_vars initialization.
+	Change nonlocal variable sets to anything sets.
+	(init_base_vars): Remove escaped_vars and nonlocal_var
+	initialization. 
 	(find_escape_constraints): Removed.
 	(delete_points_to_sets): Remove dead code.
 	(used_smt_calculated): New variable.
 	(set_used_smts): New function.
 	(merge_smts_into): New function.
 	(find_what_p_points_to): Modify to use SMTs.
+	(create_nonlocal_var): Remove.
+	
 	* tree-ssa-operands.c (access_can_touch_variable): Remove
 	reference to nonlocal_all. 
+
 	* tree-ssa.c (verify_name_tags): Remove.
 	
 2006-12-04  Carlos O'Donell  <carlos@codesourcery.com>
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index d4f159015107..163c78d91836 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -1096,6 +1096,8 @@ compute_flow_sensitive_aliasing (struct alias_info *ai)
   size_t i;
   tree ptr;
   
+  set_used_smts ();
+  
   for (i = 0; VEC_iterate (tree, ai->processed_ptrs, i, ptr); i++)
     {
       if (!find_what_p_points_to (ptr))
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 6a27972e7ef3..7fda8b55cc36 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -3876,11 +3876,10 @@ static bitmap used_smts;
    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
    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.  */
 
-static void
+void
 set_used_smts (void)
 {
   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
@@ -4076,12 +4074,10 @@ find_what_p_points_to (tree p)
 		 aliases for the underlying SMT.  */
 	      if (was_pt_anything)
 		{
-		  if (!used_smt_calculated)
-		    set_used_smts ();
 		  merge_smts_into (p, vi);
 		  pi->pt_global_mem = 1;
-
 		}
+
 	      set_uids_in_ptset (vi->decl, vi->finished_solution, vi->solution);
 	      pi->pt_vars = vi->finished_solution;
 	    }
@@ -4324,8 +4320,6 @@ compute_points_to_sets (struct alias_info *ai)
 
   solve_graph (graph);
 
-  used_smt_calculated = false;
-
   if (dump_file)
     dump_sa_points_to_info (dump_file);
 
@@ -4458,7 +4452,6 @@ ipa_pta_execute (void)
     fprintf (dump_file, "\nSolving graph:\n");
 
   solve_graph (graph);
-  set_used_smts ();
 
   if (dump_file)
     dump_sa_points_to_info (dump_file);
diff --git a/gcc/tree-ssa-structalias.h b/gcc/tree-ssa-structalias.h
index 165e5c1b1aef..4a07f2b48644 100644
--- a/gcc/tree-ssa-structalias.h
+++ b/gcc/tree-ssa-structalias.h
@@ -94,5 +94,6 @@ extern void dump_solution_for_var (FILE *, unsigned int);
 extern void debug_solution_for_var (unsigned int);
 extern void dump_sa_points_to_info (FILE *);
 extern void debug_sa_points_to_info (void);
+extern void set_used_smts (void);
 
 #endif /* TREE_SSA_STRUCTALIAS_H  */
-- 
GitLab