From e30b0ae2fa5e74b14017fe2af9b7f7743281fe37 Mon Sep 17 00:00:00 2001 From: Diego Novillo Date: Fri, 10 Sep 2004 16:52:45 +0000 Subject: [PATCH] Revert 2004-09-08 Jie Zhang * 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 --- gcc/ChangeLog | 14 +++++++++++++ gcc/tree-ssa-alias.c | 47 +++++++++++++++++++------------------------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 982b268b6d5..a6d96d37967 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2004-09-10 Diego Novillo + + Revert + + 2004-09-08 Jie Zhang + + * 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 * bb-reorder.c, c-common.c, c-incpath.c, c-typeck.c, diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index f00fcc1e97b..cd41fbae49c 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -924,10 +924,6 @@ compute_flow_insensitive_aliasing (struct alias_info *ai) num_tag_refs = VARRAY_UINT (ai->num_references, tag_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_may_alias (tag, var); @@ -1120,29 +1116,8 @@ group_aliases (struct alias_info *ai) sbitmap_a_and_b (res, tag1_aliases, tag2_aliases); if (sbitmap_first_set_bit (res) >= 0) { - size_t k; - 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); /* TAG2 does not need its aliases anymore. */ @@ -1639,6 +1614,16 @@ add_may_alias (tree var, tree alias) if (alias == VARRAY_TREE (v_ann->may_aliases, i)) 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); a_ann->is_alias_tag = 1; } @@ -1651,6 +1636,16 @@ replace_may_alias (tree var, size_t i, tree new_alias) { var_ann_t v_ann = var_ann (var); 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) if (orig_pi) { - dest_pi->pt_global_mem |= orig_pi->pt_global_mem; - /* Notice that we never merge PT_MALLOC. This attribute is only true if the pointer is the result of a malloc() call. Otherwise, we can end up in this situation: -- 2.30.2