Commit e30b0ae2 by Diego Novillo Committed by Diego Novillo

Revert

	2004-09-08  Jie Zhang  <zhangjie@magima.com.cn>

	    * tree-ssa-alias.c (compute_flow_insensitive_aliasing): If type
	    memory tag is call clobbered, so are its aliases.
	    (group_aliases): When two memory tags being grouped, if one is
	    call clobbered, so are the other and its aliases.
	    (add_may_alias): Remove call-clobbering stuff.
	    (replace_may_alias): Likewise.
	    (merge_pointed_to_info): Merge pt_global_mem

From-SVN: r87306
parent 89dbed81
2004-09-10 Diego Novillo <dnovillo@redhat.com>
Revert
2004-09-08 Jie Zhang <zhangjie@magima.com.cn>
* tree-ssa-alias.c (compute_flow_insensitive_aliasing): If type
memory tag is call clobbered, so are its aliases.
(group_aliases): When two memory tags being grouped, if one is
call clobbered, so are the other and its aliases.
(add_may_alias): Remove call-clobbering stuff.
(replace_may_alias): Likewise.
(merge_pointed_to_info): Merge pt_global_mem
2004-09-10 Kazu Hirata <kazu@cs.umass.edu> 2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
* bb-reorder.c, c-common.c, c-incpath.c, c-typeck.c, * bb-reorder.c, c-common.c, c-incpath.c, c-typeck.c,
......
...@@ -924,10 +924,6 @@ compute_flow_insensitive_aliasing (struct alias_info *ai) ...@@ -924,10 +924,6 @@ compute_flow_insensitive_aliasing (struct alias_info *ai)
num_tag_refs = VARRAY_UINT (ai->num_references, tag_ann->uid); num_tag_refs = VARRAY_UINT (ai->num_references, tag_ann->uid);
num_var_refs = VARRAY_UINT (ai->num_references, v_ann->uid); num_var_refs = VARRAY_UINT (ai->num_references, v_ann->uid);
/* If TAG is call clobbered, so is VAR. */
if (is_call_clobbered (tag))
mark_call_clobbered (var);
/* Add VAR to TAG's may-aliases set. */ /* Add VAR to TAG's may-aliases set. */
add_may_alias (tag, var); add_may_alias (tag, var);
...@@ -1120,29 +1116,8 @@ group_aliases (struct alias_info *ai) ...@@ -1120,29 +1116,8 @@ group_aliases (struct alias_info *ai)
sbitmap_a_and_b (res, tag1_aliases, tag2_aliases); sbitmap_a_and_b (res, tag1_aliases, tag2_aliases);
if (sbitmap_first_set_bit (res) >= 0) if (sbitmap_first_set_bit (res) >= 0)
{ {
size_t k;
tree tag2 = var_ann (ai->pointers[j]->var)->type_mem_tag; tree tag2 = var_ann (ai->pointers[j]->var)->type_mem_tag;
if (!is_call_clobbered (tag1) && is_call_clobbered (tag2))
{
mark_call_clobbered (tag1);
EXECUTE_IF_SET_IN_SBITMAP (tag1_aliases, 0, k,
{
tree var = referenced_var (k);
mark_call_clobbered (var);
});
}
else if (is_call_clobbered (tag1) && !is_call_clobbered (tag2))
{
mark_call_clobbered (tag2);
EXECUTE_IF_SET_IN_SBITMAP (tag2_aliases, 0, k,
{
tree var = referenced_var (k);
mark_call_clobbered (var);
});
}
sbitmap_a_or_b (tag1_aliases, tag1_aliases, tag2_aliases); sbitmap_a_or_b (tag1_aliases, tag1_aliases, tag2_aliases);
/* TAG2 does not need its aliases anymore. */ /* TAG2 does not need its aliases anymore. */
...@@ -1639,6 +1614,16 @@ add_may_alias (tree var, tree alias) ...@@ -1639,6 +1614,16 @@ add_may_alias (tree var, tree alias)
if (alias == VARRAY_TREE (v_ann->may_aliases, i)) if (alias == VARRAY_TREE (v_ann->may_aliases, i))
return; return;
/* If VAR is a call-clobbered variable, so is its new ALIAS.
FIXME, call-clobbering should only depend on whether an address
escapes. It should be independent of aliasing. */
if (is_call_clobbered (var))
mark_call_clobbered (alias);
/* Likewise. If ALIAS is call-clobbered, so is VAR. */
else if (is_call_clobbered (alias))
mark_call_clobbered (var);
VARRAY_PUSH_TREE (v_ann->may_aliases, alias); VARRAY_PUSH_TREE (v_ann->may_aliases, alias);
a_ann->is_alias_tag = 1; a_ann->is_alias_tag = 1;
} }
...@@ -1651,6 +1636,16 @@ replace_may_alias (tree var, size_t i, tree new_alias) ...@@ -1651,6 +1636,16 @@ replace_may_alias (tree var, size_t i, tree new_alias)
{ {
var_ann_t v_ann = var_ann (var); var_ann_t v_ann = var_ann (var);
VARRAY_TREE (v_ann->may_aliases, i) = new_alias; VARRAY_TREE (v_ann->may_aliases, i) = new_alias;
/* If VAR is a call-clobbered variable, so is NEW_ALIAS.
FIXME, call-clobbering should only depend on whether an address
escapes. It should be independent of aliasing. */
if (is_call_clobbered (var))
mark_call_clobbered (new_alias);
/* Likewise. If NEW_ALIAS is call-clobbered, so is VAR. */
else if (is_call_clobbered (new_alias))
mark_call_clobbered (var);
} }
...@@ -1707,8 +1702,6 @@ merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig) ...@@ -1707,8 +1702,6 @@ merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig)
if (orig_pi) if (orig_pi)
{ {
dest_pi->pt_global_mem |= orig_pi->pt_global_mem;
/* Notice that we never merge PT_MALLOC. This attribute is only /* Notice that we never merge PT_MALLOC. This attribute is only
true if the pointer is the result of a malloc() call. true if the pointer is the result of a malloc() call.
Otherwise, we can end up in this situation: Otherwise, we can end up in this situation:
......
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