https://gcc.gnu.org/g:38523a24316d35ad1b58c162ec422f099fcd77c2
commit r17-5186-g38523a24316d35ad1b58c162ec422f099fcd77c2 Author: Hugo Beauzée-Luyssen <[email protected]> Date: Tue Oct 13 10:14:12 2026 +0000 libstdc++: fix __cpp_lib_chrono for old-ABI-only builds The C++20 chrono time zone API is declared when _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI, but __cpp_lib_chrono only gets its C++20 value when _GLIBCXX_USE_CXX11_ABI is set. Old-ABI-only builds therefore get the full API but report the C++17 value. Widen the condition for the 201907 value to match, and make the headers check __cpp_lib_chrono instead of repeating the ABI condition. Assisted-by: Claude (claude-sonnet-5) libstdc++-v3/ChangeLog: * include/bits/chrono_io.h: Check __glibcxx_chrono for C++20 tzdb features instead of the ABI macros. * include/bits/version.def (chrono): Use extra_cond instead of cxx11abi to also define 201907 for old-ABI-only builds. * include/bits/version.h: Regenerate. * include/std/chrono: Check __cpp_lib_chrono instead of the ABI macros. * testsuite/lib/libstdc++.exp (check_effective_target_tzdb): Replace cxx11_abi check with hosted check and check __cpp_lib_chrono in preprocessor condition. * testsuite/libstdc++-prettyprinters/chrono.cc: Use __cpp_lib_chrono for preprocessor condition and use tzdb for effective target. Remove dg-additional-options. * testsuite/std/time/format/data_not_present_neg.cc: Use __cpp_lib_chrono for preprocessor conditions and use tzdb for effective target. * testsuite/std/time/format/empty_spec.cc: Use __cpp_lib_chrono for preprocessor conditions. * testsuite/std/time/format/nonlocking.cc: Likewise. * testsuite/std/time/format/pr117214.cc: Likewise. * testsuite/std/time/format/pr119517.cc: Likewise. * testsuite/std/time/format/whitespace.cc: Likewise. * testsuite/std/time/hash.cc: Likewise. * testsuite/std/time/syn_c++20.cc: Fix typo in macro name and expect new value for !_GLIBCXX_USE_DUAL_ABI. * testsuite/std/time/tzdb/1.cc: Require tzdb effective target instead of cxx11_abi. * testsuite/std/time/tzdb_list/requirements.cc: Likewise. * testsuite/std/time/zoned_time/deduction.cc: Likewise. * testsuite/std/time/zoned_time/io.cc: Likewise. * testsuite/std/time/zoned_time/req_neg.cc: Likewise. * testsuite/std/time/zoned_time/requirements.cc: Likewise. * testsuite/std/time/zoned_traits.cc: Likewise. Signed-off-by: Hugo Beauzée-Luyssen <[email protected]> Co-authored-by: Jonathan Wakely <[email protected]> Diff: --- libstdc++-v3/include/bits/chrono_io.h | 8 ++--- libstdc++-v3/include/bits/version.def | 4 +-- libstdc++-v3/include/bits/version.h | 4 +-- libstdc++-v3/include/std/chrono | 12 +++---- libstdc++-v3/testsuite/lib/libstdc++.exp | 4 ++- .../testsuite/libstdc++-prettyprinters/chrono.cc | 5 ++- .../std/time/format/data_not_present_neg.cc | 40 +++++++++++----------- .../testsuite/std/time/format/empty_spec.cc | 8 ++--- .../testsuite/std/time/format/nonlocking.cc | 4 +-- libstdc++-v3/testsuite/std/time/format/pr117214.cc | 4 +-- libstdc++-v3/testsuite/std/time/format/pr119517.cc | 2 +- .../testsuite/std/time/format/whitespace.cc | 2 +- libstdc++-v3/testsuite/std/time/hash.cc | 6 ++-- libstdc++-v3/testsuite/std/time/syn_c++20.cc | 2 +- libstdc++-v3/testsuite/std/time/tzdb/1.cc | 2 +- .../testsuite/std/time/tzdb_list/requirements.cc | 2 +- .../testsuite/std/time/zoned_time/deduction.cc | 2 +- libstdc++-v3/testsuite/std/time/zoned_time/io.cc | 2 +- .../testsuite/std/time/zoned_time/req_neg.cc | 2 +- .../testsuite/std/time/zoned_time/requirements.cc | 2 +- libstdc++-v3/testsuite/std/time/zoned_traits.cc | 2 +- 21 files changed, 60 insertions(+), 59 deletions(-) diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h index 028e60075448..ae49b888e8c0 100644 --- a/libstdc++-v3/include/bits/chrono_io.h +++ b/libstdc++-v3/include/bits/chrono_io.h @@ -2083,7 +2083,7 @@ namespace __format } }; -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __glibcxx_chrono >= 201803L // C++ >= 20 template<typename _CharT> struct __formatter_chrono_info { @@ -3004,7 +3004,7 @@ namespace __format = enable_nonlocking_formatter_optimization<_Duration>; #endif -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __glibcxx_chrono >= 201803L // C++ >= 20 template<__format::__char _CharT> struct formatter<chrono::sys_info, _CharT> { @@ -3395,7 +3395,7 @@ namespace __format = enable_nonlocking_formatter_optimization<_Duration>; #endif -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __glibcxx_chrono >= 201803L // C++ >= 20 template<typename _Duration, typename _TimeZonePtr, __format::__char _CharT> struct formatter<chrono::zoned_time<_Duration, _TimeZonePtr>, _CharT> : formatter<chrono::__detail::__local_time_fmt_for<_Duration>, _CharT> @@ -3872,7 +3872,7 @@ namespace __detail return __detail::__chrono_write<64>(__os, __hms, __os.getloc()); } -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __glibcxx_chrono >= 201803L // C++ >= 20 /// Writes a sys_info object to an ostream in an unspecified format. template<typename _CharT, typename _Traits> basic_ostream<_CharT, _Traits>& diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def index 170309c96999..914c1d40db7d 100644 --- a/libstdc++-v3/include/bits/version.def +++ b/libstdc++-v3/include/bits/version.def @@ -616,13 +616,13 @@ ftms = { v = 202306; cxxmin = 26; hosted = yes; - cxx11abi = yes; + extra_cond = "_GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI"; }; values = { v = 201907; cxxmin = 20; hosted = yes; - cxx11abi = yes; // std::chrono::tzdb requires cxx11 std::string + extra_cond = "_GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI"; }; values = { v = 201611; diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h index ce20b41caa2d..2a12a69ed98b 100644 --- a/libstdc++-v3/include/bits/version.h +++ b/libstdc++-v3/include/bits/version.h @@ -681,12 +681,12 @@ #undef __glibcxx_want_boyer_moore_searcher #if !defined(__cpp_lib_chrono) -# if (__cplusplus > 202302L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED +# if (__cplusplus > 202302L) && _GLIBCXX_HOSTED && (_GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI) # define __glibcxx_chrono 202306L # if defined(__glibcxx_want_all) || defined(__glibcxx_want_chrono) # define __cpp_lib_chrono 202306L # endif -# elif (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED +# elif (__cplusplus >= 202002L) && _GLIBCXX_HOSTED && (_GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI) # define __glibcxx_chrono 201907L # if defined(__glibcxx_want_all) || defined(__glibcxx_want_chrono) # define __cpp_lib_chrono 201907L diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono index faa849b75b3e..9c8a5ced2bcd 100644 --- a/libstdc++-v3/include/std/chrono +++ b/libstdc++-v3/include/std/chrono @@ -57,7 +57,7 @@ # include <bits/stl_algo.h> // upper_bound # include <bits/range_access.h> // begin/end for arrays #endif -#if __cpp_lib_chrono >= 201803L // C++20 && HOSTED && USE_CXX11_ABI +#if __cpp_lib_chrono >= 201803L // C++20 && HOSTED # include <sstream> # include <string> # include <vector> @@ -2529,7 +2529,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L // C++20 [time.zones] Time zones struct tzdb; @@ -3204,7 +3204,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } using zoned_seconds = zoned_time<seconds>; -#endif // _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#endif // __cpp_lib_chrono >= 201803L namespace __detail { @@ -3259,7 +3259,7 @@ namespace __detail if (__ss > __expires) { -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI // use chrono::tzdb +#if __cpp_lib_chrono >= 201803L // use chrono::tzdb // Call into the library because it might have knowledge of new // leap seconds loaded at runtime from the tzdata files. @@ -3586,7 +3586,7 @@ namespace __detail }; #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L // zoned_time template<typename _Duration, typename _TimeZonePtr> requires __is_hash_enabled_for< @@ -3643,7 +3643,7 @@ namespace __detail __val.value().count()); } }; -#endif // _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#endif // __cpp_lib_chrono >= 201803L #endif // _GLIBCXX_HOSTED #endif // __glibcxx_chrono_cxx20 >= 202306 diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 3e8240d73a53..92589ff75852 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -1643,9 +1643,11 @@ proc check_effective_target_hosted { } { # Return 1 if std::chrono::tzdb is supported. proc check_effective_target_tzdb { } { - if {![check_effective_target_cxx11_abi]} { + # Check the feature test macro (which depends on hosted and ABI macros). + if {![check_v3_target_cpp_feature_test "__cpp_lib_chrono >= 201803L"]} { return 0 } + # Also require that we have tzdata available on-disk or in-memory. return [check_v3_target_prop_cached et_tzdb { set cond "defined _GLIBCXX_ZONEINFO_DIR || _GLIBCXX_STATIC_TZDATA" return [v3_check_preprocessor_condition tzdb $cond] diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/chrono.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/chrono.cc index c10198df06eb..a668d9699277 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/chrono.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/chrono.cc @@ -1,6 +1,5 @@ // { dg-options "-g -O0 -std=gnu++20" } // { dg-do run { target c++20 } } -// { dg-additional-options "-DTEST_ZONED_TIME" { target tzdb } } // Copyright The GNU Toolchain Authors. // @@ -39,9 +38,9 @@ main() utc_time utc(467664h); // { dg-final { note-test utc {std::chrono::utc_time = { 467664h }} } } -#if _GLIBCXX_USE_CXX11_ABI && defined TEST_ZONED_TIME +#if __cpp_lib_chrono >= 201803L zoned_time<milliseconds> zt("Europe/London", half_past_epoch); - // { dg-final { note-test zt {std::chrono::zoned_time = { "Europe/London" 1800000ms [1970-01-01 00:30:00] }} { target cxx11_abi } } } + // { dg-final { note-test zt {std::chrono::zoned_time = { "Europe/London" 1800000ms [1970-01-01 00:30:00] }} { target tzdb } } } #endif [[maybe_unused]] day ninth(9); diff --git a/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc b/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc index 183dca8310fd..5b769d56af55 100644 --- a/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc +++ b/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc @@ -119,9 +119,9 @@ auto tai = std::format("{:%Q}", tai_clock::now()); // { dg-error "call to conste auto file = std::format("{:%Q}", file_clock::now()); // { dg-error "call to consteval function" } const auto ltc = local_seconds(10s); -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 201803L const auto zt = zoned_time<seconds>("Europe/Sofia", local_seconds(10s)); -auto zt1 = std::format("{:%Q}", zt); // { dg-error "call to consteval function" "" { target cxx11_abi } } +auto zt1 = std::format("{:%Q}", zt); // { dg-error "call to consteval function" "" { target tzdb } } #endif auto lf1 = std::format("{:%Q}", local_time_format(ltc)); // { dg-error "call to consteval function" } @@ -141,24 +141,24 @@ auto hms5 = std::format("{:%F}", HMS(1255s)); // { dg-error "call to consteval f auto hms6 = std::format("{:%Q}", HMS(1255s)); // { dg-error "call to consteval function" } auto hms7 = std::format("{:%Z}", HMS(1255s)); // { dg-error "call to consteval function" } -#if _GLIBCXX_USE_CXX11_ABI -auto li1 = std::format("{:%d}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li2 = std::format("{:%w}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li3 = std::format("{:%m}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li4 = std::format("{:%y}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li5 = std::format("{:%F}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li6 = std::format("{:%T}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li7 = std::format("{:%Q}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto li8 = std::format("{:%Z}", local_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } - -auto si1 = std::format("{:%d}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si2 = std::format("{:%w}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si3 = std::format("{:%m}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si4 = std::format("{:%y}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si5 = std::format("{:%F}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si6 = std::format("{:%T}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si7 = std::format("{:%Q}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } -auto si8 = std::format("{:%Z}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } } +#if __cpp_lib_chrono >= 201803L +auto li1 = std::format("{:%d}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li2 = std::format("{:%w}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li3 = std::format("{:%m}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li4 = std::format("{:%y}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li5 = std::format("{:%F}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li6 = std::format("{:%T}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li7 = std::format("{:%Q}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto li8 = std::format("{:%Z}", local_info()); // { dg-error "call to consteval function" "" { target tzdb } } + +auto si1 = std::format("{:%d}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si2 = std::format("{:%w}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si3 = std::format("{:%m}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si4 = std::format("{:%y}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si5 = std::format("{:%F}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si6 = std::format("{:%T}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si7 = std::format("{:%Q}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } +auto si8 = std::format("{:%Z}", sys_info()); // { dg-error "call to consteval function" "" { target tzdb } } #endif // { dg-error "call to non-'constexpr' function" "" { target { c++23_down || { ! cxx11_abi } } } 0 } diff --git a/libstdc++-v3/testsuite/std/time/format/empty_spec.cc b/libstdc++-v3/testsuite/std/time/format/empty_spec.cc index b84f84a3069f..0d51a46f3e50 100644 --- a/libstdc++-v3/testsuite/std/time/format/empty_spec.cc +++ b/libstdc++-v3/testsuite/std/time/format/empty_spec.cc @@ -629,7 +629,7 @@ test_leap_second() WIDEN("2012-06-30 23:59:60") ); } -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L template<typename Dur, typename Dur2> auto make_zoned(const sys_time<Dur2>& st, const time_zone* tz) @@ -709,14 +709,14 @@ test_time_points() test_time_point<CharT, gps_clock, false>(); test_time_point<CharT, file_clock, false>(); test_leap_second<CharT>(); -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L test_zoned_time<CharT>(); #endif test_local_time_format<CharT>(); } -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L template<typename CharT> void test_sys_info() @@ -826,7 +826,7 @@ test_all() test_durations<CharT>(); test_calendar<CharT>(); test_time_points<CharT>(); -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L test_infos<CharT>(); #endif } diff --git a/libstdc++-v3/testsuite/std/time/format/nonlocking.cc b/libstdc++-v3/testsuite/std/time/format/nonlocking.cc index f1b57b5a3485..661bb26b7e02 100644 --- a/libstdc++-v3/testsuite/std/time/format/nonlocking.cc +++ b/libstdc++-v3/testsuite/std/time/format/nonlocking.cc @@ -35,7 +35,7 @@ static_assert(std::enable_nonlocking_formatter_optimization< static_assert(std::enable_nonlocking_formatter_optimization< std::chrono::year_month_weekday_last>); -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L static_assert(std::enable_nonlocking_formatter_optimization< std::chrono::local_info>); static_assert(std::enable_nonlocking_formatter_optimization< @@ -132,7 +132,7 @@ static_assert(std::enable_nonlocking_formatter_optimization< static_assert(std::enable_nonlocking_formatter_optimization< local_time_fmt<NonBufferedDuration>>); -#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L static_assert(std::enable_nonlocking_formatter_optimization< std::chrono::zoned_time<std::chrono::seconds>>); static_assert(!std::enable_nonlocking_formatter_optimization< diff --git a/libstdc++-v3/testsuite/std/time/format/pr117214.cc b/libstdc++-v3/testsuite/std/time/format/pr117214.cc index 79109c391518..9deeca3dc191 100644 --- a/libstdc++-v3/testsuite/std/time/format/pr117214.cc +++ b/libstdc++-v3/testsuite/std/time/format/pr117214.cc @@ -82,7 +82,7 @@ void maybe_set_tz() void test_c_zoned() { -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 201803L maybe_set_tz(); using namespace std::chrono; @@ -118,7 +118,7 @@ test_c_local() VERIFY( s.find("GMT") == s.npos ); VERIFY( s.find("UTC") == s.npos ); -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 201803L zoned_time z(system_clock::now()); VERIFY( s.find(z.get_info().abbrev) == s.npos ); #endif diff --git a/libstdc++-v3/testsuite/std/time/format/pr119517.cc b/libstdc++-v3/testsuite/std/time/format/pr119517.cc index 37bff86b13ab..a9920f236de5 100644 --- a/libstdc++-v3/testsuite/std/time/format/pr119517.cc +++ b/libstdc++-v3/testsuite/std/time/format/pr119517.cc @@ -35,7 +35,7 @@ static_assert( !std::formattable<std::chrono::tai_seconds, int> ); static_assert( !std::formattable<std::chrono::gps_seconds, int> ); static_assert( !std::formattable<std::chrono::local_seconds, int> ); static_assert( !std::formattable<std::chrono::file_time<std::chrono::seconds>, int> ); -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L static_assert( !std::formattable<std::chrono::zoned_seconds, int> ); static_assert( !std::formattable<std::chrono::sys_info, int> ); diff --git a/libstdc++-v3/testsuite/std/time/format/whitespace.cc b/libstdc++-v3/testsuite/std/time/format/whitespace.cc index debda08995cf..9637886aae5b 100644 --- a/libstdc++-v3/testsuite/std/time/format/whitespace.cc +++ b/libstdc++-v3/testsuite/std/time/format/whitespace.cc @@ -40,7 +40,7 @@ test_all() test<CharT>(2020y/January/8); test<CharT>(local_days(2020y/January/8)); test<CharT>(sys_days(2020y/January/8) + 13h + 10min + 5s); -#if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI +#if __cpp_lib_chrono >= 201803L test<CharT>(sys_info()); test<CharT>(local_info()); #endif diff --git a/libstdc++-v3/testsuite/std/time/hash.cc b/libstdc++-v3/testsuite/std/time/hash.cc index ed9139bb8108..0a8ac4a98720 100644 --- a/libstdc++-v3/testsuite/std/time/hash.cc +++ b/libstdc++-v3/testsuite/std/time/hash.cc @@ -188,7 +188,7 @@ void test01() test_hash(2024y / month(1234u) / Tuesday[last]); test_hash(2024y / August / weekday(1234u)[last]); -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 202306L // zoned_time test_hash(zoned_seconds("Europe/Rome", sys_seconds(1234s))); test_hash(zoned_time("Europe/Rome", system_clock::now())); @@ -238,7 +238,7 @@ void test03() { test_hash(d); test_hash(sys_time<D>(d)); -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 202306L test_hash(zoned_time<D>(sys_time<D>(d))); #endif }; @@ -261,7 +261,7 @@ void test04() static_assert(is_hash_poisoned<duration<non_hashable_arithmetic_wrapper<int>>>); static_assert(is_hash_poisoned<duration<non_hashable_arithmetic_wrapper<double>>>); -#if _GLIBCXX_USE_CXX11_ABI +#if __cpp_lib_chrono >= 202306L static_assert(!is_hash_poisoned<zoned_time<duration<int>>>); static_assert(!is_hash_poisoned<zoned_time<duration<double>>>); static_assert(!is_hash_poisoned<zoned_time<duration<arithmetic_wrapper<int>>>>); diff --git a/libstdc++-v3/testsuite/std/time/syn_c++20.cc b/libstdc++-v3/testsuite/std/time/syn_c++20.cc index 01d5b265129b..62abbc52ad2f 100644 --- a/libstdc++-v3/testsuite/std/time/syn_c++20.cc +++ b/libstdc++-v3/testsuite/std/time/syn_c++20.cc @@ -21,7 +21,7 @@ #include <chrono> // std::chrono::tzdb is not defined for the old std::string ABI. -#if _GLIBCXX_USE_CXX_ABI +#if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI # define EXPECTED_VALUE 201907L #else # define EXPECTED_VALUE 201611L diff --git a/libstdc++-v3/testsuite/std/time/tzdb/1.cc b/libstdc++-v3/testsuite/std/time/tzdb/1.cc index 7a31c1c20ba7..9a85e286133a 100644 --- a/libstdc++-v3/testsuite/std/time/tzdb/1.cc +++ b/libstdc++-v3/testsuite/std/time/tzdb/1.cc @@ -1,5 +1,5 @@ // { dg-do run { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc b/libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc index b26704f41469..67b40cfc9ad0 100644 --- a/libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc +++ b/libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc @@ -1,5 +1,5 @@ // { dg-do compile { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc b/libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc index 05bc275f5929..ca08f79bbe7d 100644 --- a/libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc +++ b/libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc @@ -1,5 +1,5 @@ // { dg-do compile { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc index c113eea6d3fe..6fc80fed577a 100644 --- a/libstdc++-v3/testsuite/std/time/zoned_time/io.cc +++ b/libstdc++-v3/testsuite/std/time/zoned_time/io.cc @@ -1,5 +1,5 @@ // { dg-do run { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } // { dg-timeout-factor 2 } #include <chrono> diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc b/libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc index 169dc6dae5cf..9950a1f8394d 100644 --- a/libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc +++ b/libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc @@ -1,5 +1,5 @@ // { dg-do compile { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> diff --git a/libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc b/libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc index e7bf05e94749..fd38c7c3844f 100644 --- a/libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc +++ b/libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc @@ -1,5 +1,5 @@ // { dg-do compile { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> diff --git a/libstdc++-v3/testsuite/std/time/zoned_traits.cc b/libstdc++-v3/testsuite/std/time/zoned_traits.cc index 83cf66351270..b3d77b7adbea 100644 --- a/libstdc++-v3/testsuite/std/time/zoned_traits.cc +++ b/libstdc++-v3/testsuite/std/time/zoned_traits.cc @@ -1,5 +1,5 @@ // { dg-do run { target c++20 } } -// { dg-require-effective-target cxx11_abi } +// { dg-require-effective-target tzdb } #include <chrono> #include <testsuite_hooks.h>
