Commit 8b547e44 by Jan Hubicka Committed by Jan Hubicka

tree-into-ssa.c (rewrite_ssa_into_ssa): Expect ssa_name to return NULL.

	* tree-into-ssa.c (rewrite_ssa_into_ssa):  Expect ssa_name to return
	NULL.
	* tree-ssa-alias.c (init_alias_info): Likewise.
	* tree-ssa.c (verify_flow_sensitive_alias_info): Likewise.
	(verify_ssa): Likewise.
	* tree-ssanames.c (make_ssa_name): Clear out ssa_names arrays.

From-SVN: r87698
parent b8771ace
2004-09-18 Jan Hubicka <jh@suse.cz> 2004-09-18 Jan Hubicka <jh@suse.cz>
* tree-into-ssa.c (rewrite_ssa_into_ssa): Expect ssa_name to return
NULL.
* tree-ssa-alias.c (init_alias_info): Likewise.
* tree-ssa.c (verify_flow_sensitive_alias_info): Likewise.
(verify_ssa): Likewise.
* tree-ssanames.c (make_ssa_name): Clear out ssa_names arrays.
2004-09-18 Jan Hubicka <jh@suse.cz>
* i386.c (legitimize_pic_address): Fix splitting of PLUS with * i386.c (legitimize_pic_address): Fix splitting of PLUS with
huge offset. huge offset.
......
...@@ -1623,7 +1623,8 @@ rewrite_ssa_into_ssa (void) ...@@ -1623,7 +1623,8 @@ rewrite_ssa_into_ssa (void)
sbitmap_free (mark_def_sites_global_data.kills); sbitmap_free (mark_def_sites_global_data.kills);
for (i = 1; i < num_ssa_names; i++) for (i = 1; i < num_ssa_names; i++)
set_current_def (ssa_name (i), NULL_TREE); if (ssa_name (i))
set_current_def (ssa_name (i), NULL_TREE);
/* Insert PHI nodes at dominance frontiers of definition blocks. */ /* Insert PHI nodes at dominance frontiers of definition blocks. */
insert_phi_nodes (dfs, to_rename); insert_phi_nodes (dfs, to_rename);
...@@ -1679,7 +1680,7 @@ rewrite_ssa_into_ssa (void) ...@@ -1679,7 +1680,7 @@ rewrite_ssa_into_ssa (void)
for (i = 1; i < num_ssa_names; i++) for (i = 1; i < num_ssa_names; i++)
{ {
name = ssa_name (i); name = ssa_name (i);
if (!SSA_NAME_AUX (name)) if (!name || !SSA_NAME_AUX (name))
continue; continue;
free (SSA_NAME_AUX (name)); free (SSA_NAME_AUX (name));
......
...@@ -414,7 +414,7 @@ init_alias_info (void) ...@@ -414,7 +414,7 @@ init_alias_info (void)
{ {
tree name = ssa_name (i); tree name = ssa_name (i);
if (!POINTER_TYPE_P (TREE_TYPE (name))) if (!name || !POINTER_TYPE_P (TREE_TYPE (name)))
continue; continue;
if (SSA_NAME_PTR_INFO (name)) if (SSA_NAME_PTR_INFO (name))
......
...@@ -419,6 +419,8 @@ verify_flow_sensitive_alias_info (void) ...@@ -419,6 +419,8 @@ verify_flow_sensitive_alias_info (void)
struct ptr_info_def *pi; struct ptr_info_def *pi;
ptr = ssa_name (i); ptr = ssa_name (i);
if (!ptr)
continue;
ann = var_ann (SSA_NAME_VAR (ptr)); ann = var_ann (SSA_NAME_VAR (ptr));
pi = SSA_NAME_PTR_INFO (ptr); pi = SSA_NAME_PTR_INFO (ptr);
...@@ -466,25 +468,26 @@ verify_flow_sensitive_alias_info (void) ...@@ -466,25 +468,26 @@ verify_flow_sensitive_alias_info (void)
size_t j; size_t j;
for (j = i + 1; j < num_ssa_names; j++) for (j = i + 1; j < num_ssa_names; j++)
{ if (ssa_name (j))
tree ptr2 = ssa_name (j); {
struct ptr_info_def *pi2 = SSA_NAME_PTR_INFO (ptr2); tree ptr2 = ssa_name (j);
struct ptr_info_def *pi2 = SSA_NAME_PTR_INFO (ptr2);
if (!TREE_VISITED (ptr2) || !POINTER_TYPE_P (TREE_TYPE (ptr2)))
continue; if (!TREE_VISITED (ptr2) || !POINTER_TYPE_P (TREE_TYPE (ptr2)))
continue;
if (pi2
&& pi2->name_mem_tag if (pi2
&& pi2->pt_vars && pi2->name_mem_tag
&& bitmap_first_set_bit (pi2->pt_vars) >= 0 && pi2->pt_vars
&& pi->name_mem_tag != pi2->name_mem_tag && bitmap_first_set_bit (pi2->pt_vars) >= 0
&& bitmap_equal_p (pi->pt_vars, pi2->pt_vars)) && pi->name_mem_tag != pi2->name_mem_tag
{ && bitmap_equal_p (pi->pt_vars, pi2->pt_vars))
error ("Two pointers with different name tags and identical points-to sets"); {
debug_variable (ptr2); error ("Two pointers with different name tags and identical points-to sets");
goto err; debug_variable (ptr2);
} goto err;
} }
}
} }
} }
...@@ -524,7 +527,8 @@ verify_ssa (void) ...@@ -524,7 +527,8 @@ verify_ssa (void)
/* Keep track of SSA names present in the IL. */ /* Keep track of SSA names present in the IL. */
for (i = 1; i < num_ssa_names; i++) for (i = 1; i < num_ssa_names; i++)
TREE_VISITED (ssa_name (i)) = 0; if (ssa_name (i))
TREE_VISITED (ssa_name (i)) = 0;
calculate_dominance_info (CDI_DOMINATORS); calculate_dominance_info (CDI_DOMINATORS);
......
...@@ -205,6 +205,8 @@ make_ssa_name (tree var, tree stmt) ...@@ -205,6 +205,8 @@ make_ssa_name (tree var, tree stmt)
memset (t, 0, tree_size (t)); memset (t, 0, tree_size (t));
TREE_SET_CODE (t, SSA_NAME); TREE_SET_CODE (t, SSA_NAME);
SSA_NAME_VERSION (t) = save_version; SSA_NAME_VERSION (t) = save_version;
gcc_assert (ssa_name (save_version) == NULL);
VARRAY_TREE (ssa_names, save_version) = t;
} }
else else
{ {
...@@ -260,6 +262,7 @@ release_ssa_name (tree var) ...@@ -260,6 +262,7 @@ release_ssa_name (tree var)
defining statement. */ defining statement. */
if (! SSA_NAME_IN_FREE_LIST (var)) if (! SSA_NAME_IN_FREE_LIST (var))
{ {
VARRAY_TREE (ssa_names, SSA_NAME_VERSION (var)) = NULL;
SSA_NAME_IN_FREE_LIST (var) = 1; SSA_NAME_IN_FREE_LIST (var) = 1;
TREE_CHAIN (var) = free_ssanames; TREE_CHAIN (var) = free_ssanames;
free_ssanames = var; free_ssanames = var;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment