re PR tree-optimization/58955 (wrong code at -O3 on x86_64-linux-gnu)
authorRichard Biener <rguenther@suse.de>
Tue, 5 Nov 2013 15:08:43 +0000 (15:08 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 5 Nov 2013 15:08:43 +0000 (15:08 +0000)
2013-11-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/58955
* tree-loop-distribution.c (pg_add_dependence_edges): Fix
edge direction.

* gcc.dg/torture/pr58955-1.c: New testcase.
* gcc.dg/torture/pr58955-2.c: Likewise.

From-SVN: r204398

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr58955-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr58955-2.c [new file with mode: 0644]
gcc/tree-loop-distribution.c

index 938d62b7dd5bf93f22c257a3cd0b5366ce997ce4..ce16f50cf2ff7803a4a0d2fddf9969d4b527486c 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-05  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/58955
+       * tree-loop-distribution.c (pg_add_dependence_edges): Fix
+       edge direction.
+
 2013-11-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * config/rs6000/vector.md (vec_pack_sfix_trunc_v2df): Adjust for
index 21864c690c7c4a869799f3f2f5a1e52a0b28a090..07e418d4ff197f230acb9005d4c3a9f055fe9389 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-05  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/58955
+       * gcc.dg/torture/pr58955-1.c: New testcase.
+       * gcc.dg/torture/pr58955-2.c: Likewise.
+
 2013-11-05  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR middle-end/58981
diff --git a/gcc/testsuite/gcc.dg/torture/pr58955-1.c b/gcc/testsuite/gcc.dg/torture/pr58955-1.c
new file mode 100644 (file)
index 0000000..a79f42f
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int a, b, c, d[4] = { 0, 0, 0, 1 };
+
+int
+main ()
+{
+  for (; a < 4; a++)
+    {
+      int e = d[a];
+      for (c = 1; c < 1; c++);
+      b = e;
+      d[a] = 0;
+    }
+  if (b != 1)
+    abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr58955-2.c b/gcc/testsuite/gcc.dg/torture/pr58955-2.c
new file mode 100644 (file)
index 0000000..a43860e
--- /dev/null
@@ -0,0 +1,18 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int a, b[10];
+
+int
+main ()
+{
+  for (; a < 2; a++)
+    {
+      b[a] = 1;
+      b[a + 1] = 0;
+    }
+  if (b[1] != 1)
+    abort ();
+  return 0;
+}
index 79884bf4272621fcb556ed38afec54899ab991d5..4f9b848847a9718c3b6bfac07d7eab34aa209b0a 100644 (file)
@@ -1324,7 +1324,7 @@ pg_add_dependence_edges (struct graph *rdg, vec<loop_p> loops, int dir,
   for (int ii = 0; drs1.iterate (ii, &dr1); ++ii)
     for (int jj = 0; drs2.iterate (jj, &dr2); ++jj)
       {
-       int this_dir = 1;
+       int this_dir = -1;
        ddr_p ddr;
        /* Re-shuffle data-refs to be in dominator order.  */
        if (rdg_vertex_for_stmt (rdg, DR_STMT (dr1))