re PR libfortran/29099 (secnds intrinsic gives wrong result)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 15 Sep 2006 16:07:53 +0000 (16:07 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 15 Sep 2006 16:07:53 +0000 (16:07 +0000)
2006-09-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/29099
* gfortran.dg/secnds-1.f: New test.

From-SVN: r116976

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/secnds-1.f [new file with mode: 0644]

index cc431da2d7e659e4e4a3ff4273dd64f2f2528945..0e52fad14c5c86e6a52711b2c44de1241c4939cf 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/29099
+       * gfortran.dg/secnds-1.f: New test.
+
 2006-09-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/29053
diff --git a/gcc/testsuite/gfortran.dg/secnds-1.f b/gcc/testsuite/gfortran.dg/secnds-1.f
new file mode 100644 (file)
index 0000000..7eabb64
--- /dev/null
@@ -0,0 +1,24 @@
+C { dg-do run }
+C Tests fix for PR29099 - SECNDS intrinsic wrong result with no delay.
+C Note1: The test uses +/-20ms accuracy in the check that
+C date_and_time and secnds give the same values.
+C
+C Contributed by Paul Thomas  <pault@gcc.gnu.org>
+C
+      character*20 dum1, dum2, dum3
+      real t1, t2
+      real dat1, dat2
+      real dt
+      integer i, j, values(8)
+      dt = 40e-3
+      t1 = secnds (0.0)
+      call date_and_time (dum1, dum2, dum3, values)
+      dat1 = 0.001*real (values(8)) + real (values(7)) +
+     &        60.0*real (values(6)) + 3600.0* real (values(5))
+      if (int ((dat1 - t1 + dt * 0.5) / dt) .ne. 0) call abort ()
+      call date_and_time (dum1, dum2, dum3, values)
+      dat2 = 0.001*real (values(8)) + real (values(7)) +
+     &        60.0*real (values(6)) + 3600.0* real (values(5))
+      t2 = secnds (t1)
+      if (int ((dat1-dat2 + t2 + dt * 0.5) / dt) .ne. 0.0) call abort ()
+      end