diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/graphite/PR67518.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/graphite/PR67518.f90 | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/graphite/PR67518.f90 b/gcc/testsuite/gfortran.dg/graphite/PR67518.f90 new file mode 100644 index 00000000000..beb343e6057 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/graphite/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 |