re PR tree-optimization/77937 (ICE: in replace_one_candidate, at gimple-ssa-strength...
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 13 Oct 2016 19:50:41 +0000 (19:50 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Thu, 13 Oct 2016 19:50:41 +0000 (19:50 +0000)
2016-10-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/77937
* gcc.dg/torture/pr77937-1.c: New.
* gcc.dg/torture/pr77937-2.c: New.

From-SVN: r241139

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr77937-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr77937-2.c [new file with mode: 0644]

index 5e31162e2c68e547c2f75d48351884f9b3041beb..0960e08ce6d7946d0ce269623d9d6c37e28b44ce 100644 (file)
@@ -1,3 +1,9 @@
+2016-10-13  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/77937
+       * gcc.dg/torture/pr77937-1.c: New.
+       * gcc.dg/torture/pr77937-2.c: New.
+
 2016-10-13  Jakub Jelinek  <jakub@redhat.com>
 
        * g++.dg/cpp1z/inline-var1.C: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/pr77937-1.c b/gcc/testsuite/gcc.dg/torture/pr77937-1.c
new file mode 100644 (file)
index 0000000..5f921fd
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-do options "-O3 -march=amdfam10" { target { x86_64-*-* } } } */
+
+int *a;
+int b, c, d;
+void fn1(char *p1, int p2) {
+  int x;
+  while (1) {
+    x = 0;
+    for (; x < 8; x++)
+      p1[0] = -a[0] * d + p1[0] * c + 1 >> b >> 1;
+    p1 += p2;
+  }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr77937-2.c b/gcc/testsuite/gcc.dg/torture/pr77937-2.c
new file mode 100644 (file)
index 0000000..1c3dfc1
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-do options "-O3 -march=amdfam10" { target { x86_64-*-* } } } */
+
+extern int fn2(int);
+extern int fn3(int);
+int a, b, c;
+void fn1(long p1) {
+  char *d;
+  for (;; d += p1) {
+    d[0] = fn2(1 >> a);
+    fn3(0);
+    fn3(c >> a);
+    d[1] = fn3(d[1] * b + c >> a);
+    d[4] = fn3(d[4] * b + c >> a);
+    d[5] = fn3(d[5] * b + c >> a);
+  }
+}