[libcxx-commits] [libcxx] [libc++][test] Unify `is_steady` tests for chrono clocks (PR #132566)
via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Jun 19 13:09:20 PDT 2026
https://github.com/PaulXiCao updated https://github.com/llvm/llvm-project/pull/132566
>From a8ad6e5661f794af22fe9b5339d75cfc2a52233b Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sat, 22 Mar 2025 22:31:21 +0100
Subject: [PATCH 01/23] get rid off temporary (maybe_unused)
---
.../time.clock/time.clock.gps/types.compile.pass.cpp | 11 +++++------
.../time.clock/time.clock.tai/types.compile.pass.cpp | 11 +++++------
.../time.clock/time.clock.utc/types.compile.pass.cpp | 11 +++++------
3 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
index fea70a304dfdd..707c9221c2332 100644
--- a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
@@ -37,11 +37,10 @@
#include "test_macros.h"
// class gps_clock
-using rep = std::chrono::gps_clock::rep;
-using period = std::chrono::gps_clock::period;
-using duration = std::chrono::gps_clock::duration;
-using time_point = std::chrono::gps_clock::time_point;
-[[maybe_unused]] constexpr bool is_steady = std::chrono::gps_clock::is_steady;
+using rep = std::chrono::gps_clock::rep;
+using period = std::chrono::gps_clock::period;
+using duration = std::chrono::gps_clock::duration;
+using time_point = std::chrono::gps_clock::time_point;
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
@@ -53,7 +52,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::gps_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(std::chrono::gps_clock::is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::gps_time<int>, std::chrono::time_point<std::chrono::gps_clock, int>>);
diff --git a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
index 6499ecb5fb85e..c0474441e5e79 100644
--- a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
@@ -37,11 +37,10 @@
#include "test_macros.h"
// class tai_clock
-using rep = std::chrono::tai_clock::rep;
-using period = std::chrono::tai_clock::period;
-using duration = std::chrono::tai_clock::duration;
-using time_point = std::chrono::tai_clock::time_point;
-[[maybe_unused]] constexpr bool is_steady = std::chrono::tai_clock::is_steady;
+using rep = std::chrono::tai_clock::rep;
+using period = std::chrono::tai_clock::period;
+using duration = std::chrono::tai_clock::duration;
+using time_point = std::chrono::tai_clock::time_point;
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
@@ -53,7 +52,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::tai_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(std::chrono::tai_clock::is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::tai_time<int>, std::chrono::time_point<std::chrono::tai_clock, int>>);
diff --git a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
index c69671ba4d2cc..c3d25a4684851 100644
--- a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
@@ -37,11 +37,10 @@
#include "test_macros.h"
// class utc_clock
-using rep = std::chrono::utc_clock::rep;
-using period = std::chrono::utc_clock::period;
-using duration = std::chrono::utc_clock::duration;
-using time_point = std::chrono::utc_clock::time_point;
-[[maybe_unused]] constexpr bool is_steady = std::chrono::utc_clock::is_steady;
+using rep = std::chrono::utc_clock::rep;
+using period = std::chrono::utc_clock::period;
+using duration = std::chrono::utc_clock::duration;
+using time_point = std::chrono::utc_clock::time_point;
// Tests the values. Some of them are implementation-defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::system_clock::rep>);
@@ -53,7 +52,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::utc_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(std::chrono::utc_clock::is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::utc_time<int>, std::chrono::time_point<std::chrono::utc_clock, int>>);
>From a109e288d445526f2fa270fd41591b909f011a46 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sun, 23 Mar 2025 18:01:21 +0100
Subject: [PATCH 02/23] is_steady: testing type and value
---
.../std/time/time.clock/time.clock.gps/types.compile.pass.cpp | 4 +++-
.../std/time/time.clock/time.clock.tai/types.compile.pass.cpp | 4 +++-
.../std/time/time.clock/time.clock.utc/types.compile.pass.cpp | 4 +++-
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
index 707c9221c2332..fbd2da885f8b4 100644
--- a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
@@ -42,6 +42,8 @@ using period = std::chrono::gps_clock::period;
using duration = std::chrono::gps_clock::duration;
using time_point = std::chrono::gps_clock::time_point;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::gps_clock::is_steady;
+
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -52,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::gps_clock>>);
-LIBCPP_STATIC_ASSERT(std::chrono::gps_clock::is_steady == false);
+LIBCPP_STATIC_ASSERT(is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::gps_time<int>, std::chrono::time_point<std::chrono::gps_clock, int>>);
diff --git a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
index c0474441e5e79..66c8653e2bb64 100644
--- a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
@@ -42,6 +42,8 @@ using period = std::chrono::tai_clock::period;
using duration = std::chrono::tai_clock::duration;
using time_point = std::chrono::tai_clock::time_point;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::tai_clock::is_steady;
+
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -52,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::tai_clock>>);
-LIBCPP_STATIC_ASSERT(std::chrono::tai_clock::is_steady == false);
+LIBCPP_STATIC_ASSERT(is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::tai_time<int>, std::chrono::time_point<std::chrono::tai_clock, int>>);
diff --git a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
index c3d25a4684851..a1b0801f502cb 100644
--- a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
@@ -42,6 +42,8 @@ using period = std::chrono::utc_clock::period;
using duration = std::chrono::utc_clock::duration;
using time_point = std::chrono::utc_clock::time_point;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::utc_clock::is_steady;
+
// Tests the values. Some of them are implementation-defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::system_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -52,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::utc_clock>>);
-LIBCPP_STATIC_ASSERT(std::chrono::utc_clock::is_steady == false);
+LIBCPP_STATIC_ASSERT(is_steady == false);
// typedefs
static_assert(std::same_as<std::chrono::utc_time<int>, std::chrono::time_point<std::chrono::utc_clock, int>>);
>From 974da5558b0b7e775515a4590df40b46a5db0a6e Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sun, 23 Mar 2025 18:25:30 +0100
Subject: [PATCH 03/23] testing older clock's is_steady type (and optionally
value)
---
.../std/time/time.clock/time.clock.hires/consistency.pass.cpp | 2 +-
.../std/time/time.clock/time.clock.steady/consistency.pass.cpp | 2 +-
.../std/time/time.clock/time.clock.system/consistency.pass.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index ad1bce8963074..6765ffb54b9b2 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -30,7 +30,7 @@ int main(int, char**)
static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
- static_assert(C::is_steady || !C::is_steady, "");
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
test(std::chrono::high_resolution_clock::is_steady);
return 0;
diff --git a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
index fa0ff4f50db83..fcb0df01a331d 100644
--- a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
@@ -32,7 +32,7 @@ int main(int, char**)
static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
- static_assert(C::is_steady, "");
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value && C::is_steady, "");
test(std::chrono::steady_clock::is_steady);
return 0;
diff --git a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
index 124e9fe41bea0..e9bd175efb240 100644
--- a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
@@ -31,7 +31,7 @@ int main(int, char**)
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
- static_assert((C::is_steady || !C::is_steady), "");
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
test(std::chrono::system_clock::is_steady);
return 0;
>From 4d95cb2330efadcd6dfe2885a78d0fc918379b19 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sat, 13 Jun 2026 18:30:03 +0200
Subject: [PATCH 04/23] file clock: is_steady tests
---
.../time/time.clock/time.clock.file/consistency.pass.cpp | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
index cb49c596c56ca..1726c1c976226 100644
--- a/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
@@ -23,9 +23,6 @@
#include "test_macros.h"
-template <class T>
-void test(const T &) {}
-
int main(int, char**)
{
typedef std::chrono::file_clock C;
@@ -33,8 +30,9 @@ int main(int, char**)
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
- static_assert(!C::is_steady, "");
- test(std::chrono::file_clock::is_steady);
+
+ [[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = C::is_steady;
+ LIBCPP_STATIC_ASSERT(C::is_steady == false);
return 0;
}
>From d41fbb01ddbe626ab74e7ac7e4b16f66f38c45af Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sat, 13 Jun 2026 23:16:59 +0200
Subject: [PATCH 05/23] hires clock: is_steady tests
---
.../time.clock/time.clock.hires/consistency.pass.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index 6765ffb54b9b2..80892d00e88dc 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -6,6 +6,8 @@
//
//===----------------------------------------------------------------------===//
//
+// REQUIRES: std-at-least-c++11
+//
// Due to C++17 inline variables ASAN flags this test as containing an ODR
// violation because Clock::is_steady is defined in both the dylib and this TU.
// UNSUPPORTED: asan
@@ -16,22 +18,23 @@
// check clock invariants
+#include <cassert>
#include <chrono>
#include <type_traits>
#include "test_macros.h"
-template <class T>
-void test(const T &) {}
-
int main(int, char**)
{
typedef std::chrono::high_resolution_clock C;
static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
+
static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
- test(std::chrono::high_resolution_clock::is_steady);
+ TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady;
+ (void)is_steady;
+ LIBCPP_ASSERT(C::is_steady);
return 0;
}
>From 5f231035ae6498a29500ec846f4fd169889c46a2 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sat, 13 Jun 2026 23:50:10 +0200
Subject: [PATCH 06/23] steady clock: is_steady tests
---
.../time.clock/time.clock.steady/consistency.pass.cpp | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
index fcb0df01a331d..02738aee2732c 100644
--- a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
@@ -6,6 +6,7 @@
//
//===----------------------------------------------------------------------===//
//
+// REQUIRES: std-at-least-c++11
// UNSUPPORTED: no-monotonic-clock
// Due to C++17 inline variables ASAN flags this test as containing an ODR
@@ -21,10 +22,7 @@
#include <chrono>
#include <type_traits>
-#include "test_macros.h"
-
-template <class T>
-void test(const T &) {}
+void odr_use(const bool &) {}
int main(int, char**)
{
@@ -33,7 +31,7 @@ int main(int, char**)
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert(std::is_same<decltype(C::is_steady), const bool>::value && C::is_steady, "");
- test(std::chrono::steady_clock::is_steady);
+ odr_use(C::is_steady);
return 0;
}
>From 8d3238075544cf432fb97a26090b8566852654f5 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sun, 14 Jun 2026 00:14:48 +0200
Subject: [PATCH 07/23] system clock: is_steady tests
---
.../time.clock.system/consistency.pass.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
index e9bd175efb240..c5d5989ff02be 100644
--- a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
@@ -6,6 +6,8 @@
//
//===----------------------------------------------------------------------===//
//
+// REQUIRES: std-at-least-c++11
+//
// Due to C++17 inline variables ASAN flags this test as containing an ODR
// violation because Clock::is_steady is defined in both the dylib and this TU.
// UNSUPPORTED: asan
@@ -17,12 +19,12 @@
// check clock invariants
#include <chrono>
+#include <cassert>
#include <type_traits>
#include "test_macros.h"
-template <class T>
-void test(const T &) {}
+void odr_use(const bool &) {}
int main(int, char**)
{
@@ -31,8 +33,12 @@ int main(int, char**)
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
+
static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
- test(std::chrono::system_clock::is_steady);
+ TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady;
+ (void)is_steady;
+ LIBCPP_ASSERT(!C::is_steady);
+ odr_use(C::is_steady);
return 0;
}
>From 2a0764e9abcc357b25cfc99602866103c1342d62 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sun, 14 Jun 2026 00:24:58 +0200
Subject: [PATCH 08/23] tai clock: is_steady tests
---
.../std/time/time.clock/time.clock.tai/types.compile.pass.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
index 66c8653e2bb64..ddd1a184611bf 100644
--- a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
@@ -42,7 +42,7 @@ using period = std::chrono::tai_clock::period;
using duration = std::chrono::tai_clock::duration;
using time_point = std::chrono::tai_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::tai_clock::is_steady;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::tai_clock::is_steady;
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
@@ -54,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::tai_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(!std::chrono::tai_clock::is_steady);
// typedefs
static_assert(std::same_as<std::chrono::tai_time<int>, std::chrono::time_point<std::chrono::tai_clock, int>>);
>From 169a653837d2a772be024ea0c7673bd933672e7f Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Sun, 14 Jun 2026 00:32:05 +0200
Subject: [PATCH 09/23] utc clock: is_steady tests
---
.../std/time/time.clock/time.clock.utc/types.compile.pass.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
index a1b0801f502cb..37137a5579d56 100644
--- a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
@@ -42,7 +42,7 @@ using period = std::chrono::utc_clock::period;
using duration = std::chrono::utc_clock::duration;
using time_point = std::chrono::utc_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::utc_clock::is_steady;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::utc_clock::is_steady;
// Tests the values. Some of them are implementation-defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::system_clock::rep>);
@@ -54,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::utc_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(!std::chrono::utc_clock::is_steady);
// typedefs
static_assert(std::same_as<std::chrono::utc_time<int>, std::chrono::time_point<std::chrono::utc_clock, int>>);
>From 009f0992e27f697ecda19964fa5a093882d20fa6 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 21:11:58 +0200
Subject: [PATCH 10/23] file clock: move to compile time only test file
---
.../time.clock.file/consistency.pass.cpp | 38 -------------------
.../time.clock.file/types.compile.pass.cpp | 30 +++++++++++++++
2 files changed, 30 insertions(+), 38 deletions(-)
delete mode 100644 libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
create mode 100644 libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
diff --git a/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
deleted file mode 100644
index 1726c1c976226..0000000000000
--- a/libcxx/test/std/time/time.clock/time.clock.file/consistency.pass.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// UNSUPPORTED: c++03, c++11, c++14, c++17
-
-// Due to C++17 inline variables ASAN flags this test as containing an ODR
-// violation because Clock::is_steady is defined in both the dylib and this TU.
-// UNSUPPORTED: asan
-
-// <chrono>
-
-// file_clock
-
-// check clock invariants
-
-#include <chrono>
-#include <type_traits>
-
-#include "test_macros.h"
-
-int main(int, char**)
-{
- typedef std::chrono::file_clock C;
- static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
- static_assert((std::is_same<C::period, C::duration::period>::value), "");
- static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
- static_assert((std::is_same<C::time_point::clock, C>::value), "");
-
- [[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = C::is_steady;
- LIBCPP_STATIC_ASSERT(C::is_steady == false);
-
- return 0;
-}
diff --git a/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
new file mode 100644
index 0000000000000..0ebd6f39e7af7
--- /dev/null
+++ b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
@@ -0,0 +1,30 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// UNSUPPORTED: c++03, c++11, c++14, c++17
+
+// <chrono>
+
+// file_clock
+
+// check clock invariants
+
+#include <chrono>
+#include <type_traits>
+
+#include "test_macros.h"
+
+using C = std::chrono::file_clock;
+
+static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
+static_assert((std::is_same<C::period, C::duration::period>::value), "");
+static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
+static_assert((std::is_same<C::time_point::clock, C>::value), "");
+
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = C::is_steady;
+LIBCPP_STATIC_ASSERT(C::is_steady == false);
>From 27dd8800298a835ca26c1cd97228b74c208da0b1 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 21:14:05 +0200
Subject: [PATCH 11/23] gps clock: cleanup
---
.../std/time/time.clock/time.clock.gps/types.compile.pass.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
index fbd2da885f8b4..6e2de31f325ac 100644
--- a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
@@ -42,7 +42,7 @@ using period = std::chrono::gps_clock::period;
using duration = std::chrono::gps_clock::duration;
using time_point = std::chrono::gps_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) is_steady = std::chrono::gps_clock::is_steady;
+[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::gps_clock::is_steady;
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
@@ -54,7 +54,7 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::gps_clock>>);
-LIBCPP_STATIC_ASSERT(is_steady == false);
+LIBCPP_STATIC_ASSERT(!std::chrono::gps_clock::is_steady);
// typedefs
static_assert(std::same_as<std::chrono::gps_time<int>, std::chrono::time_point<std::chrono::gps_clock, int>>);
>From fb07157217a7bedbee491e40d3e5a738ccf0715f Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 21:14:31 +0200
Subject: [PATCH 12/23] hires clock: add odr_use test
---
.../std/time/time.clock/time.clock.hires/consistency.pass.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index 80892d00e88dc..0dc7f99ae85f6 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -24,6 +24,8 @@
#include "test_macros.h"
+void odr_use(const bool &) {}
+
int main(int, char**)
{
typedef std::chrono::high_resolution_clock C;
@@ -35,6 +37,7 @@ int main(int, char**)
TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady;
(void)is_steady;
LIBCPP_ASSERT(C::is_steady);
+ odr_use(C::is_steady);
return 0;
}
>From a15f53b832121d0dbeb0469b3cc5f994c5d79296 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 22:32:16 +0200
Subject: [PATCH 13/23] file clock: cleanup
---
.../std/time/time.clock/time.clock.file/types.compile.pass.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
index 0ebd6f39e7af7..618a42890be09 100644
--- a/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
@@ -27,4 +27,4 @@ static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = C::is_steady;
-LIBCPP_STATIC_ASSERT(C::is_steady == false);
+LIBCPP_STATIC_ASSERT(!C::is_steady);
>From 65f222d8dbbdf9c053f7f25ee7b02fcb3404d7d0 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 22:42:01 +0200
Subject: [PATCH 14/23] file clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.file/types.compile.pass.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
index 618a42890be09..520b5a65e2d8e 100644
--- a/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.file/types.compile.pass.cpp
@@ -26,5 +26,7 @@ static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = C::is_steady;
+static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "is_steady must be bool");
+static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
+static_assert(C::is_steady || true, "is_steady must be constexpr"); // NOLINT(readability-simplify-boolean-expr)
LIBCPP_STATIC_ASSERT(!C::is_steady);
>From 52275f3817f52fe285924aac33d31e70abcf27b0 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 22:44:35 +0200
Subject: [PATCH 15/23] gps clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.gps/types.compile.pass.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
index 6e2de31f325ac..9323c03ea4b68 100644
--- a/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.gps/types.compile.pass.cpp
@@ -42,8 +42,6 @@ using period = std::chrono::gps_clock::period;
using duration = std::chrono::gps_clock::duration;
using time_point = std::chrono::gps_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::gps_clock::is_steady;
-
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -54,6 +52,12 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::gps_clock>>);
+
+// is_steady
+static_assert(std::is_same<decltype(std::chrono::gps_clock::is_steady), const bool>::value, "is_steady must be bool");
+static_assert(!std::is_member_pointer<decltype(&std::chrono::gps_clock::is_steady)>::value, "is_steady must be static");
+static_assert(std::chrono::gps_clock::is_steady || true, // NOLINT(readability-simplify-boolean-expr)
+ "is_steady must be constexpr");
LIBCPP_STATIC_ASSERT(!std::chrono::gps_clock::is_steady);
// typedefs
>From d2854ba6139ddcc2c7475dcee225266969fb1440 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 22:49:25 +0200
Subject: [PATCH 16/23] hires clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.hires/consistency.pass.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index 0dc7f99ae85f6..fb2b2b1b3d8e7 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -33,8 +33,9 @@ int main(int, char**)
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
- static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
- TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady;
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "is_steady must be bool");
+ static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
+ TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady; // "is_steady must be constexpr"
(void)is_steady;
LIBCPP_ASSERT(C::is_steady);
odr_use(C::is_steady);
>From 116e0a1d0a59cab47cc7c530c616aeb28dab7c4a Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 23:02:36 +0200
Subject: [PATCH 17/23] steady clock: test type+storage+constexpr+value
---
.../time.clock/time.clock.steady/consistency.pass.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
index 02738aee2732c..6a2d355552357 100644
--- a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
@@ -19,9 +19,12 @@
// check clock invariants
+#include <cassert>
#include <chrono>
#include <type_traits>
+#include "test_macros.h"
+
void odr_use(const bool &) {}
int main(int, char**)
@@ -30,7 +33,12 @@ int main(int, char**)
static_assert((std::is_same<C::rep, C::duration::rep>::value), "");
static_assert((std::is_same<C::period, C::duration::period>::value), "");
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
- static_assert(std::is_same<decltype(C::is_steady), const bool>::value && C::is_steady, "");
+
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "is_steady must be bool");
+ static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
+ TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady; // "is_steady must be constexpr"
+ (void)is_steady;
+ assert(C::is_steady);
odr_use(C::is_steady);
return 0;
>From 5f7478d56aad88b7e032e57132377865b3dc313e Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 23:05:32 +0200
Subject: [PATCH 18/23] system clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.system/consistency.pass.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
index c5d5989ff02be..1d2d18fd507f8 100644
--- a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
@@ -34,8 +34,9 @@ int main(int, char**)
static_assert((std::is_same<C::duration, C::time_point::duration>::value), "");
static_assert((std::is_same<C::time_point::clock, C>::value), "");
- static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "");
- TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady;
+ static_assert(std::is_same<decltype(C::is_steady), const bool>::value, "is_steady must be bool");
+ static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
+ TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady; // "is_steady must be constexpr"
(void)is_steady;
LIBCPP_ASSERT(!C::is_steady);
odr_use(C::is_steady);
>From 9ded1934d8e7d15be86d4f2f99ed4374f257f8b8 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 23:07:34 +0200
Subject: [PATCH 19/23] tai clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.tai/types.compile.pass.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
index ddd1a184611bf..4cd204b2bdb71 100644
--- a/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.tai/types.compile.pass.cpp
@@ -42,8 +42,6 @@ using period = std::chrono::tai_clock::period;
using duration = std::chrono::tai_clock::duration;
using time_point = std::chrono::tai_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::tai_clock::is_steady;
-
// Tests the values. part of them are implementation defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::utc_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -54,6 +52,12 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::tai_clock>>);
+
+// is_steady
+static_assert(std::is_same<decltype(std::chrono::tai_clock::is_steady), const bool>::value, "is_steady must be bool");
+static_assert(!std::is_member_pointer<decltype(&std::chrono::tai_clock::is_steady)>::value, "is_steady must be static");
+static_assert(std::chrono::tai_clock::is_steady || true, // NOLINT(readability-simplify-boolean-expr)
+ "is_steady must be constexpr");
LIBCPP_STATIC_ASSERT(!std::chrono::tai_clock::is_steady);
// typedefs
>From 12ffdaccf7248e7e8a0e4055ff5327ce89072c7d Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 23:09:04 +0200
Subject: [PATCH 20/23] utc clock: test type+storage+constexpr+value
---
.../time/time.clock/time.clock.utc/types.compile.pass.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
index 37137a5579d56..1ab70f9b66f05 100644
--- a/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.utc/types.compile.pass.cpp
@@ -42,8 +42,6 @@ using period = std::chrono::utc_clock::period;
using duration = std::chrono::utc_clock::duration;
using time_point = std::chrono::utc_clock::time_point;
-[[maybe_unused]] constexpr std::same_as<const bool> decltype(auto) _ = std::chrono::utc_clock::is_steady;
-
// Tests the values. Some of them are implementation-defined.
LIBCPP_STATIC_ASSERT(std::same_as<rep, std::chrono::system_clock::rep>);
static_assert(std::is_arithmetic_v<rep>);
@@ -54,6 +52,12 @@ static_assert(std::same_as<period, std::ratio<period::num, period::den>>);
static_assert(std::same_as<duration, std::chrono::duration<rep, period>>);
static_assert(std::same_as<time_point, std::chrono::time_point<std::chrono::utc_clock>>);
+
+// is_steady
+static_assert(std::is_same<decltype(std::chrono::utc_clock::is_steady), const bool>::value, "is_steady must be bool");
+static_assert(!std::is_member_pointer<decltype(&std::chrono::utc_clock::is_steady)>::value, "is_steady must be static");
+static_assert(std::chrono::utc_clock::is_steady || true, // NOLINT(readability-simplify-boolean-expr)
+ "is_steady must be constexpr");
LIBCPP_STATIC_ASSERT(!std::chrono::utc_clock::is_steady);
// typedefs
>From 819c208624a431674d5eca3a52ed224d731e2655 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Tue, 16 Jun 2026 23:33:14 +0200
Subject: [PATCH 21/23] clang-format
---
.../std/time/time.clock/time.clock.hires/consistency.pass.cpp | 4 ++--
.../time/time.clock/time.clock.steady/consistency.pass.cpp | 4 ++--
.../time/time.clock/time.clock.system/consistency.pass.cpp | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index fb2b2b1b3d8e7..1c8a6b15b7560 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -24,7 +24,7 @@
#include "test_macros.h"
-void odr_use(const bool &) {}
+void odr_use(const bool&) {}
int main(int, char**)
{
@@ -40,5 +40,5 @@ int main(int, char**)
LIBCPP_ASSERT(C::is_steady);
odr_use(C::is_steady);
- return 0;
+ return 0;
}
diff --git a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
index 6a2d355552357..25422b45e52c6 100644
--- a/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.steady/consistency.pass.cpp
@@ -25,7 +25,7 @@
#include "test_macros.h"
-void odr_use(const bool &) {}
+void odr_use(const bool&) {}
int main(int, char**)
{
@@ -41,5 +41,5 @@ int main(int, char**)
assert(C::is_steady);
odr_use(C::is_steady);
- return 0;
+ return 0;
}
diff --git a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
index 1d2d18fd507f8..65e9dff3fecbd 100644
--- a/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.system/consistency.pass.cpp
@@ -24,7 +24,7 @@
#include "test_macros.h"
-void odr_use(const bool &) {}
+void odr_use(const bool&) {}
int main(int, char**)
{
@@ -41,5 +41,5 @@ int main(int, char**)
LIBCPP_ASSERT(!C::is_steady);
odr_use(C::is_steady);
- return 0;
+ return 0;
}
>From f007121c62e880695b9aebd2a0ceddfeec4cbc9c Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Wed, 17 Jun 2026 22:23:02 +0200
Subject: [PATCH 22/23] hires clock: value depends on
_LIBCPP_HAS_MONOTONIC_CLOCK
---
.../std/time/time.clock/time.clock.hires/consistency.pass.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index 1c8a6b15b7560..714ce2c1137fa 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -37,7 +37,7 @@ int main(int, char**)
static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady; // "is_steady must be constexpr"
(void)is_steady;
- LIBCPP_ASSERT(C::is_steady);
+ LIBCPP_ASSERT((C::is_steady == std::is_same<C, std::chrono::steady_clock>::value));
odr_use(C::is_steady);
return 0;
>From c9f02bb298471d22112be8ea4cdd48f4a643e312 Mon Sep 17 00:00:00 2001
From: Paul <paulxicao7 at gmail.com>
Date: Fri, 19 Jun 2026 22:08:51 +0200
Subject: [PATCH 23/23] fixup (steady_clock only visible `#if
_LIBCPP_HAS_MONOTONIC_CLOCK`)
---
.../time.clock/time.clock.hires/consistency.pass.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
index 714ce2c1137fa..e7d3586c44125 100644
--- a/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
+++ b/libcxx/test/std/time/time.clock/time.clock.hires/consistency.pass.cpp
@@ -37,7 +37,15 @@ int main(int, char**)
static_assert(!std::is_member_pointer<decltype(&C::is_steady)>::value, "is_steady must be static");
TEST_CONSTEXPR_CXX14 const bool is_steady = C::is_steady; // "is_steady must be constexpr"
(void)is_steady;
- LIBCPP_ASSERT((C::is_steady == std::is_same<C, std::chrono::steady_clock>::value));
+
+ // high_resolution_clock typedefs to steady_clock when _LIBCPP_HAS_MONOTONIC_CLOCK,
+ // else system_clock (e.g. generic-llvm-libc, generic-no-threads).
+ #if _LIBCPP_HAS_MONOTONIC_CLOCK
+ LIBCPP_ASSERT(C::is_steady);
+ #else
+ LIBCPP_ASSERT(!C::is_steady);
+ #endif
+
odr_use(C::is_steady);
return 0;
More information about the libcxx-commits
mailing list