[flang] Add runtime interface for SYSTEM_CLOCK
authorDiana Picus <diana.picus@linaro.org>
Fri, 11 Jun 2021 08:05:30 +0000 (08:05 +0000)
committerDiana Picus <diana.picus@linaro.org>
Tue, 29 Jun 2021 08:25:01 +0000 (08:25 +0000)
SYSTEM_CLOCK may take up to 3 optional parameters, all of which are
INTENT(OUT). The COUNT and COUNT_MAX parameters are integer scalars,
while COUNT_RATE may be a real or integer scalar.

This patch breaks up the interface into 3 different functions, one for
each parameter. All 3 return integers. It is up to lowering to convert
the results to the preferred type.

Differential Revision: https://reviews.llvm.org/D104851

flang/runtime/time-intrinsic.h

index 835f24c..391d72c 100644 (file)
@@ -22,6 +22,12 @@ extern "C" {
 // real kind.
 double RTNAME(CpuTime)();
 
+// Interface for the SYSTEM_CLOCK intrinsic. We break it up into 3 distinct
+// function calls, one for each of SYSTEM_CLOCK's optional output arguments.
+// Lowering will have to cast the results to whatever type it prefers.
+CppTypeFor<TypeCategory::Integer, 8> RTNAME(SystemClockCount)();
+CppTypeFor<TypeCategory::Integer, 8> RTNAME(SystemClockCountRate)();
+CppTypeFor<TypeCategory::Integer, 8> RTNAME(SystemClockCountMax)();
 } // extern "C"
 } // namespace Fortran::runtime
 #endif // FORTRAN_RUNTIME_TIME_INTRINSIC_H_