[tree-ssa]: PTA fixes
Daniel Berlin
dberlin@dberlin.org
Tue Jun 3 03:07:00 GMT 2003
Just working my way through the testsuite.
2003-06-02 Daniel Berlin <dberlin@dberlin.org>
* tree-dfa.c (compute_may_aliases): Call delete_alias_vars whenever we
call create_alias_vars.
* tree-alias-common (ptr_may_alias_var): Cleanup determination of
global vars and whatnot.
Index: tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-dfa.c,v
retrieving revision 1.1.4.116
diff -u -3 -p -r1.1.4.116 tree-dfa.c
--- tree-dfa.c 2 Jun 2003 18:49:53 -0000 1.1.4.116
+++ tree-dfa.c 3 Jun 2003 02:13:28 -0000
@@ -1588,6 +1588,13 @@ compute_may_aliases (fndecl)
aliased_objects_found = htab_create (50, htab_hash_pointer, htab_eq_pointer,
NULL);
+ if (flag_tree_points_to != PTA_NONE)
+ {
+ timevar_push (TV_TREE_PTA);
+ create_alias_vars (fndecl);
+ timevar_pop (TV_TREE_PTA);
+ }
+
walk_state.vars_found = vars_found;
walk_state.aliased_objects_found = aliased_objects_found;
walk_state.is_store = 0;
@@ -1601,16 +1608,10 @@ compute_may_aliases (fndecl)
htab_delete (vars_found);
htab_delete (aliased_objects_found);
- if (flag_tree_points_to != PTA_NONE && num_aliased_objects)
- {
- timevar_push (TV_TREE_PTA);
- create_alias_vars (fndecl);
- timevar_pop (TV_TREE_PTA);
- }
compute_alias_sets ();
- if (flag_tree_points_to != PTA_NONE && num_aliased_objects)
+ if (flag_tree_points_to != PTA_NONE)
{
timevar_push (TV_TREE_PTA);
delete_alias_vars ();
Index: tree-alias-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-alias-common.c,v
retrieving revision 1.1.2.27
diff -u -3 -p -r1.1.2.27 tree-alias-common.c
--- tree-alias-common.c 1 Jun 2003 05:55:57 -0000 1.1.2.27
+++ tree-alias-common.c 3 Jun 2003 02:13:28 -0000
@@ -73,6 +73,7 @@ struct tree_alias_ops *current_alias_ops
*/
static varray_type local_alias_vars;
static varray_type local_alias_varnums;
+
static tree currptadecl;
static alias_typevar get_alias_var_decl PARAMS ((tree));
static alias_typevar get_alias_var PARAMS ((tree));
@@ -192,7 +193,7 @@ get_alias_var_decl (decl)
{
VARRAY_PUSH_INT (local_alias_varnums,
VARRAY_ACTIVE_SIZE (alias_vars) - 1);
- VARRAY_PUSH_GENERIC_PTR (local_alias_vars, decl);
+ VARRAY_PUSH_TREE (local_alias_vars, decl);
}
}
return newvar;
@@ -691,7 +692,7 @@ find_func_decls (tp, walk_subtrees, data
create_alias_var (DECL_STMT_DECL (*tp));
VARRAY_PUSH_INT (local_alias_varnums,
VARRAY_ACTIVE_SIZE (alias_vars) - 1);
- VARRAY_PUSH_GENERIC_PTR (local_alias_vars, DECL_STMT_DECL (*tp));
+ VARRAY_PUSH_TREE (local_alias_vars, DECL_STMT_DECL (*tp));
}
return NULL_TREE;
}
@@ -999,7 +1000,7 @@ delete_alias_vars ()
for (i = 0; i < VARRAY_ACTIVE_SIZE (local_alias_vars); i++)
{
- entry.key = VARRAY_GENERIC_PTR (local_alias_vars, i);
+ entry.key = VARRAY_TREE (local_alias_vars, i);
if (!DECL_P (entry.key))
{
htab_remove_elt (alias_annot, &entry);
@@ -1029,11 +1030,13 @@ void
init_alias_vars ()
{
current_alias_ops->init (current_alias_ops);
- VARRAY_GENERIC_PTR_INIT (local_alias_vars, 10, "Local alias vars");
+ VARRAY_TREE_INIT (local_alias_vars, 10, "Local alias vars");
VARRAY_INT_INIT (local_alias_varnums, 10, "Local alias varnums");
- if ((!current_alias_ops->ip && !current_alias_ops->ip_partial) || alias_vars == NULL)
+ if ((!current_alias_ops->ip && !current_alias_ops->ip_partial)
+ || alias_vars == NULL)
VARRAY_GENERIC_PTR_INIT (alias_vars, 10, "Alias vars");
- if ((!current_alias_ops->ip && !current_alias_ops->ip_partial) || alias_annot == NULL)
+ if ((!current_alias_ops->ip && !current_alias_ops->ip_partial)
+ || alias_annot == NULL)
alias_annot = htab_create_ggc (7, annot_hash, annot_eq, NULL);
}
@@ -1076,14 +1079,15 @@ ptr_may_alias_var (ptr, var)
ptrcontext = decl_function_context (ptr);
if (varcontext != NULL)
varcontext = decl_function_context (var);
-
+ if (ptrcontext == NULL)
+ ptr = global_var;
+ if (varcontext == NULL)
+ var = global_var;
if (ptr == var || (ptrcontext == NULL && varcontext == NULL))
return true;
if (DECL_P (ptr))
{
ptrtv = DECL_PTA_TYPEVAR (ptr);
- if (ptrcontext == NULL)
- ptrtv = DECL_PTA_TYPEVAR (global_var);
if (!ptrtv && !current_alias_ops->ip && ptr != global_var)
abort ();
else if (!ptrtv)
@@ -1091,10 +1095,7 @@ ptr_may_alias_var (ptr, var)
}
else
{
- if (ptrcontext == NULL)
- entry.key = global_var;
- else
- entry.key = ptr;
+ entry.key = ptr;
result = htab_find (alias_annot, &entry);
if (!result && !current_alias_ops->ip && ptr != global_var)
abort ();
@@ -1105,8 +1106,6 @@ ptr_may_alias_var (ptr, var)
if (DECL_P (var))
{
vartv = DECL_PTA_TYPEVAR (var);
- if (varcontext == NULL)
- vartv = DECL_PTA_TYPEVAR (global_var);
if (!vartv && !current_alias_ops->ip && var != global_var)
abort ();
else if (!vartv)
@@ -1114,10 +1113,7 @@ ptr_may_alias_var (ptr, var)
}
else
{
- if (varcontext == NULL)
- entry.key = global_var;
- else
- entry.key = var;
+ entry.key = var;
result = htab_find (alias_annot, &entry);
if (!result && !current_alias_ops->ip && var != global_var)
abort ();
More information about the Gcc-patches
mailing list