I can't think of a straightforward way to prune these two
similar tests to a more meaningful subset: there's no easy
pruning to each Nth iteration instead of every iteration.
Hopefully exiting the loop after a million runs at the
beginning of the tested range of dates, will catch the gist
of the test. I think I can interpret Jeffs pre-approval at
https://gcc.gnu.org/pipermail/gcc-patches/2024-December/672218.html
to cover this change too, but IMHO this one is less obvious
than that change, so I'll wait until 2024-01-11, before
defaulting to committing it, in case of no comments.
Having said that: ok to commit?
-- >8 --
These two long-running tests happened to fail for me when
run in parallel (nprocs - 1) compared to a serial run, for
target mmix on my laptop. The runtime is 3m40s for 3.cc
before this change, and 0.9s afterwards.
* testsuite/std/time/year_month_day/3.cc [ITERATIONS] (test01): Limit
the number of tested dates to ITERATIONS. Pass -DITERATIONS=100000
for simulators.
* testsuite/std/time/year_month_day/4.cc: Ditto.
---
libstdc++-v3/testsuite/std/time/year_month_day/3.cc | 8 ++++++++
libstdc++-v3/testsuite/std/time/year_month_day/4.cc | 8 ++++++++
2 files changed, 16 insertions(+)
diff --git a/libstdc++-v3/testsuite/std/time/year_month_day/3.cc
b/libstdc++-v3/testsuite/std/time/year_month_day/3.cc
index 05dc750c0a09..e98927335e53 100644
--- a/libstdc++-v3/testsuite/std/time/year_month_day/3.cc
+++ b/libstdc++-v3/testsuite/std/time/year_month_day/3.cc
@@ -1,4 +1,5 @@
// { dg-do run { target c++20 } }
+// { dg-additional-options "-DITERATIONS=100000" { target simulator } }
// Copyright (C) 2021-2024 Free Software Foundation, Inc.
//
@@ -54,7 +55,14 @@ void test01()
auto n = days{-12687428};
auto ymd = -32767y/January/1d;
+#ifdef ITERATIONS
+ int iteration = 0;
+#endif
while (n < days{11248737}) {
+#ifdef ITERATIONS
+ if (iteration++ == ITERATIONS)
+ break;
+#endif
VERIFY( year_month_day{sys_days{n}} == ymd );
++n;
advance(ymd);
diff --git a/libstdc++-v3/testsuite/std/time/year_month_day/4.cc
b/libstdc++-v3/testsuite/std/time/year_month_day/4.cc
index 6b6714e3a85e..a8a90f767ad7 100644
--- a/libstdc++-v3/testsuite/std/time/year_month_day/4.cc
+++ b/libstdc++-v3/testsuite/std/time/year_month_day/4.cc
@@ -1,4 +1,5 @@
// { dg-do run { target c++20 } }
+// { dg-additional-options "-DITERATIONS=100000" { target simulator } }
// Copyright (C) 2021-2024 Free Software Foundation, Inc.
//
@@ -54,7 +55,14 @@ void test01()
auto n = days{-12687428};
auto ymd = -32767y/January/1d;
+#ifdef ITERATIONS
+ int iteration = 0;
+#endif
while (ymd < 32767y/December/31d) {
+#ifdef ITERATIONS
+ if (iteration++ == ITERATIONS)
+ break;
+#endif
VERIFY( static_cast<sys_days>(ymd) == sys_days{n} );
++n;
advance(ymd);
--
2.39.2