re PR tree-optimization/60196 (Incorrect compilation with -fwrapv and -ftree-vectorize)
authorJakub Jelinek <jakub@redhat.com>
Mon, 8 Sep 2014 20:15:31 +0000 (22:15 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 8 Sep 2014 20:15:31 +0000 (22:15 +0200)
PR tree-optimization/60196
PR tree-optimization/63189
* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

From-SVN: r215025

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr60196-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr60196-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr63189.c [new file with mode: 0644]

index cd4650c610acd458ad8965d9e0dd41b5460009c2..cce4f264bde892dd09c3fe0483d47ca0c6e1b889 100644 (file)
@@ -1,3 +1,11 @@
+2014-09-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/60196
+       PR tree-optimization/63189
+       * gcc.dg/vect/pr63189.c: New test.
+       * gcc.dg/vect/pr60196-1.c: New test.
+       * gcc.dg/vect/pr60196-2.c: New test.
+
 2014-09-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * gcc.target/powerpc/swaps-p8-16.c: New test.
diff --git a/gcc/testsuite/gcc.dg/vect/pr60196-1.c b/gcc/testsuite/gcc.dg/vect/pr60196-1.c
new file mode 100644 (file)
index 0000000..10ed4af
--- /dev/null
@@ -0,0 +1,34 @@
+/* PR tree-optimization/63189 */
+/* { dg-additional-options "-fwrapv" } */
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+__attribute__((noinline, noclone)) static int
+bar (const short *a, int len)
+{
+  int x;
+  int x1 = 0;
+
+  for (x = 0; x < len; x++)
+    x1 += x * a[x];
+  return x1;
+}
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+  short stuff[9] = {1, 1, 1, 1, 1, 1, 1, 1, 1 };
+  if (bar (stuff, 9) != 36)
+    abort ();
+}
+
+int
+main ()
+{
+  check_vect ();
+  foo ();
+  return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr60196-2.c b/gcc/testsuite/gcc.dg/vect/pr60196-2.c
new file mode 100644 (file)
index 0000000..b2059c2
--- /dev/null
@@ -0,0 +1,33 @@
+/* PR tree-optimization/63189 */
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+static const short a[8] = {1, 1, 1, 1, 1, 1, 1, 1 };
+static const unsigned char b[8] = {0, 0, 0, 0, 0, 0, 0, 0 };
+
+__attribute__((noinline, noclone)) static int
+bar (void)
+{
+  int sum = 0, i;
+  for (i = 0; i < 8; ++i)
+    sum += a[i] * b[i];
+  return sum;
+}
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+  if (bar () != 0)
+    abort ();
+}
+
+int
+main ()
+{
+  check_vect ();
+  foo ();
+  return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr63189.c b/gcc/testsuite/gcc.dg/vect/pr63189.c
new file mode 100644 (file)
index 0000000..da6fba4
--- /dev/null
@@ -0,0 +1,26 @@
+/* PR tree-optimization/63189 */
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+short int d[16] = { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+  int j, s = 0;
+  for (j = 0; j < 8; j++)
+    s += d[j] * j;
+  if (s != 7)
+    abort ();
+}
+
+int
+main ()
+{
+  check_vect ();
+  foo ();
+  return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */