aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-02-15 08:42:38 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-02-15 08:42:38 +0000
commit1c48bff185df422d6f9f980fd02466606be2ccd4 (patch)
treeced0a83a15fa56f6e17922648bde552b105142be /gcc/tree-ssa-pre.c
parent9e074c0d6df7096f40fa0a046dfe6401c413d467 (diff)
downloadgcc-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.c4
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