OSDN Git Service

* tree-ssa-structalias.c (find_what_p_points_to): Return false
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jun 2007 15:40:52 +0000 (15:40 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jun 2007 15:40:52 +0000 (15:40 +0000)
for ref-all pointers that point-to anything.

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

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

index 13cb914..a441479 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-ssa-structalias.c (find_what_p_points_to): Return false
+       for ref-all pointers that point-to anything.
+
 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
 
        * config/arm/arm.c (arm_output_dwarf_dtprel,
index 6b470b3..d351bf5 100644 (file)
@@ -4540,12 +4540,19 @@ find_what_p_points_to (tree p)
          finished_solution = BITMAP_GGC_ALLOC ();
          stats.points_to_sets_created++;
          
-         /* Instead of using pt_anything, we instead merge in the SMT
-            aliases for the underlying SMT.  In addition, if they
-            could have pointed to anything, they could point to
-            global memory.  */
+         /* Instead of using pt_anything, we merge in the SMT aliases
+            for the underlying SMT.  In addition, if they could have
+            pointed to anything, they could point to global memory.
+            But we cannot do that for ref-all pointers because these
+            aliases have not been computed yet.  */
          if (was_pt_anything)
            {
+             if (PTR_IS_REF_ALL (p))
+               {
+                 pi->pt_anything = 1;
+                 return false;
+               }
+
              merge_smts_into (p, finished_solution);
              pi->pt_global_mem = 1;
            }