diff options
author | Richard Guenther <rguenther@suse.de> | 2008-06-06 10:11:44 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-06-06 10:11:44 +0000 |
commit | 9f09b13fd4154c8290dde9ce8ae277e2f2b91b10 (patch) | |
tree | 4e5835ccc889c0b51de1aa0ac9c19be9affe52c4 /gcc/tree-ssa-structalias.c | |
parent | 9fbe48c0a4e67fe6762cf2dc251b5b2f3eef9c03 (diff) | |
download | gcc-9f09b13fd4154c8290dde9ce8ae277e2f2b91b10.zip gcc-9f09b13fd4154c8290dde9ce8ae277e2f2b91b10.tar.gz gcc-9f09b13fd4154c8290dde9ce8ae277e2f2b91b10.tar.bz2 |
tree-ssa-structalias.c (merge_smts_into): Remove.
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.
* gcc.dg/tree-ssa/alias-18.c: XFAIL some sub-tests.
From-SVN: r136428
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r-- | gcc/tree-ssa-structalias.c | 43 |
1 files changed, 8 insertions, 35 deletions
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); |