aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-07-05 12:53:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-07-05 12:53:19 +0000
commit66076dcb60bee1c3d2c41ced5424ada90149d7fc (patch)
tree431adab5eac9b66fbd7b156897aab342aa7b3950
parentfb4697e30bd0cd4bda66932e21c183273a5d1e63 (diff)
downloadgcc-66076dcb60bee1c3d2c41ced5424ada90149d7fc.zip
gcc-66076dcb60bee1c3d2c41ced5424ada90149d7fc.tar.gz
gcc-66076dcb60bee1c3d2c41ced5424ada90149d7fc.tar.bz2
tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize RHS when comparing against a store with possibly the same value.
2019-07-05 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize RHS when comparing against a store with possibly the same value. * gcc.dg/tree-ssa/ssa-fre-77.c: New testcase. From-SVN: r273136
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c13
-rw-r--r--gcc/tree-ssa-sccvn.c6
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6dd97ab..15d7919 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2019-07-05 Richard Biener <rguenther@suse.de>
+ * tree-ssa-sccvn.c (vn_reference_lookup_3): Valueize RHS
+ when comparing against a store with possibly the same value.
+
+2019-07-05 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/91091
* tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter.
(walk_non_aliased_vuses): Likewise.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5656a5b2e..a57c230 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2019-07-05 Richard Biener <rguenther@suse.de>
+ * gcc.dg/tree-ssa/ssa-fre-77.c: New testcase.
+
+2019-07-05 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/91091
* gcc.dg/tree-ssa/pr91091-2.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-70.c: Likewise.
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c
new file mode 100644
index 0000000..115f277
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-fre1" } */
+
+int foo (int *p, int *q)
+{
+ int x;
+ *p = 1;
+ x = *p;
+ *q = x;
+ return *p;
+}
+
+/* { dg-final { scan-tree-dump "return 1;" "fre1" } } */
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 6d4ad75..67d51bf 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -2047,9 +2047,11 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
if (res && res != (void *)-1)
{
vn_reference_t vnresult = (vn_reference_t) res;
+ tree rhs = gimple_assign_rhs1 (def_stmt);
+ if (TREE_CODE (rhs) == SSA_NAME)
+ rhs = SSA_VAL (rhs);
if (vnresult->result
- && operand_equal_p (vnresult->result,
- gimple_assign_rhs1 (def_stmt), 0))
+ && operand_equal_p (vnresult->result, rhs, 0))
return res;
}
}