diff options
author | Richard Biener <rguenther@suse.de> | 2016-02-15 08:42:38 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-02-15 08:42:38 +0000 |
commit | 1c48bff185df422d6f9f980fd02466606be2ccd4 (patch) | |
tree | ced0a83a15fa56f6e17922648bde552b105142be /gcc/tree-ssa-pre.c | |
parent | 9e074c0d6df7096f40fa0a046dfe6401c413d467 (diff) | |
download | gcc-1c48bff185df422d6f9f980fd02466606be2ccd4.zip gcc-1c48bff185df422d6f9f980fd02466606be2ccd4.tar.gz gcc-1c48bff185df422d6f9f980fd02466606be2ccd4.tar.bz2 |
re PR tree-optimization/69776 (Wrong optimization with aliasing)
2016-02-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/69776
* tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
* tree-ssa-sccvn.c (vn_reference_lookup): Add parameter to
indicate whether we can use TBAA to disambiguate against stores.
Use alias-set zero if not.
(visit_reference_op_store): Do not use TBAA when looking up
redundant stores.
* tree-ssa-pre.c (compute_avail): Use TBAA here.
(eliminate_dom_walker::before_dom_children): But not when looking
up redundant stores.
* gcc.dg/torture/pr69776.c: New testcase.
From-SVN: r233418
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 3570ee9..b2d63ac 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -3745,7 +3745,7 @@ compute_avail (void) vn_reference_t ref; vn_reference_lookup (gimple_assign_rhs1 (stmt), gimple_vuse (stmt), - VN_WALK, &ref); + VN_WALK, &ref, true); if (!ref) continue; @@ -4208,7 +4208,7 @@ eliminate_dom_walker::before_dom_children (basic_block b) tree val; tree rhs = gimple_assign_rhs1 (stmt); val = vn_reference_lookup (gimple_assign_lhs (stmt), - gimple_vuse (stmt), VN_WALK, NULL); + gimple_vuse (stmt), VN_WALK, NULL, false); if (TREE_CODE (rhs) == SSA_NAME) rhs = VN_INFO (rhs)->valnum; if (val |