aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-04-23 14:08:25 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-04-23 14:08:25 +0000
commit17d2c090a10e1ff15d78e4e139f7df7c39a54d4e (patch)
tree1b094aa3273abc829435f2f6a7c4089e8476d961 /gcc/tree-ssa-structalias.c
parenta7a512beff448f28fc2f9f192e19e30cbf971eba (diff)
downloadgcc-17d2c090a10e1ff15d78e4e139f7df7c39a54d4e.zip
gcc-17d2c090a10e1ff15d78e4e139f7df7c39a54d4e.tar.gz
gcc-17d2c090a10e1ff15d78e4e139f7df7c39a54d4e.tar.bz2
re PR tree-optimization/27799 (adding unused char field inhibits optimization)
2008-04-23 Richard Guenther <rguenther@suse.de> PR tree-optimization/27799 PR tree-optimization/32921 PR tree-optimization/32624 * tree-ssa-structalias.c (merge_smts_into): Only merge the SMTs aliases and the tag itself into the solution. * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not merge the points-to solution back into the SMT aliases. (may_alias_p): Use alias_set_subset_of instead of aliases_conflict_p. A pointer which points to memory with alias set zero may access any variable. * gcc.dg/tree-ssa/pr27799.c: New testcase. * gcc.dg/tree-ssa/20030807-7.c: Remove xfail, scan vrp dump. From-SVN: r134598
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 5323a2ba..9a8afb7 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4861,8 +4861,6 @@ set_used_smts (void)
static void
merge_smts_into (tree p, bitmap solution)
{
- unsigned int i;
- bitmap_iterator bi;
tree smt;
bitmap aliases;
tree var = p;
@@ -4873,20 +4871,8 @@ merge_smts_into (tree p, bitmap solution)
smt = var_ann (var)->symbol_mem_tag;
if (smt)
{
- alias_set_type smtset = get_alias_set (TREE_TYPE (smt));
-
- /* Need to set the SMT subsets first before this
- will work properly. */
+ /* The smt itself isn't included in its aliases. */
bitmap_set_bit (solution, DECL_UID (smt));
- EXECUTE_IF_SET_IN_BITMAP (used_smts, 0, i, bi)
- {
- tree newsmt = referenced_var (i);
- tree newsmttype = TREE_TYPE (newsmt);
-
- if (alias_set_subset_of (get_alias_set (newsmttype),
- smtset))
- bitmap_set_bit (solution, i);
- }
aliases = MTAG_ALIASES (smt);
if (aliases)