[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