From: Uros Bizjak Date: Wed, 16 Apr 2008 18:39:08 +0000 (+0200) Subject: re PR target/35944 (wrong result for MOD with kind=10 for some array argument values) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64bfac414632be741d0e760d2eacfddb0f72a775;p=gcc.git re PR target/35944 (wrong result for MOD with kind=10 for some array argument values) PR target/35944 * gfortran.dg/pr35944-1.f90: New test. * gfortran.dg/pr35944-2.f90: Ditto. From-SVN: r134359 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 85f4cb37bcd..6f60dc33c7d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-04-16 Francois-Xavier Coudert + + PR target/35944 + * gfortran.dg/pr35944-1.f90: New test. + * gfortran.dg/pr35944-2.f90: Ditto. + 2008-04-16 Jakub Jelinek PR c/35739 @@ -212,7 +218,7 @@ * gfortran.dg/bind_c_usage_14.f03: Adjust. -2008-04-08 Andy Hutchinson +2008-04-08 Andy Hutchinson PR target/35005 * execute/20071221-1.c: Adapt test for 16 bit int targets. @@ -250,7 +256,7 @@ 2008-04-07 Kai Tietz PR/35842 - * gcc.dg/torture/pr35842.c: New. + * gcc.dg/torture/pr35842.c: New. 2008-04-07 Eric Botcazou diff --git a/gcc/testsuite/gfortran.dg/pr35944-1.f90 b/gcc/testsuite/gfortran.dg/pr35944-1.f90 new file mode 100644 index 00000000000..76521cad9e9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr35944-1.f90 @@ -0,0 +1,22 @@ +! { dg-do run } + + implicit none + integer i + real rda1(10), rda(10), rval + double precision dda1(10), dda(10), dval + + rda = (/ 1,2,3,4,5,6,7,8,9,10 /) + rDA1 = MOD (1.1*(rDA(1)-5.0), P=(rDA-2.5)) + DO i = 1, 10 + rVAL = MOD (1.1*(rDA(1)-5.0), P=(rDA(i)-2.5)) + if (rval /= rda1(i)) call abort + enddo + + dda = (/ 1,2,3,4,5,6,7,8,9,10 /) + dDA1 = MOD (1.1d0*(dDA(1)-5.0d0), P=(dDA-2.5d0)) + DO i = 1, 10 + dVAL = MOD (1.1d0*(dDA(1)-5.0d0), P=(dDA(i)-2.5d0)) + if (dval /= dda1(i)) call abort + enddo + +end diff --git a/gcc/testsuite/gfortran.dg/pr35944-2.f90 b/gcc/testsuite/gfortran.dg/pr35944-2.f90 new file mode 100644 index 00000000000..976332ded00 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr35944-2.f90 @@ -0,0 +1,15 @@ +! { dg-do run } +! { dg-require-effective-target fortran_large_real } + + implicit none + integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1) + integer :: i + real(k) :: qda1(10), qda(10), qval + + qda = (/ 1,2,3,4,5,6,7,8,9,10 /) + QDA1 = MOD (1.1_k*(QDA(1)-5.0_k), P=(QDA-2.5_k)) + DO i = 1, 10 + QVAL = MOD (1.1_k*(QDA(1)-5.0_k), P=(QDA(i)-2.5_k)) + if (qval /= qda1(i)) call abort + enddo +end