aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/intrinsics/time_1.h10
2 files changed, 13 insertions, 2 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index e5f79e0..3dfde05 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-23 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/53456
+ * intrinsics/time_1.h (gf_gettime): Fallback for clock_gettime.
+
2012-05-23 Robert Mason <rbmj@verizon.net>
Tobias Burnus <burnus@net-b.de>
diff --git a/libgfortran/intrinsics/time_1.h b/libgfortran/intrinsics/time_1.h
index aaca56a..ca5b26b 100644
--- a/libgfortran/intrinsics/time_1.h
+++ b/libgfortran/intrinsics/time_1.h
@@ -181,8 +181,8 @@ gf_cputime (long *user_sec, long *user_usec, long *system_sec, long *system_usec
#endif
-/* Realtime clock with microsecond resolution, falling back to less
- precise functions if the target does not support gettimeofday().
+/* Realtime clock with microsecond resolution, falling back to other
+ functions if the target does not support gettimeofday().
Arguments:
secs - OUTPUT, seconds
@@ -204,6 +204,12 @@ gf_gettime (time_t * secs, long * usecs)
*secs = tv.tv_sec;
*usecs = tv.tv_usec;
return err;
+#elif defined(HAVE_CLOCK_GETTIME)
+ struct timespec ts;
+ int err = clock_gettime (CLOCK_REALTIME, &ts);
+ *secs = ts.tv_sec;
+ *usecs = ts.tv_nsec / 1000;
+ return err;
#else
time_t t = time (NULL);
*secs = t;