aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2006-09-15 16:07:53 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2006-09-15 16:07:53 +0000
commit906d8c784a5e3e9819238cd3f6e253f6f13f8657 (patch)
tree57ace5795f4a819b767e147629a7b057cf05075d
parentf49d5a7eca3baec3ba954934d55eaa24d74e8699 (diff)
downloadgcc-906d8c784a5e3e9819238cd3f6e253f6f13f8657.zip
gcc-906d8c784a5e3e9819238cd3f6e253f6f13f8657.tar.gz
gcc-906d8c784a5e3e9819238cd3f6e253f6f13f8657.tar.bz2
re PR libfortran/29099 (secnds intrinsic gives wrong result)
2006-09-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/29099 * gfortran.dg/secnds-1.f: New test. From-SVN: r116976
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/secnds-1.f24
2 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cc431da..0e52fad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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
* gfortran.dg/streamio_9.f90: New test.
* gfortran.dg/streamio_10.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/secnds-1.f b/gcc/testsuite/gfortran.dg/secnds-1.f
new file mode 100644
index 0000000..7eabb64
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/secnds-1.f
@@ -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