diff options
author | Richard Guenther <rguenther@suse.de> | 2008-04-23 14:08:25 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-04-23 14:08:25 +0000 |
commit | 17d2c090a10e1ff15d78e4e139f7df7c39a54d4e (patch) | |
tree | 1b094aa3273abc829435f2f6a7c4089e8476d961 /gcc/tree-ssa-structalias.c | |
parent | a7a512beff448f28fc2f9f192e19e30cbf971eba (diff) | |
download | gcc-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.c | 16 |
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) |