We miss comparing base/clique so restrict vs. non-restrict refs
appear the same.

Bootstrapped and tested on x86_64-unknown-linux-gnu, stumbled over
when working on PRs 128637 and friends, no actual testcase.

Will push after givin Sashiko a chance to review.

        * tree-ssa-sccvn.cc (vn_reference_eq): When lexically comparing
        also compare base and clique.
---
 gcc/tree-ssa-sccvn.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc
index 82262c11c71..8dd1c92c44b 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -936,6 +936,8 @@ vn_reference_eq (const_vn_reference_t const vr1, 
const_vn_reference_t const vr2,
                      || ! TYPE_SIZE (vro2->type)
                      || ! operand_equal_p (TYPE_SIZE (vro1->type),
                                            TYPE_SIZE (vro2->type))))
+             || vro1->clique != vro2->clique
+             || vro1->base != vro2->base
              || (get_deref_alias_set (vro1->opcode == MEM_REF
                                       ? TREE_TYPE (vro1->op0)
                                       : TREE_TYPE (vro1->op2))
-- 
2.51.0

Reply via email to