OSDN Git Service

2008-06-06 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Jun 2008 10:11:44 +0000 (10:11 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Jun 2008 10:11:44 +0000 (10:11 +0000)
* tree-ssa-structalias.c (merge_smts_into): Remove.
(find_what_p_points_to): Do not bother to compute the
points-to set for pt_anything pointers.
* tree-ssa-operands.c (get_addr_dereference_operands): No NMT
for pt_anything pointers is ok.

* gcc.dg/tree-ssa/alias-18.c: XFAIL some sub-tests.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
gcc/tree-ssa-operands.c
gcc/tree-ssa-structalias.c

index b20b53c..8ba854e 100644 (file)
@@ -1,3 +1,11 @@
+2008-06-06  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-structalias.c (merge_smts_into): Remove.
+       (find_what_p_points_to): Do not bother to compute the
+       points-to set for pt_anything pointers.
+       * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
+       for pt_anything pointers is ok.
+
 2008-06-06  Jan Hubicka  <jh@suse.cz>
 
        * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
index d8c177d..fb43d80 100644 (file)
@@ -1,3 +1,7 @@
+2008-06-06  Richard Guenther  <rguenther@suse.de>
+
+       * gcc.dg/tree-ssa/alias-18.c: XFAIL some sub-tests.
+
 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
 
        * lib/target-supports.exp (check_effective_target_powerpc_spu):
index 9ef3f2a..84d884e 100644 (file)
@@ -78,10 +78,10 @@ int test8 (struct A *p, int *q)
 
 /* { dg-final { scan-tree-dump "with 0" "fre" } } */
 /* { dg-final { scan-tree-dump "with 1" "fre" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump "with 3" "fre" } } */
+/* { dg-final { scan-tree-dump "with 3" "fre" { xfail *-*-* } } } */
 /* { dg-final { scan-tree-dump "with 4" "fre" } } */
 /* { dg-final { scan-tree-dump "with 5" "fre" } } */
-/* { dg-final { scan-tree-dump "with 8" "fre" } } */
+/* { dg-final { scan-tree-dump "with 8" "fre" { xfail *-*-* } } } */
 /* { dg-final { scan-tree-dump-not "return 2;" "optimized" } } */
 /* { dg-final { scan-tree-dump-not "return 6;" "optimized" } } */
 /* { dg-final { scan-tree-dump-not "return 7;" "optimized" } } */
index cdbc442..102ed5a 100644 (file)
@@ -1523,7 +1523,8 @@ get_addr_dereference_operands (tree stmt, tree *addr, int flags, tree full_ref,
          if (dump_file
              && TREE_CODE (ptr) == SSA_NAME
              && (pi == NULL
-                 || pi->name_mem_tag == NULL_TREE))
+                 || (pi->name_mem_tag == NULL_TREE
+                     && !pi->pt_anything)))
            {
              fprintf (dump_file,
                  "NOTE: no flow-sensitive alias info for ");
index 570c173..d66a4a8 100644 (file)
@@ -4721,32 +4721,6 @@ set_used_smts (void)
     }
 }
 
-/* Merge the necessary SMT's into the bitmap INTO, which is
-   P's varinfo.  This involves merging all SMT's that are a subset of
-   the SMT necessary for P. */
-
-static void
-merge_smts_into (tree p, bitmap solution)
-{
-  tree smt;
-  bitmap aliases;
-  tree var = p;
-
-  if (TREE_CODE (p) == SSA_NAME)
-    var = SSA_NAME_VAR (p);
-
-  smt = var_ann (var)->symbol_mem_tag;
-  if (smt)
-    {
-      /* The smt itself isn't included in its aliases.  */
-      bitmap_set_bit (solution, DECL_UID (smt));
-
-      aliases = MTAG_ALIASES (smt);
-      if (aliases)
-       bitmap_ior_into (solution, aliases);
-    }
-}
-
 /* Given a pointer variable P, fill in its points-to set, or return
    false if we can't.
    Rather than return false for variables that point-to anything, we
@@ -4828,19 +4802,18 @@ find_what_p_points_to (tree p)
                }
            }
 
+         /* Instead of doing extra work, simply do not create
+            points-to information for pt_anything pointers.  This
+            will cause the operand scanner to fall back to the
+            type-based SMT and its aliases.  Which is the best
+            we could do here for the points-to set as well.  */
+         if (was_pt_anything)
+           return false;
+
          /* Share the final set of variables when possible.  */
          finished_solution = BITMAP_GGC_ALLOC ();
          stats.points_to_sets_created++;
 
-         /* 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.  */
-         if (was_pt_anything)
-           {
-             merge_smts_into (p, finished_solution);
-             pi->pt_global_mem = 1;
-           }
-
          set_uids_in_ptset (p, finished_solution, vi->solution,
                             vi->directly_dereferenced,
                             vi->no_tbaa_pruning);