From 5c661a44685cb5b0185c5a81c26f41dc2876e9df Mon Sep 17 00:00:00 2001 From: Joost VandeVondele Date: Fri, 6 Nov 2015 09:51:12 +0000 Subject: [PATCH] Add testcases for middle-end/53852 and middle-end/67518 2015-11-06 Joost VandeVondele PR middle-end/53852 PR middle-end/67518 * gfortran.dg/PR67518.f90: New test. * gfortran.dg/PR53852.f90: New test. From-SVN: r229839 --- gcc/testsuite/ChangeLog | 7 +++++ gcc/testsuite/gfortran.dg/PR53852.f90 | 37 ++++++++++++++++++++++ gcc/testsuite/gfortran.dg/PR67518.f90 | 45 +++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/PR53852.f90 create mode 100644 gcc/testsuite/gfortran.dg/PR67518.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c074e7b55e0..af9bd72cb9d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2015-11-06 Joost VandeVondele + + PR middle-end/53852 + PR middle-end/67518 + * gfortran.dg/PR67518.f90: New test. + * gfortran.dg/PR53852.f90: New test. + 2015-11-05 Cesar Philippidis Tom de Vries Nathan Sidwell diff --git a/gcc/testsuite/gfortran.dg/PR53852.f90 b/gcc/testsuite/gfortran.dg/PR53852.f90 new file mode 100644 index 00000000000..f1f1fc5c790 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/PR53852.f90 @@ -0,0 +1,37 @@ +! { dg-do compile } +! { dg-options "-floop-nest-optimize -O2 -ffast-math" } +! PR53852 : compile time / memory hog +SUBROUTINE build_d_tensor_gks(d5f,v,d5) + INTEGER, PARAMETER :: dp=8 + REAL(KIND=dp), DIMENSION(3, 3, 3, 3, 3), & + INTENT(OUT) :: d5f + REAL(KIND=dp), DIMENSION(3), INTENT(IN) :: v + REAL(KIND=dp), INTENT(IN) :: d5 + INTEGER :: k1, k2, k3, k4, k5 + REAL(KIND=dp) :: w + + d5f = 0.0_dp + DO k1=1,3 + DO k2=1,3 + DO k3=1,3 + DO k4=1,3 + DO k5=1,3 + d5f(k5,k4,k3,k2,k1)=d5f(k5,k4,k3,k2,k1)+ & + v(k1)*v(k2)*v(k3)*v(k4)*v(k5)*d5 + ENDDO + w=v(k1)*v(k2)*v(k3)*d4 + d5f(k1,k2,k3,k4,k4)=d5f(k1,k2,k3,k4,k4)+w + d5f(k1,k2,k4,k3,k4)=d5f(k1,k2,k4,k3,k4)+w + d5f(k1,k4,k2,k3,k4)=d5f(k1,k4,k2,k3,k4)+w + d5f(k4,k1,k2,k3,k4)=d5f(k4,k1,k2,k3,k4)+w + d5f(k1,k2,k4,k4,k3)=d5f(k1,k2,k4,k4,k3)+w + d5f(k1,k4,k2,k4,k3)=d5f(k1,k4,k2,k4,k3)+w + d5f(k4,k1,k2,k4,k3)=d5f(k4,k1,k2,k4,k3)+w + d5f(k1,k4,k4,k2,k3)=d5f(k1,k4,k4,k2,k3)+w + d5f(k4,k1,k4,k2,k3)=d5f(k4,k1,k4,k2,k3)+w + d5f(k4,k4,k1,k2,k3)=d5f(k4,k4,k1,k2,k3)+w + ENDDO + ENDDO + ENDDO + ENDDO +END SUBROUTINE build_d_tensor_gks diff --git a/gcc/testsuite/gfortran.dg/PR67518.f90 b/gcc/testsuite/gfortran.dg/PR67518.f90 new file mode 100644 index 00000000000..beb343e6057 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/PR67518.f90 @@ -0,0 +1,45 @@ +! { dg-do compile } +! { dg-options "-floop-nest-optimize -O2 -ffast-math" } +! PR67518 : isl: position out of bounds +MODULE ao_util + INTEGER, PARAMETER :: dp=8 +CONTAINS + FUNCTION exp_radius(l,alpha,threshold,prefactor,epsin) RESULT(radius) + REAL(KIND=dp), INTENT(IN) :: alpha, threshold, prefactor + REAL(KIND=dp), INTENT(IN), OPTIONAL :: epsin + DO + IF (iter.gt.maxiter) THEN + CALL stop_program(routineN,moduleN,1,"exceeded") + ENDIF + ENDDO + CALL stop_program(routineN,moduleN,1,"exceeded") + END FUNCTION exp_radius + FUNCTION exp_radius_very_extended(la_min,la_max,lb_min,lb_max,pab,o1,o2,ra,rb,rp,& + zetp,eps,prefactor,cutoff,epsin) RESULT(radius) + REAL(KIND=dp), DIMENSION(:, :), & + OPTIONAL, POINTER :: pab + REAL(KIND=dp), INTENT(IN) :: ra(3), rb(3), rp(3), zetp, & + eps, prefactor, cutoff + REAL(KIND=dp) :: bini, binj, coef(0:20), & + epsin_local, polycoef(0:60), & + rad_b, s1, s2 + IF (PRESENT(pab)) THEN + ENDIF + DO lxa=0,la_max + DO lxb=0,lb_max + coef(0:la_max+lb_max)=0.0_dp + DO i=0,lxa + DO j=0,lxb + coef(lxa+lxb-i-j)=coef(lxa+lxb-i-j) + bini*binj*s1*s2 + ENDDO + ENDDO + DO i=0,lxa+lxb + polycoef(i)=MAX(polycoef(i),coef(i)) + ENDDO + ENDDO + ENDDO + DO i=0,la_max+lb_max + radius=MAX(radius,exp_radius(i,zetp,eps,polycoef(i),epsin_local) ) + ENDDO + END FUNCTION exp_radius_very_extended +END MODULE ao_util -- 2.30.2