aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-11-28 00:41:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2013-11-28 00:41:56 +0100
commite1b60626151424a379e33339e9531a66adcc3af8 (patch)
tree89eebf346920c4e4b999059de1075134a1329684 /gcc
parent64ae6dd6bac1b8ff397576488200013ee4fb7956 (diff)
downloadgcc-e1b60626151424a379e33339e9531a66adcc3af8.zip
gcc-e1b60626151424a379e33339e9531a66adcc3af8.tar.gz
gcc-e1b60626151424a379e33339e9531a66adcc3af8.tar.bz2
re PR middle-end/57393 (error: definition in block 4 follows the use / internal compiler error: verify_ssa failed)
PR middle-end/57393 PR tree-optimization/58018 PR tree-optimization/58131 * gcc.dg/torture/pr57393-1.c: New test. * gcc.dg/torture/pr57393-2.c: New test. * gcc.dg/torture/pr57393-3.c: New test. * gcc.dg/torture/pr58018.c: New test. * gcc.dg/torture/pr58131.c: New test. * gfortran.dg/pr57393-1.f90: New test. * gfortran.dg/pr57393-2.f90: New test. From-SVN: r205466
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog13
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57393-1.c15
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57393-2.c16
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57393-3.c20
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr58018.c22
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr58131.c22
-rw-r--r--gcc/testsuite/gfortran.dg/pr57393-1.f9038
-rw-r--r--gcc/testsuite/gfortran.dg/pr57393-2.f9010
8 files changed, 156 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cbe6131..4cb559c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2013-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/57393
+ PR tree-optimization/58018
+ PR tree-optimization/58131
+ * gcc.dg/torture/pr57393-1.c: New test.
+ * gcc.dg/torture/pr57393-2.c: New test.
+ * gcc.dg/torture/pr57393-3.c: New test.
+ * gcc.dg/torture/pr58018.c: New test.
+ * gcc.dg/torture/pr58131.c: New test.
+ * gfortran.dg/pr57393-1.f90: New test.
+ * gfortran.dg/pr57393-2.f90: New test.
+
2013-11-27 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gfortran.dg/nan_7.f90: Disable for little endian PowerPC.
diff --git a/gcc/testsuite/gcc.dg/torture/pr57393-1.c b/gcc/testsuite/gcc.dg/torture/pr57393-1.c
new file mode 100644
index 0000000..e62d44d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr57393-1.c
@@ -0,0 +1,15 @@
+/* PR middle-end/57393 */
+/* { dg-do compile } */
+/* { dg-additional-options "-g -ffast-math" } */
+
+extern void bar (double);
+
+struct S { int n; };
+
+void
+foo (struct S s, double a, int i, int j, int k)
+{
+ struct S t;
+ bar (s.n * a * i * j);
+ t.n = s.n * a * i * k;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr57393-2.c b/gcc/testsuite/gcc.dg/torture/pr57393-2.c
new file mode 100644
index 0000000..b9b12ff
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr57393-2.c
@@ -0,0 +1,16 @@
+/* PR middle-end/57393 */
+/* { dg-do compile } */
+
+char a;
+
+foo (int **p)
+{
+ int b;
+ for (;;)
+ {
+ int c[1] = { 0 };
+ unsigned *d = &c[0];
+ for (b = 7; b; b--)
+ **p &= --*d >= a;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr57393-3.c b/gcc/testsuite/gcc.dg/torture/pr57393-3.c
new file mode 100644
index 0000000..34cece0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr57393-3.c
@@ -0,0 +1,20 @@
+/* PR middle-end/57393 */
+/* { dg-do compile } */
+
+int a, b, c;
+void foo (void);
+
+int
+bar (void)
+{
+ for (;;)
+ {
+ foo ();
+ int d = a = 0;
+ for (; a < 7; ++a)
+ {
+ d--;
+ b &= c <= d;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr58018.c b/gcc/testsuite/gcc.dg/torture/pr58018.c
new file mode 100644
index 0000000..52c8e83
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr58018.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/58018 */
+/* { dg-do compile } */
+
+int a, b, c, d, e;
+
+void
+bar (int p)
+{
+ int f = b;
+ e &= p <= (f ^= 0);
+}
+
+void
+foo ()
+{
+ for (; d; d++)
+ {
+ bar (a && c);
+ bar (0);
+ bar (1);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr58131.c b/gcc/testsuite/gcc.dg/torture/pr58131.c
new file mode 100644
index 0000000..3f68d4c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr58131.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/58131 */
+/* { dg-do compile } */
+
+short a;
+int b, c, d[1][4][2];
+
+void
+foo (void)
+{
+ int *e;
+ for (b = 1; ; b--)
+ {
+ if (*e)
+ break;
+ for (c = 2; c >= 0; c--)
+ {
+ *e |= d[0][3][b] != a;
+ int *f = &d[0][3][b];
+ *f = 0;
+ }
+ }
+}
diff --git a/gcc/testsuite/gfortran.dg/pr57393-1.f90 b/gcc/testsuite/gfortran.dg/pr57393-1.f90
new file mode 100644
index 0000000..6b2cb1b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr57393-1.f90
@@ -0,0 +1,38 @@
+! PR middle-end/57393
+! { dg-do compile }
+! { dg-options "-g -O2 -ffast-math" }
+
+SUBROUTINE pr57393(nn,e,g,t0,t1,t2,t3,t4,t5,t6,t7,&
+ t8,t9,t10,t11,t12,t13,t14,t15,&
+ t16,t17,t18,t19,t20,t21,t22,t23,&
+ t24,t25,t26,t27,t28,t29,t30,&
+ t31,t32,t33,t34,t35,t36,t37,t38,&
+ t39,t40,t41,t42,t43,t44,t45,t46,t47)
+ IMPLICIT REAL*8 (t)
+ INTEGER, PARAMETER :: dp=8
+ REAL(kind=dp) :: e(nn)
+ DO ii=1,nn
+ t48 = 0.1955555555e2_dp * t1 * t2 + &
+ 0.6000000000e1_dp * t3 * t4 * t5
+ t49 = 0.1620000000e3_dp * t6 * t7 * t8 + &
+ 0.1080000000e3_dp * t6 * t9 * t5 - &
+ 0.6000000000e1_dp * t10 * t20 * t21 * t55 - &
+ 0.2400000000e2_dp * t10 * t11 * t12 - &
+ 0.1200000000e2_dp * t13 * t14 * t15
+ t50 = t49 + t16
+ t51 = (3 * t17 * t18 * t19) + &
+ (t22 * t23 * t19) + (t50 * t19) - &
+ 0.3333333336e0_dp * t24 * t25
+ t52 = 0.1555555556e1_dp * t26 * t27 * t12 + &
+ (t51 + t28 + t29 + t30) * &
+ 0.3125000000e0_dp * t31 * t32 * t33 * t34
+ t53 = -0.1000000001e1_dp * t35 * t36 * t5 - &
+ (t37 + t38 + t39 + t52) - &
+ 0.8333333340e-1_dp * t40 * t41 * t42
+ t54 = -0.1000000001e1_dp * t43 * t44 * t45 - &
+ t47 * (t46 + t53)
+ IF (g >= 3 .OR. g == -3) THEN
+ e(ii) = e(ii) + t54 * t0
+ END IF
+ END DO
+END SUBROUTINE pr57393
diff --git a/gcc/testsuite/gfortran.dg/pr57393-2.f90 b/gcc/testsuite/gfortran.dg/pr57393-2.f90
new file mode 100644
index 0000000..fafa8f9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr57393-2.f90
@@ -0,0 +1,10 @@
+! PR middle-end/57393
+! { dg-do compile }
+! { dg-options "-g -O2" }
+
+SUBROUTINE pr57393 ( a1, a2, a3, a4, a5, a6, a7 )
+ COMPLEX(kind=8), DIMENSION(:), INTENT(IN) :: a1
+ INTEGER, DIMENSION(:), INTENT(IN) :: a2, a3, a5, a6
+ COMPLEX(kind=8), DIMENSION(:), INTENT(INOUT) :: a4
+ a4(a6(1)+1:a6(1)+a5(1))=a1(a3(1)+1:a3(1)+a2(1))
+END SUBROUTINE pr57393