From ddca26d5e56ac59f30514ce7d5da61aa76392954 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 6 Jun 2008 10:11:44 +0000 Subject: [PATCH] 2008-06-06 Richard Guenther * 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 | 8 ++++++ gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.dg/tree-ssa/alias-18.c | 4 +-- gcc/tree-ssa-operands.c | 3 ++- gcc/tree-ssa-structalias.c | 43 ++++++-------------------------- 5 files changed, 24 insertions(+), 38 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b20b53c..8ba854e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-06-06 Richard Guenther + + * 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 * passes.c (execute_ipa_pass_list): Do not regenerate summaries. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d8c177d..fb43d80 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-06-06 Richard Guenther + + * gcc.dg/tree-ssa/alias-18.c: XFAIL some sub-tests. + 2008-06-04 Joseph Myers * lib/target-supports.exp (check_effective_target_powerpc_spu): diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c index 9ef3f2a..84d884e 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c @@ -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" } } */ diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index cdbc442..102ed5a 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -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 "); diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 570c173..d66a4a8 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -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); -- 2.7.4