]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-ssa-sccvn.c (vn_reference_eq): Also compare if both bases are dereferenced.
authorRichard Guenther <rguenther@suse.de>
Wed, 25 Jan 2012 15:37:33 +0000 (15:37 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 25 Jan 2012 15:37:33 +0000 (15:37 +0000)
2012-01-25  Richard Guenther  <rguenther@suse.de>

* tree-ssa-sccvn.c (vn_reference_eq): Also compare if both
bases are dereferenced.

From-SVN: r183523

gcc/ChangeLog
gcc/tree-ssa-sccvn.c

index c63ae26518b771aed9e1053c4d65671522601a17..2e80e0af9fb050c8438a0ecee96c1f8e4bbbb240 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-25  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-sccvn.c (vn_reference_eq): Also compare if both
+       bases are dereferenced.
+
 2012-01-24  Richard Guenther  <rguenther@suse.de>
 
        Forward-port to branch
index eb8896907e9955ece7a4360edd764df84eab9d93..6ed076d15b44acd2b14e77ef8d4bf3e06df65cfa 100644 (file)
@@ -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;