From 58670766053ca6018328aea6034cb1578b83ff24 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 25 Jan 2012 15:37:33 +0000 Subject: [PATCH] tree-ssa-sccvn.c (vn_reference_eq): Also compare if both bases are dereferenced. 2012-01-25 Richard Guenther * tree-ssa-sccvn.c (vn_reference_eq): Also compare if both bases are dereferenced. From-SVN: r183523 --- gcc/ChangeLog | 5 +++++ gcc/tree-ssa-sccvn.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c63ae26518b7..2e80e0af9fb0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-01-25 Richard Guenther + + * tree-ssa-sccvn.c (vn_reference_eq): Also compare if both + bases are dereferenced. + 2012-01-24 Richard Guenther Forward-port to branch diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index eb8896907e99..6ed076d15b44 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -546,6 +546,7 @@ vn_reference_eq (const void *p1, const void *p2) tem1.type = TREE_TYPE (tem1.op0); tem1.opcode = TREE_CODE (tem1.op0); vro1 = &tem1; + deref1 = false; } if (deref2 && vro2->opcode == ADDR_EXPR) { @@ -554,7 +555,10 @@ vn_reference_eq (const void *p1, const void *p2) tem2.type = TREE_TYPE (tem2.op0); tem2.opcode = TREE_CODE (tem2.op0); vro2 = &tem2; + deref2 = false; } + if (deref1 != deref2) + return false; if (!vn_reference_op_eq (vro1, vro2)) return false; ++j; -- 2.47.2