Revert
authorDiego Novillo <dnovillo@redhat.com>
Fri, 10 Sep 2004 16:52:45 +0000 (16:52 +0000)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Fri, 10 Sep 2004 16:52:45 +0000 (12:52 -0400)
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

gcc/ChangeLog
gcc/tree-ssa-alias.c

index 982b268b6d5471d00c4cadd1ee2cbc1c3537fa2e..a6d96d3796744a1dbff8a37bc7e77567665c4efa 100644 (file)
@@ -1,3 +1,17 @@
+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>
 
        * bb-reorder.c, c-common.c, c-incpath.c, c-typeck.c,
index f00fcc1e97b6e7f1ecb4918625779f474aecfb99..cd41fbae49ca631e2479c592e5693a08b236f7c9 100644 (file)
@@ -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: