[flang] [llvm] [flang-rt] Runtime implementation of extended intrinsic function SECNDS() (PR #152021)
Eugene Epshteyn via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 5 12:55:31 PDT 2025
================
@@ -303,6 +304,93 @@ void FORTRAN_PROCEDURE_NAME(qsort)(int *array, int *len, int *isize,
// PERROR(STRING)
void RTNAME(Perror)(const char *str) { perror(str); }
+// GNU extension function SECNDS(refTime)
----------------
eugeneepshteyn wrote:
This is ready for review. I did some testing with multiple threads. Test program:
```
use omp_lib
external secnds
real sec_mid
real results(1000)
integer i, num_threads
results = 0.0
!$omp parallel do
do i=1, size(results)
results(i) = secnds(0.0)
num_threads = omp_get_num_threads()
end do
!$omp end parallel do
print *, "Number of threads in parallel region:", num_threads
sec_mid = minval(results)
print *, "Seconds from midnight: min:", sec_mid, ", max:", maxval(results)
call sleep(2)
!$omp parallel do
do i=1, size(results)
results(i) = secnds(sec_mid)
end do
!$omp end parallel do
print *, "Seconds from sec_mid: min:", minval(results), ", max:", maxval(results)
print *, "Seconds from midnight:", secnds(0.0)
end
```
Output:
```
$ ./a.out
Number of threads in parallel region: 256
Seconds from midnight: min: 46489. , max: 46489.
Seconds from sec_mid: min: 2. , max: 2.
Seconds from midnight: 46491.
```
https://github.com/llvm/llvm-project/pull/152021
More information about the llvm-commits
mailing list