OSDN Git Service

* tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Jun 2007 20:25:23 +0000 (20:25 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Jun 2007 20:25:23 +0000 (20:25 +0000)
flag on ref-all pointers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125656 138bc75d-0d04-0410-961f-82ee72b054a4

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

index e5a53a2..b46c15e 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
+       flag on ref-all pointers.
+
 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        PR middle-end/31579
index cf5dc2b..31911e6 100644 (file)
@@ -2415,8 +2415,14 @@ finalize_ref_all_pointers (struct alias_info *ai)
   for (i = 0; i < ai->num_pointers; i++)
     {
       tree ptr = ai->pointers[i]->var, tag;
+      /* Avoid adding to self and clean up.  */
       if (PTR_IS_REF_ALL (ptr))
-       continue;
+       {
+         struct ptr_info_def *pi = get_ptr_info (ptr);
+         if (pi->is_dereferenced)
+           pi->pt_anything = 0;
+         continue;
+       }
       tag = symbol_mem_tag (ptr);
       if (is_call_clobbered (tag))
        add_may_alias (ai->ref_all_symbol_mem_tag, tag);