re PR target/35944 (wrong result for MOD with kind=10 for some array argument values)
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 16 Apr 2008 18:39:08 +0000 (20:39 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 16 Apr 2008 18:39:08 +0000 (20:39 +0200)
        PR target/35944
        * gfortran.dg/pr35944-1.f90: New test.
        * gfortran.dg/pr35944-2.f90: Ditto.

From-SVN: r134359

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr35944-1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr35944-2.f90 [new file with mode: 0644]

index 85f4cb37bcd793866b7c55d92532c83d976eb503..6f60dc33c7d5247b1384482abdd8885bb83ec0d9 100644 (file)
@@ -1,3 +1,9 @@
+2008-04-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR target/35944
+       * gfortran.dg/pr35944-1.f90: New test.
+       * gfortran.dg/pr35944-2.f90: Ditto.
+
 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/35739
 
        * gfortran.dg/bind_c_usage_14.f03: Adjust.
 
-2008-04-08    Andy Hutchinson   <hutchinsonandy@aim.com>
+2008-04-08  Andy Hutchinson  <hutchinsonandy@aim.com>
 
        PR target/35005
        * execute/20071221-1.c: Adapt test for 16 bit int targets.
 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
 
        PR/35842
-        * gcc.dg/torture/pr35842.c: New.
+       * gcc.dg/torture/pr35842.c: New.
 
 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
 
diff --git a/gcc/testsuite/gfortran.dg/pr35944-1.f90 b/gcc/testsuite/gfortran.dg/pr35944-1.f90
new file mode 100644 (file)
index 0000000..76521ca
--- /dev/null
@@ -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 (file)
index 0000000..976332d
--- /dev/null
@@ -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