public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [committed 1/2] libstdc++: Test for feature test macros more accurately
@ 2023-11-16  8:11 Jonathan Wakely
  2023-11-16  8:11 ` [committed 2/2] libstdc++: Only declare feature test macros in standard headers Jonathan Wakely
  0 siblings, 1 reply; 2+ messages in thread
From: Jonathan Wakely @ 2023-11-16  8:11 UTC (permalink / raw)
  To: libstdc++, gcc-patches

Tested x86_64-linux. Pushed to trunk.

-- >8 --

Tests which check for feature test macros should use the no_pch option,
so that we're really testing for the definition being in the intended
header, and not just testing that it's present in <bits/stdc++.h> (which
includes all the standard headers and so defines all the macros).

libstdc++-v3/ChangeLog:

	* testsuite/18_support/byte/requirements.cc: Disable PCH.
	* testsuite/18_support/destroying_delete.cc: Likewise.
	* testsuite/18_support/source_location/1.cc: Likewise.
	* testsuite/18_support/source_location/version.cc: Likewise.
	* testsuite/18_support/type_info/constexpr.cc: Likewise.
	* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
	Likewise.
	* testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
	* testsuite/19_diagnostics/stacktrace/synopsis.cc: Likewise.
	* testsuite/19_diagnostics/stacktrace/version.cc: Likewise.
	* testsuite/20_util/addressof/requirements/constexpr.cc:
	Likewise.
	* testsuite/20_util/allocator_traits/header-2.cc: Likewise.
	* testsuite/20_util/allocator_traits/header.cc: Likewise.
	* testsuite/20_util/as_const/1.cc: Likewise. Likewise.
	* testsuite/20_util/bitset/cons/constexpr_c++23.cc: Likewise.
	* testsuite/20_util/bitset/version.cc: Likewise.
	* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc:
	Likewise.
	* testsuite/20_util/duration_cast/rounding.cc: Likewise.
	* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
	Likewise.
	* testsuite/20_util/exchange/constexpr.cc: Likewise.
	* testsuite/20_util/expected/synopsis.cc: Likewise.
	* testsuite/20_util/expected/version.cc: Likewise.
	* testsuite/20_util/function_objects/bind_front/1.cc: Likewise.
	* testsuite/20_util/function_objects/bind_front/2.cc: Likewise.
	* testsuite/20_util/function_objects/invoke/3.cc: Likewise.
	* testsuite/20_util/function_objects/invoke/4.cc: Likewise.
	* testsuite/20_util/function_objects/invoke/constexpr.cc:
	Likewise.
	* testsuite/20_util/function_objects/invoke/version.cc:
	Likewise.
	* testsuite/20_util/function_objects/searchers.cc: Likewise.
	* testsuite/20_util/integer_comparisons/1.cc: Likewise.
	* testsuite/20_util/integer_comparisons/2.cc: Likewise.
	* testsuite/20_util/is_bounded_array/value.cc: Likewise.
	* testsuite/20_util/is_layout_compatible/value.cc: Likewise.
	* testsuite/20_util/is_layout_compatible/version.cc: Likewise.
	* testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
	Likewise.
	* testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
	* testsuite/20_util/is_nothrow_swappable/value.h: Likewise.
	* testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
	Likewise.
	* testsuite/20_util/is_nothrow_swappable_with/value.cc: Disable
	PCH.
	* testsuite/20_util/is_pointer_interconvertible/value.cc:
	Likewise.
	* testsuite/20_util/is_pointer_interconvertible/version.cc:
	Likewise.
	* testsuite/20_util/is_scoped_enum/value.cc: Likewise.
	* testsuite/20_util/is_scoped_enum/version.cc: Likewise.
	* testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/20_util/is_swappable/requirements/typedefs.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/20_util/is_swappable/value.cc: Disable PCH.
	* testsuite/20_util/is_swappable/value.h: Reorder headers.
	* testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/20_util/is_swappable_with/value.cc: Disable PCH.
	* testsuite/20_util/is_unbounded_array/value.cc: Likewise.
	* testsuite/20_util/move_only_function/cons.cc: Likewise.
	* testsuite/20_util/move_only_function/version.cc: Likewise.
	* testsuite/20_util/optional/monadic/and_then.cc: Likewise.
	* testsuite/20_util/optional/requirements.cc: Likewise.
	* testsuite/20_util/optional/version.cc: Likewise.
	* testsuite/20_util/owner_less/void.cc: Likewise.
	* testsuite/20_util/reference_from_temporary/value.cc: Likewise.
	* testsuite/20_util/reference_from_temporary/version.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/creation/array.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/version.cc: Likewise.
	* testsuite/20_util/time_point_cast/rounding.cc: Likewise.
	* testsuite/20_util/to_chars/constexpr.cc: Likewise.
	* testsuite/20_util/to_chars/result.cc: Likewise.
	* testsuite/20_util/to_chars/version.cc: Likewise.
	* testsuite/20_util/to_underlying/1.cc: Likewise.
	* testsuite/20_util/to_underlying/version.cc: Likewise.
	* testsuite/20_util/tuple/apply/1.cc: Likewise.
	* testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc:
	Likewise.
	* testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
	* testsuite/20_util/tuple/p2321r2.cc: Likewise.
	* testsuite/20_util/tuple/tuple_element_t.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/creation/for_overwrite.cc:
	Likewise.
	* testsuite/20_util/unreachable/1.cc: Likewise.
	* testsuite/20_util/unreachable/version.cc: Likewise.
	* testsuite/20_util/unwrap_reference/1.cc: Likewise.
	* testsuite/20_util/unwrap_reference/3.cc: Likewise.
	* testsuite/20_util/variant/constexpr.cc: Likewise.
	* testsuite/20_util/variant/version.cc: Likewise.
	* testsuite/20_util/variant/visit_inherited.cc: Likewise.
	* testsuite/20_util/void_t/1.cc: Likewise.
	* testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
	Likewise.
	* testsuite/21_strings/basic_string/cons/char/constexpr.cc:
	Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc:
	Likewise.
	* testsuite/21_strings/basic_string/erasure.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc:
	Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/version.cc:
	Likewise.
	* testsuite/21_strings/basic_string/version.cc: Likewise.
	* testsuite/21_strings/basic_string_view/operations/contains/char.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
	Likewise.
	* testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
	Likewise.
	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
	Likewise.
	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
	Likewise.
	* testsuite/21_strings/char_traits/requirements/version.cc:
	Likewise.
	* testsuite/23_containers/array/comparison_operators/constexpr.cc:
	Likewise.
	* testsuite/23_containers/array/creation/1.cc: Likewise.
	* testsuite/23_containers/array/creation/2.cc: Likewise.
	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
	Likewise.
	* testsuite/23_containers/array/requirements/constexpr_fill.cc:
	Likewise.
	* testsuite/23_containers/array/requirements/constexpr_iter.cc:
	Likewise.
	* testsuite/23_containers/deque/erasure.cc: Likewise.
	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
	* testsuite/23_containers/list/erasure.cc: Likewise.
	* testsuite/23_containers/map/erasure.cc: Likewise.
	* testsuite/23_containers/queue/cons_from_iters.cc: Likewise.
	* testsuite/23_containers/set/erasure.cc: Likewise.
	* testsuite/23_containers/span/1.cc: Likewise.
	* testsuite/23_containers/span/2.cc: Likewise.
	* testsuite/23_containers/stack/cons_from_iters.cc: Likewise.
	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
	* testsuite/23_containers/unordered_map/operations/1.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
	* testsuite/23_containers/unordered_set/operations/1.cc:
	Likewise.
	* testsuite/23_containers/vector/cons/constexpr.cc: Likewise.
	* testsuite/23_containers/vector/erasure.cc: Likewise.
	* testsuite/23_containers/vector/requirements/version.cc:
	Likewise.
	* testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
	* testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
	* testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
	Remove redundant checks already tested elsewhere.
	* testsuite/25_algorithms/constexpr_macro.cc: Likewise.
	* testsuite/25_algorithms/cpp_lib_constexpr.cc: Likewise.
	* testsuite/25_algorithms/fold_left/1.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test-2.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
	* testsuite/26_numerics/bit/bit.byteswap/byteswap.cc: Likewise.
	* testsuite/26_numerics/bit/bit.byteswap/version.cc: Likewise.
	* testsuite/26_numerics/bit/bit.cast/bit_cast.cc: Likewise.
	* testsuite/26_numerics/bit/bit.cast/version.cc: Likewise.
	* testsuite/26_numerics/bit/header-2.cc: Likewise.
	* testsuite/26_numerics/bit/header.cc: Likewise.
	* testsuite/26_numerics/complex/1.cc: Likewise.
	* testsuite/26_numerics/complex/2.cc: Likewise.
	* testsuite/26_numerics/endian/2.cc: Likewise.
	* testsuite/26_numerics/endian/3.cc: Likewise.
	* testsuite/26_numerics/gcd/1.cc: Likewise.
	* testsuite/26_numerics/lcm/1.cc: Likewise.
	* testsuite/26_numerics/lerp/1.cc: Likewise.
	* testsuite/26_numerics/lerp/version.cc: Likewise.
	* testsuite/26_numerics/midpoint/integral.cc: Likewise.
	* testsuite/26_numerics/midpoint/version.cc: Likewise.
	* testsuite/26_numerics/numbers/1.cc: Likewise.
	* testsuite/26_numerics/numbers/2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/native_handle/char/1.cc:
	Likewise.
	* testsuite/27_io/basic_filebuf/native_handle/version.cc:
	Likewise.
	* testsuite/27_io/basic_ofstream/open/char/noreplace.cc:
	Likewise.
	* testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc:
	Likewise.
	* testsuite/27_io/basic_syncbuf/1.cc: Likewise.
	* testsuite/27_io/basic_syncbuf/2.cc: Likewise.
	* testsuite/27_io/basic_syncstream/1.cc: Likewise.
	* testsuite/27_io/basic_syncstream/2.cc: Likewise.
	* testsuite/27_io/spanstream/1.cc: Likewise.
	* testsuite/27_io/spanstream/version.cc: Likewise.
	* testsuite/29_atomics/atomic/cons/value_init.cc: Likewise.
	* testsuite/29_atomics/atomic/lock_free_aliases.cc: Likewise.
	* testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise.
	* testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
	* testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
	Likewise.
	* testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise.
	* testsuite/30_threads/barrier/1.cc: Likewise.
	* testsuite/30_threads/barrier/2.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/stop_token/1.cc:
	Likewise.
	* testsuite/30_threads/condition_variable_any/stop_token/2.cc:
	Likewise.
	* testsuite/30_threads/jthread/1.cc: Likewise.
	* testsuite/30_threads/jthread/version.cc: Likewise.
	* testsuite/30_threads/latch/1.cc: Likewise.
	* testsuite/30_threads/latch/2.cc: Likewise.
	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
	Likewise.
	* testsuite/30_threads/semaphore/1.cc: Likewise.
	* testsuite/30_threads/semaphore/2.cc: Likewise.
	* testsuite/30_threads/stop_token/1.cc: Likewise.
	* testsuite/30_threads/stop_token/2.cc: Likewise.
	* testsuite/experimental/feat-char8_t.cc: Likewise.
	* testsuite/experimental/iterator/ostream_joiner.cc: Likewise.
	* testsuite/experimental/numeric/gcd.cc: Likewise.
	* testsuite/experimental/scopeguard/uniqueres.cc: Likewise.
	* testsuite/std/concepts/1.cc: Likewise.
	* testsuite/std/concepts/2.cc: Likewise.
	* testsuite/std/ranges/adaptors/as_const/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/as_rvalue/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/chunk/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/chunk_by/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/enumerate/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/join_with/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/slide/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/stride/1.cc: Likewise.
	* testsuite/std/ranges/cartesian_product/1.cc: Likewise.
	* testsuite/std/ranges/headers/ranges/synopsis.cc: Likewise.
	* testsuite/std/ranges/repeat/1.cc: Likewise.
	* testsuite/std/ranges/version_c++23.cc: Likewise.
	* testsuite/std/ranges/zip/1.cc: Likewise.
	* testsuite/std/time/syn_c++20.cc: Likewise.
	* testsuite/experimental/feat-cxx14.cc: Likewise. Include
	<algorithm> and <iterator>.
	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
	Adjust dg-error line numbers.
---
 .../testsuite/18_support/byte/requirements.cc |  1 +
 .../testsuite/18_support/destroying_delete.cc |  1 +
 .../testsuite/18_support/source_location/1.cc |  3 +-
 .../18_support/source_location/version.cc     |  1 +
 .../18_support/type_info/constexpr.cc         |  1 +
 .../uncaught_exceptions.cc                    |  1 +
 .../19_diagnostics/stacktrace/output.cc       |  1 +
 .../19_diagnostics/stacktrace/synopsis.cc     |  1 +
 .../19_diagnostics/stacktrace/version.cc      |  1 +
 .../addressof/requirements/constexpr.cc       |  1 +
 .../20_util/allocator_traits/header-2.cc      |  1 +
 .../20_util/allocator_traits/header.cc        |  1 +
 libstdc++-v3/testsuite/20_util/as_const/1.cc  |  1 +
 .../20_util/bitset/cons/constexpr_c++23.cc    |  1 +
 .../testsuite/20_util/bitset/version.cc       |  1 +
 .../duration/arithmetic/constexpr_c++17.cc    |  1 +
 .../20_util/duration_cast/rounding.cc         |  1 +
 .../members/weak_from_this.cc                 |  1 +
 .../testsuite/20_util/exchange/constexpr.cc   |  1 +
 .../testsuite/20_util/expected/synopsis.cc    |  1 +
 .../testsuite/20_util/expected/version.cc     |  1 +
 .../20_util/function_objects/bind_front/1.cc  |  8 +++--
 .../20_util/function_objects/bind_front/2.cc  | 12 ++++---
 .../20_util/function_objects/invoke/3.cc      |  1 +
 .../20_util/function_objects/invoke/4.cc      |  1 +
 .../function_objects/invoke/constexpr.cc      |  5 +--
 .../function_objects/invoke/version.cc        |  1 +
 .../20_util/function_objects/searchers.cc     | 18 +++++-----
 .../20_util/integer_comparisons/1.cc          |  1 +
 .../20_util/integer_comparisons/2.cc          |  1 +
 .../20_util/is_bounded_array/value.cc         |  8 +++--
 .../20_util/is_layout_compatible/value.cc     |  2 ++
 .../20_util/is_layout_compatible/version.cc   |  1 +
 .../requirements/explicit_instantiation.cc    |  1 +
 .../requirements/typedefs.cc                  |  1 +
 .../20_util/is_nothrow_swappable/value.cc     |  1 +
 .../20_util/is_nothrow_swappable/value.h      | 13 ++++----
 .../requirements/explicit_instantiation.cc    |  6 ----
 .../requirements/typedefs.cc                  |  6 ----
 .../is_nothrow_swappable_with/value.cc        |  4 ++-
 .../is_pointer_interconvertible/value.cc      |  2 ++
 .../is_pointer_interconvertible/version.cc    |  1 +
 .../testsuite/20_util/is_scoped_enum/value.cc |  1 +
 .../20_util/is_scoped_enum/version.cc         |  1 +
 .../requirements/explicit_instantiation.cc    |  6 ----
 .../is_swappable/requirements/typedefs.cc     |  6 ----
 .../testsuite/20_util/is_swappable/value.cc   |  1 +
 .../testsuite/20_util/is_swappable/value.h    | 13 ++++----
 .../requirements/explicit_instantiation.cc    |  6 ----
 .../requirements/typedefs.cc                  |  6 ----
 .../20_util/is_swappable_with/value.cc        |  4 ++-
 .../20_util/is_unbounded_array/value.cc       |  4 ++-
 .../20_util/move_only_function/cons.cc        |  1 +
 .../20_util/move_only_function/version.cc     |  1 +
 .../20_util/optional/monadic/and_then.cc      |  1 +
 .../20_util/optional/requirements.cc          |  1 +
 .../testsuite/20_util/optional/version.cc     |  1 +
 .../testsuite/20_util/owner_less/void.cc      |  3 +-
 .../20_util/reference_from_temporary/value.cc |  8 +++--
 .../reference_from_temporary/version.cc       |  1 +
 .../shared_ptr/atomic/atomic_shared_ptr.cc    |  1 +
 .../20_util/shared_ptr/creation/array.cc      |  1 +
 .../20_util/shared_ptr/creation/overwrite.cc  |  1 +
 .../20_util/shared_ptr/creation/version.cc    |  1 +
 .../20_util/time_point_cast/rounding.cc       |  1 +
 .../testsuite/20_util/to_chars/constexpr.cc   |  1 +
 .../testsuite/20_util/to_chars/result.cc      |  4 ++-
 .../testsuite/20_util/to_chars/version.cc     |  1 +
 .../testsuite/20_util/to_underlying/1.cc      |  1 +
 .../20_util/to_underlying/version.cc          |  1 +
 .../testsuite/20_util/tuple/apply/1.cc        |  4 ++-
 .../tuple/cons/constexpr_allocator_arg_t.cc   |  1 +
 .../20_util/tuple/make_from_tuple/1.cc        |  8 +++--
 .../testsuite/20_util/tuple/p2321r2.cc        |  6 ++--
 .../20_util/tuple/tuple_element_t.cc          |  1 +
 .../unique_ptr/cons/constexpr_c++20.cc        |  1 +
 .../unique_ptr/creation/for_overwrite.cc      |  1 +
 .../testsuite/20_util/unreachable/1.cc        |  1 +
 .../testsuite/20_util/unreachable/version.cc  |  1 +
 .../testsuite/20_util/unwrap_reference/1.cc   |  1 +
 .../testsuite/20_util/unwrap_reference/3.cc   |  1 +
 .../testsuite/20_util/variant/constexpr.cc    |  1 +
 .../testsuite/20_util/variant/version.cc      |  1 +
 .../20_util/variant/visit_inherited.cc        |  1 +
 libstdc++-v3/testsuite/20_util/void_t/1.cc    |  1 +
 .../capacity/char/resize_and_overwrite.cc     |  2 +-
 .../basic_string/cons/char/constexpr.cc       |  1 +
 .../basic_string/cons/wchar_t/constexpr.cc    |  1 +
 .../21_strings/basic_string/erasure.cc        |  4 ++-
 .../char/to_string_float.cc                   | 33 +++++++++++--------
 .../numeric_conversions/version.cc            |  2 ++
 .../21_strings/basic_string/version.cc        |  1 +
 .../operations/contains/char.cc               |  1 +
 .../operations/contains/char/2.cc             |  1 +
 .../operations/copy/char/constexpr.cc         |  1 +
 .../requirements/constexpr_functions_c++17.cc |  1 +
 .../requirements/constexpr_functions_c++20.cc |  1 +
 .../char_traits/requirements/version.cc       |  1 +
 .../array/comparison_operators/constexpr.cc   |  3 +-
 .../23_containers/array/creation/1.cc         |  1 +
 .../23_containers/array/creation/2.cc         |  1 +
 .../array/element_access/constexpr_c++17.cc   |  1 +
 .../array/requirements/constexpr_fill.cc      |  3 +-
 .../array/requirements/constexpr_iter.cc      |  3 +-
 .../array/tuple_interface/get_neg.cc          |  6 ++--
 .../testsuite/23_containers/deque/erasure.cc  |  4 ++-
 .../23_containers/forward_list/erasure.cc     |  4 ++-
 .../testsuite/23_containers/list/erasure.cc   |  4 ++-
 .../testsuite/23_containers/map/erasure.cc    |  6 ++--
 .../23_containers/queue/cons_from_iters.cc    |  1 +
 .../testsuite/23_containers/set/erasure.cc    |  4 ++-
 .../testsuite/23_containers/span/1.cc         |  1 +
 .../testsuite/23_containers/span/2.cc         |  1 +
 .../23_containers/stack/cons_from_iters.cc    |  1 +
 .../23_containers/unordered_map/erasure.cc    |  6 ++--
 .../unordered_map/operations/1.cc             |  1 +
 .../23_containers/unordered_set/erasure.cc    |  4 ++-
 .../unordered_set/operations/1.cc             |  1 +
 .../23_containers/vector/cons/constexpr.cc    |  1 +
 .../testsuite/23_containers/vector/erasure.cc |  4 ++-
 .../vector/requirements/version.cc            |  1 +
 .../24_iterators/insert_iterator/constexpr.cc |  1 +
 .../25_algorithms/clamp/constexpr.cc          |  8 +++--
 .../requirements/explicit_instantiation/1.cc  |  6 ----
 .../25_algorithms/constexpr_macro.cc          |  1 +
 .../25_algorithms/cpp_lib_constexpr.cc        |  1 +
 .../testsuite/25_algorithms/fold_left/1.cc    |  6 ++--
 .../25_algorithms/pstl/feature_test-2.cc      |  1 +
 .../25_algorithms/pstl/feature_test-3.cc      |  1 +
 .../25_algorithms/pstl/feature_test-4.cc      |  1 +
 .../25_algorithms/pstl/feature_test-5.cc      |  1 +
 .../25_algorithms/pstl/feature_test.cc        |  1 +
 .../26_numerics/bit/bit.byteswap/byteswap.cc  |  1 +
 .../26_numerics/bit/bit.byteswap/version.cc   |  1 +
 .../26_numerics/bit/bit.cast/bit_cast.cc      |  1 +
 .../26_numerics/bit/bit.cast/version.cc       |  1 +
 .../testsuite/26_numerics/bit/header-2.cc     |  1 +
 .../testsuite/26_numerics/bit/header.cc       |  1 +
 .../testsuite/26_numerics/complex/1.cc        |  1 +
 .../testsuite/26_numerics/complex/2.cc        |  1 +
 .../testsuite/26_numerics/endian/2.cc         |  1 +
 .../testsuite/26_numerics/endian/3.cc         |  1 +
 libstdc++-v3/testsuite/26_numerics/gcd/1.cc   |  1 +
 libstdc++-v3/testsuite/26_numerics/lcm/1.cc   |  1 +
 libstdc++-v3/testsuite/26_numerics/lerp/1.cc  |  1 +
 .../testsuite/26_numerics/lerp/version.cc     |  1 +
 .../26_numerics/midpoint/integral.cc          |  1 +
 .../testsuite/26_numerics/midpoint/version.cc |  1 +
 .../testsuite/26_numerics/numbers/1.cc        |  1 +
 .../testsuite/26_numerics/numbers/2.cc        |  1 +
 .../basic_filebuf/native_handle/char/1.cc     |  1 +
 .../basic_filebuf/native_handle/version.cc    |  1 +
 .../basic_ofstream/open/char/noreplace.cc     |  1 +
 .../basic_ofstream/open/wchar_t/noreplace.cc  |  1 +
 .../testsuite/27_io/basic_syncbuf/1.cc        |  1 +
 .../testsuite/27_io/basic_syncbuf/2.cc        |  1 +
 .../testsuite/27_io/basic_syncstream/1.cc     |  1 +
 .../testsuite/27_io/basic_syncstream/2.cc     |  1 +
 libstdc++-v3/testsuite/27_io/spanstream/1.cc  |  1 +
 .../testsuite/27_io/spanstream/version.cc     |  1 +
 .../29_atomics/atomic/cons/value_init.cc      |  1 +
 .../29_atomics/atomic/lock_free_aliases.cc    |  1 +
 .../29_atomics/atomic/wait_notify/1.cc        |  1 +
 .../29_atomics/atomic/wait_notify/2.cc        |  1 +
 .../headers/stdatomic.h/c_compat.cc           |  1 +
 .../29_atomics/headers/stdatomic.h/version.cc |  1 +
 .../testsuite/30_threads/barrier/1.cc         |  1 +
 .../testsuite/30_threads/barrier/2.cc         |  1 +
 .../condition_variable_any/stop_token/1.cc    |  1 +
 .../condition_variable_any/stop_token/2.cc    |  1 +
 .../testsuite/30_threads/jthread/1.cc         |  1 +
 .../testsuite/30_threads/jthread/version.cc   |  1 +
 libstdc++-v3/testsuite/30_threads/latch/1.cc  |  1 +
 libstdc++-v3/testsuite/30_threads/latch/2.cc  |  1 +
 .../scoped_lock/requirements/typedefs.cc      |  2 +-
 .../testsuite/30_threads/semaphore/1.cc       |  1 +
 .../testsuite/30_threads/semaphore/2.cc       |  1 +
 .../testsuite/30_threads/stop_token/1.cc      |  1 +
 .../testsuite/30_threads/stop_token/2.cc      |  1 +
 .../testsuite/experimental/feat-char8_t.cc    |  1 +
 .../testsuite/experimental/feat-cxx14.cc      |  3 ++
 .../experimental/iterator/ostream_joiner.cc   |  6 ++--
 .../testsuite/experimental/numeric/gcd.cc     |  4 ++-
 .../experimental/scopeguard/uniqueres.cc      |  4 ++-
 libstdc++-v3/testsuite/std/concepts/1.cc      |  1 +
 libstdc++-v3/testsuite/std/concepts/2.cc      |  1 +
 .../std/ranges/adaptors/as_const/1.cc         | 10 +++---
 .../std/ranges/adaptors/as_rvalue/1.cc        | 10 +++---
 .../testsuite/std/ranges/adaptors/chunk/1.cc  | 10 +++---
 .../std/ranges/adaptors/chunk_by/1.cc         | 10 +++---
 .../std/ranges/adaptors/enumerate/1.cc        | 10 +++---
 .../std/ranges/adaptors/join_with/1.cc        | 10 +++---
 .../testsuite/std/ranges/adaptors/slide/1.cc  | 10 +++---
 .../testsuite/std/ranges/adaptors/stride/1.cc |  8 +++--
 .../std/ranges/cartesian_product/1.cc         | 10 +++---
 .../std/ranges/headers/ranges/synopsis.cc     |  1 +
 libstdc++-v3/testsuite/std/ranges/repeat/1.cc |  8 +++--
 .../testsuite/std/ranges/version_c++23.cc     |  1 +
 libstdc++-v3/testsuite/std/ranges/zip/1.cc    | 10 +++---
 libstdc++-v3/testsuite/std/time/syn_c++20.cc  |  1 +
 200 files changed, 368 insertions(+), 174 deletions(-)

diff --git a/libstdc++-v3/testsuite/18_support/byte/requirements.cc b/libstdc++-v3/testsuite/18_support/byte/requirements.cc
index 1d3b269a677..1c62f762e87 100644
--- a/libstdc++-v3/testsuite/18_support/byte/requirements.cc
+++ b/libstdc++-v3/testsuite/18_support/byte/requirements.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <cstddef>
 
diff --git a/libstdc++-v3/testsuite/18_support/destroying_delete.cc b/libstdc++-v3/testsuite/18_support/destroying_delete.cc
index 2ee927225a0..e6c5f28d3e4 100644
--- a/libstdc++-v3/testsuite/18_support/destroying_delete.cc
+++ b/libstdc++-v3/testsuite/18_support/destroying_delete.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <new>
 #include <type_traits>
diff --git a/libstdc++-v3/testsuite/18_support/source_location/1.cc b/libstdc++-v3/testsuite/18_support/source_location/1.cc
index 48707b3c3e7..f89944cedd1 100644
--- a/libstdc++-v3/testsuite/18_support/source_location/1.cc
+++ b/libstdc++-v3/testsuite/18_support/source_location/1.cc
@@ -20,6 +20,7 @@
 
 // { dg-options "-include string -include stdexcept" }
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <source_location>
 
@@ -125,7 +126,7 @@ int main ()
     member_defaulted_sl.member.file_name());
   std::string_view member_defaulted_sl_fn_name(
     member_defaulted_sl.member.function_name());
-  VERIFY(member_defaulted_sl.member.line() == 46);
+  VERIFY(member_defaulted_sl.member.line() == 47);
   // closing paren of constructor declaration
   VERIFY(member_defaulted_sl.member.column() == 25);
   VERIFY(member_defaulted_sl_fn_name.starts_with("s::s(int)"sv));
diff --git a/libstdc++-v3/testsuite/18_support/source_location/version.cc b/libstdc++-v3/testsuite/18_support/source_location/version.cc
index 8cb59023e12..8cf8c5b3917 100644
--- a/libstdc++-v3/testsuite/18_support/source_location/version.cc
+++ b/libstdc++-v3/testsuite/18_support/source_location/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/18_support/type_info/constexpr.cc b/libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
index 9390aa45f80..bb4bb4485c2 100644
--- a/libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
+++ b/libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
@@ -1,6 +1,7 @@
 // { dg-options "-frtti" }
 // { dg-do compile { target c++23 } }
 // { dg-additional-options "-fdelete-null-pointer-checks" }
+// { dg-add-options no_pch }
 
 #include <typeinfo>
 
diff --git a/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc b/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
index 7f3ddf05103..405f81cae4d 100644
--- a/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
+++ b/libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <cassert>
 #include <exception>
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
index 35389ecbd85..4960ccb85b8 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/output.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-effective-target stacktrace }
+// { dg-add-options no_pch }
 
 #include <stacktrace>
 #include <sstream>
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc
index 5e32527b88b..9e775b86ac9 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc
@@ -1,6 +1,7 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-effective-target stacktrace }
 // { dg-require-normal-namespace "" }
+// { dg-add-options no_pch }
 
 #include <stacktrace>
 
diff --git a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc
index ecfaf4165c3..21c2d48b7b5 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++23 } }
 // { dg-require-effective-target stacktrace }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc b/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
index bc024d69292..38c4f0495cd 100644
--- a/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
index 9393d8a885d..0ebef20dec3 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
index 4a88abaadb7..de9327f935a 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/as_const/1.cc b/libstdc++-v3/testsuite/20_util/as_const/1.cc
index bcff9f78dda..eae34018002 100644
--- a/libstdc++-v3/testsuite/20_util/as_const/1.cc
+++ b/libstdc++-v3/testsuite/20_util/as_const/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
index 871d17d9b04..7e2eba5095d 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
@@ -1,6 +1,7 @@
 // { dg-do compile { target c++23 } }
 // This test relies on std::string.
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <bitset>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/version.cc b/libstdc++-v3/testsuite/20_util/bitset/version.cc
index 1badb29507a..8117092b417 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/version.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++23 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc b/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
index 6fe5475caf0..d06c5c836f3 100644
--- a/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2011-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc b/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
index 0be51916942..77c3497a890 100644
--- a/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
+++ b/libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <chrono>
 
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
index bd157325945..fd47e839baa 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++17 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/exchange/constexpr.cc b/libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
index 2a7d79201b1..3c687187a24 100644
--- a/libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/expected/synopsis.cc b/libstdc++-v3/testsuite/20_util/expected/synopsis.cc
index 237754dd780..a0d2d5bea22 100644
--- a/libstdc++-v3/testsuite/20_util/expected/synopsis.cc
+++ b/libstdc++-v3/testsuite/20_util/expected/synopsis.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-normal-namespace "" }
+// { dg-add-options no_pch }
 
 #include <expected>
 
diff --git a/libstdc++-v3/testsuite/20_util/expected/version.cc b/libstdc++-v3/testsuite/20_util/expected/version.cc
index b592e641003..6deaa68a75e 100644
--- a/libstdc++-v3/testsuite/20_util/expected/version.cc
+++ b/libstdc++-v3/testsuite/20_util/expected/version.cc
@@ -1,4 +1,5 @@
 // { dg-do preprocess { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
index 8a8c11a79c2..3baa7219b5c 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
@@ -16,16 +16,18 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <functional>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_bind_front
-# error "Feature test macro for bind_front is missing"
+# error "Feature test macro for bind_front is missing in <functional>"
 #elif __cpp_lib_bind_front < 201902L
-# error "Feature test macro for bind_front has wrong value"
+# error "Feature test macro for bind_front has wrong value in <functional>"
 #endif
 
+#include <testsuite_hooks.h>
+
 using std::bind_front;
 using std::is_same_v;
 using std::is_invocable_v;
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
index 0ea892612f6..7d349377c89 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
@@ -16,20 +16,22 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <functional>
-#include <memory>
-#include <string>
-#include <testsuite_hooks.h>
 
 // P1651R0 bind_front should not unwrap reference_wrapper
 
 #ifndef __cpp_lib_bind_front
-# error "Feature test macro for bind_front is missing"
+# error "Feature test macro for bind_front is missing in <functional>"
 #elif __cpp_lib_bind_front < 201907L
-# error "Feature test macro for bind_front has wrong value"
+# error "Feature test macro for bind_front has wrong value in <functional>"
 #endif
 
+#include <memory>
+#include <string>
+#include <testsuite_hooks.h>
+
 void functionAcceptingStringView(std::string_view) { }
 
 void
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
index 1a4c9327f63..6cb0875c360 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc
index 38367f70534..9356a400c01 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
index 122e2116f1a..4e13e8701da 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
@@ -16,13 +16,14 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <functional>
 
 #ifndef __cpp_lib_constexpr_functional
-# error "Feature test macro for constexpr invoke is missing"
+# error "Feature test macro for constexpr invoke is missing in <functional>"
 #elif __cpp_lib_constexpr_functional < 201907L
-# error "Feature test macro for constexpr invoke has wrong value"
+# error "Feature test macro for constexpr invoke has wrong value in <functional>"
 #endif
 
 constexpr int inc(int i) { return i + 1; }
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc b/libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc
index 2dc71aea504..cdd5505ba44 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/searchers.cc b/libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
index 6f1a8dd3175..eb9f49f3da3 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
@@ -16,22 +16,24 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <functional>
+
+#if __STDC_HOSTED__
+# ifndef __cpp_lib_boyer_moore_searcher
+#  error "Feature-test macro for searchers missing in <functional>"
+# elif __cpp_lib_boyer_moore_searcher < 201603
+#  error "Feature-test macro for searchers has wrong value in <functional>"
+# endif
+#endif // HOSTED
+
 #include <string_view>
 #include <cstring>
 #include <cctype>
 #include <algorithm>
 #include <testsuite_hooks.h>
 
-#if __STDC_HOSTED__
-# ifndef __cpp_lib_boyer_moore_searcher
-#  error "Feature-test macro for searchers missing"
-# elif __cpp_lib_boyer_moore_searcher < 201603
-#  error "Feature-test macro for searchers has wrong value"
-# endif
-#endif // HOSTED
-
 using std::default_searcher;
 #if __STDC_HOSTED__
 using std::boyer_moore_searcher;
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
index 245fec96315..585d8a1d382 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc b/libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
index 3e2bf573c0b..3979e16319f 100644
--- a/libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
+++ b/libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc b/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
index dd417cf6a2a..4c7d848dcb5 100644
--- a/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
@@ -18,14 +19,15 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
 
 #ifndef __cpp_lib_bounded_array_traits
-# error "Feature test macro for is_bounded_array is missing"
+# error "Feature test macro for is_bounded_array is missing in <type_traits>"
 #elif __cpp_lib_bounded_array_traits < 201902L
-# error "Feature test macro for is_bounded_array has wrong value"
+# error "Feature test macro for is_bounded_array has wrong value in <type_traits>"
 #endif
 
+#include <testsuite_tr1.h>
+
 void test01()
 {
   using std::is_bounded_array;
diff --git a/libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc b/libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
index 6232f6ac671..51ca384ee71 100644
--- a/libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
+
 #include <type_traits>
 
 #ifndef __cpp_lib_is_layout_compatible
diff --git a/libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc b/libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
index be6079d6b5e..d44442e6a2c 100644
--- a/libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
+++ b/libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
index 87695bcd6e8..27268eec08f 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2015-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
index ac39c8c7b2f..c5d4afbe709 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2015-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
index 247daf21fab..185f4aaee74 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2015-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
index 45cee6915f0..fa5a642197f 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
@@ -16,12 +16,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
-#include <utility>
-#include <array>
-#include <tuple>
-#include <queue>
-#include <stack>
 
 #if defined(test_std_is_nothrow_swappable)
 #  ifndef __cpp_lib_is_swappable
@@ -41,6 +35,13 @@ using is_nothrow_swappable = std::__is_nothrow_swappable<T>;
         "test_std_is_nothrow_swappable_ext need to be defined"
 #endif
 
+#include <utility>
+#include <array>
+#include <tuple>
+#include <queue>
+#include <stack>
+#include <testsuite_tr1.h>
+
 namespace funny {
   struct F {};
   void swap(F&, F&) = delete;
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
index aa2bade16c2..1b0dc1e2a8c 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_nothrow_swappable_with missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_nothrow_swappable_with has wrong value"
-#endif
-
 namespace std
 {
   typedef short test_type;
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
index f90f19cb747..509b5e78d3f 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_nothrow_swappable_with missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_nothrow_swappable_with has wrong value"
-#endif
-
 void test01()
 {
   // Check for required typedefs
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
index 50fa29723c5..b138f84ddab 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2016-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
 
 #ifndef __cpp_lib_is_swappable
 # error "Feature-test macro for is_nothrow_swappable_with missing"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for is_nothrow_swappable_with has wrong value"
 #endif
 
+#include <testsuite_tr1.h>
+
 namespace funny {
   struct T0 {};
 
diff --git a/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc b/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
index fb4652d932d..4d67c8c8df1 100644
--- a/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
+
 #include <type_traits>
 
 #ifndef __cpp_lib_is_pointer_interconvertible
diff --git a/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc b/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc
index 82882237e9d..9347cc0a2ce 100644
--- a/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc
+++ b/libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc b/libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
index 43dc03be8a8..9f3bd0277ec 100644
--- a/libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <type_traits>
 
diff --git a/libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc b/libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
index 698cb48d3b3..7ef8a257401 100644
--- a/libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
+++ b/libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
index ad3e12e5a71..0d47bd59ca8 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_swappable missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_swappable has wrong value"
-#endif
-
 namespace std
 {
   typedef short test_type;
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
index 3356d08ef69..ac742473066 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_swappable missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_swappable has wrong value"
-#endif
-
 void test01()
 {
   // Check for required typedefs
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable/value.cc b/libstdc++-v3/testsuite/20_util/is_swappable/value.cc
index ac875393158..6b3ee1857bd 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2015-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable/value.h b/libstdc++-v3/testsuite/20_util/is_swappable/value.h
index c532c8323d1..210509a2e7b 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable/value.h
+++ b/libstdc++-v3/testsuite/20_util/is_swappable/value.h
@@ -16,12 +16,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
-#include <utility>
-#include <array>
-#include <tuple>
-#include <queue>
-#include <stack>
 
 #if defined(test_std_is_swappable)
 #  ifndef __cpp_lib_is_swappable
@@ -41,6 +35,13 @@ using is_swappable = std::__is_swappable<T>;
         "need to be defined"
 #endif
 
+#include <utility>
+#include <array>
+#include <tuple>
+#include <queue>
+#include <stack>
+#include <testsuite_tr1.h>
+
 namespace funny {
   struct F {};
   void swap(F&, F&) = delete;
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
index 1f3bc6b12d8..c1c90aef5a2 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_swappable_with missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_swappable_with has wrong value"
-#endif
-
 namespace std
 {
   typedef short test_type;
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
index d7354e74351..8fc3b9a5d52 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
@@ -19,12 +19,6 @@
 
 #include <type_traits>
 
-#ifndef __cpp_lib_is_swappable
-# error "Feature-test macro for is_swappable_with missing"
-#elif __cpp_lib_is_swappable != 201603
-# error "Feature-test macro for is_swappable_with has wrong value"
-#endif
-
 void test01()
 {
   // Check for required typedefs
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc b/libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
index c5294485ae1..51ee09abf91 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2016-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
 
 #ifndef __cpp_lib_is_swappable
 # error "Feature-test macro for is_swappable_with missing"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for is_swappable_with has wrong value"
 #endif
 
+#include <testsuite_tr1.h>
+
 namespace funny {
   struct T0 {};
 
diff --git a/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc b/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
index 495e1e9d89e..7c0b422746e 100644
--- a/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_tr1.h>
 
 #ifndef __cpp_lib_bounded_array_traits
 # error "Feature test macro for is_unbounded_array is missing"
@@ -26,6 +26,8 @@
 # error "Feature test macro for is_unbounded_array has wrong value"
 #endif
 
+#include <testsuite_tr1.h>
+
 void test01()
 {
   using std::is_unbounded_array;
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc b/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
index ffe2398f80c..5498f42add5 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/version.cc b/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
index b051a63f729..7721141b8b4 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc b/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc
index a969ca5077e..dd392e2ec00 100644
--- a/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc
+++ b/libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <optional>
 
diff --git a/libstdc++-v3/testsuite/20_util/optional/requirements.cc b/libstdc++-v3/testsuite/20_util/optional/requirements.cc
index 3edfb5cf9b1..cb523c8dc16 100644
--- a/libstdc++-v3/testsuite/20_util/optional/requirements.cc
+++ b/libstdc++-v3/testsuite/20_util/optional/requirements.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 }  }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2013-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/optional/version.cc b/libstdc++-v3/testsuite/20_util/optional/version.cc
index 2fd52f7c194..7e63d425796 100644
--- a/libstdc++-v3/testsuite/20_util/optional/version.cc
+++ b/libstdc++-v3/testsuite/20_util/optional/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/owner_less/void.cc b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
index 3c86eda9e65..e5de0bf8de6 100644
--- a/libstdc++-v3/testsuite/20_util/owner_less/void.cc
+++ b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
@@ -17,13 +17,14 @@
 
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <memory>
 
 #if __cplusplus >= 201402L
 // The feature-test macro is only defined for C++14 and later.
 # if __cpp_lib_transparent_operators < 201510
-#  error "__cpp_lib_transparent_operators < 201510"
+#  error "__cpp_lib_transparent_operators < 201510 in <memory>"
 # endif
 #endif
 
diff --git a/libstdc++-v3/testsuite/20_util/reference_from_temporary/value.cc b/libstdc++-v3/testsuite/20_util/reference_from_temporary/value.cc
index 2df559bd0dd..877c1c93b46 100644
--- a/libstdc++-v3/testsuite/20_util/reference_from_temporary/value.cc
+++ b/libstdc++-v3/testsuite/20_util/reference_from_temporary/value.cc
@@ -16,16 +16,18 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <type_traits>
-#include <testsuite_tr1.h>
 
 #ifndef __cpp_lib_reference_from_temporary
-# error "Feature test macro for reference_from_temporary is missing in <version>"
+# error "Feature test macro for reference_from_temporary is missing in <type_traits>"
 #elif __cpp_lib_reference_from_temporary < 202202L
-# error "Feature test macro for reference_from_temporary has wrong value in <version>"
+# error "Feature test macro for reference_from_temporary has wrong value in <type_traits>"
 #endif
 
+#include <testsuite_tr1.h>
+
 void test01()
 {
   using std::reference_constructs_from_temporary;
diff --git a/libstdc++-v3/testsuite/20_util/reference_from_temporary/version.cc b/libstdc++-v3/testsuite/20_util/reference_from_temporary/version.cc
index 7f42c190961..761b9505c34 100644
--- a/libstdc++-v3/testsuite/20_util/reference_from_temporary/version.cc
+++ b/libstdc++-v3/testsuite/20_util/reference_from_temporary/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
index 6f790ac6c8e..e972f8af9e5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
@@ -2,6 +2,7 @@
 // { dg-require-effective-target gthreads }
 // { dg-additional-options "-pthread" { target pthread } }
 // { dg-add-options libatomic }
+// { dg-add-options no_pch }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
index 534036287fc..5062a3d1ebf 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // C++20 20.11.3.7 shared_ptr Creation [util.smartptr.shared.create]
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
index d78ee698eb1..5b8af326b67 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
@@ -1,6 +1,7 @@
 // { dg-options "-fno-lifetime-dse -O0" }
 // { dg-do run { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 // C++20 20.11.3.7 shared_ptr Creation [util.smartptr.shared.create]
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
index 9c0fc5dda39..bc83c332564 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 // C++20 20.11.3.7 shared_ptr Creation [util.smartptr.shared.create]
 
diff --git a/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc b/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
index ae1ee684a50..43d902f3768 100644
--- a/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
+++ b/libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <chrono>
 
diff --git a/libstdc++-v3/testsuite/20_util/to_chars/constexpr.cc b/libstdc++-v3/testsuite/20_util/to_chars/constexpr.cc
index e51ea4dbbbe..86b01ee3053 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/constexpr.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <charconv>
 
diff --git a/libstdc++-v3/testsuite/20_util/to_chars/result.cc b/libstdc++-v3/testsuite/20_util/to_chars/result.cc
index 5284680460a..c1010534e80 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/result.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/result.cc
@@ -1,12 +1,14 @@
 // { dg-do run { target c++26 } }
+// { dg-add-options no_pch }
 
 #include <charconv>
-#include <testsuite_hooks.h>
 
 #if defined(__cpp_lib_to_chars) && __cpp_lib_to_chars < 202306L
 # error "Feature-test macro for std::to_chars has wrong value in <charconv>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test_result()
 {
diff --git a/libstdc++-v3/testsuite/20_util/to_chars/version.cc b/libstdc++-v3/testsuite/20_util/to_chars/version.cc
index df1804e1ff4..41bb35b93f6 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/version.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++23 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/to_underlying/1.cc b/libstdc++-v3/testsuite/20_util/to_underlying/1.cc
index c970238b297..520f3f4405b 100644
--- a/libstdc++-v3/testsuite/20_util/to_underlying/1.cc
+++ b/libstdc++-v3/testsuite/20_util/to_underlying/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/to_underlying/version.cc b/libstdc++-v3/testsuite/20_util/to_underlying/version.cc
index f800d7c09e5..0002eb8985c 100644
--- a/libstdc++-v3/testsuite/20_util/to_underlying/version.cc
+++ b/libstdc++-v3/testsuite/20_util/to_underlying/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc b/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
index 39678408b83..7863e283a61 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
@@ -16,14 +16,16 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <tuple>
-#include <testsuite_hooks.h>
 
 #if  __cpp_lib_apply < 201603
 #  error "__cpp_lib_apply < 201603"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
index 8f672c96d02..5e843038f75 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
@@ -1,6 +1,7 @@
 // { dg-do compile { target c++20 } }
 // FIXME [!HOSTED]: avoidable std::allocator usage
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 //
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc b/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
index bacb401b957..a1fac7d34de 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
@@ -16,16 +16,18 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <tuple>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_make_from_tuple
-# error "Feature-test macro for make_from_tuple missing."
+# error "Feature-test macro for make_from_tuple missing in <tuple>"
 #elif __cpp_lib_make_from_tuple < 201606
-# error "Feature-test macro for make_from_tuple has the wrong value."
+# error "Feature-test macro for make_from_tuple has the wrong value in <tuple>"
 #endif
 
+#include <testsuite_hooks.h>
+
 template <class T, class U, class V>
 struct ThreeParam
 {
diff --git a/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc b/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
index 774968d87e5..1d04ab03abd 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
@@ -2,15 +2,17 @@
 // { dg-do run { target c++23 } }
 // FIXME [!HOSTED]: avoidable std::allocator usage
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <tuple>
-#include <memory>
-#include <testsuite_hooks.h>
 
 #if __cpp_lib_ranges_zip != 202110L
 # error "Feature-test macro __cpp_lib_ranges_zip has wrong value in <tuple>"
 #endif
 
+#include <memory>
+#include <testsuite_hooks.h>
+
 using std::tuple;
 using std::pair;
 using std::allocator;
diff --git a/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc b/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
index 79624288c21..78e5ef8fae9 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2014-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
index 02cbd929c94..3c6957c5531 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
index 37ef1b7356a..8976e6be0c8 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
@@ -2,6 +2,7 @@
 // { dg-do run { target c++20 } }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2020-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unreachable/1.cc b/libstdc++-v3/testsuite/20_util/unreachable/1.cc
index 98d801b3969..f0a93cdaa85 100644
--- a/libstdc++-v3/testsuite/20_util/unreachable/1.cc
+++ b/libstdc++-v3/testsuite/20_util/unreachable/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 
diff --git a/libstdc++-v3/testsuite/20_util/unreachable/version.cc b/libstdc++-v3/testsuite/20_util/unreachable/version.cc
index b64a6cd82c0..66753f0232e 100644
--- a/libstdc++-v3/testsuite/20_util/unreachable/version.cc
+++ b/libstdc++-v3/testsuite/20_util/unreachable/version.cc
@@ -1,4 +1,5 @@
 // { dg-do preprocess { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc b/libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
index d3a33f842ca..ae9643b1349 100644
--- a/libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
+++ b/libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <type_traits>
 
diff --git a/libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc b/libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
index e2e91fdb34b..12090e132d2 100644
--- a/libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
+++ b/libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/variant/constexpr.cc b/libstdc++-v3/testsuite/20_util/variant/constexpr.cc
index 55fac029aaf..886fd2dab5c 100644
--- a/libstdc++-v3/testsuite/20_util/variant/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/variant/constexpr.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <variant>
 
diff --git a/libstdc++-v3/testsuite/20_util/variant/version.cc b/libstdc++-v3/testsuite/20_util/variant/version.cc
index de04c5eb294..fd251dd3768 100644
--- a/libstdc++-v3/testsuite/20_util/variant/version.cc
+++ b/libstdc++-v3/testsuite/20_util/variant/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc b/libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc
index ade83096475..76e881dec75 100644
--- a/libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc
+++ b/libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <variant>
 
diff --git a/libstdc++-v3/testsuite/20_util/void_t/1.cc b/libstdc++-v3/testsuite/20_util/void_t/1.cc
index bff88a2898a..b18ee44e3a1 100644
--- a/libstdc++-v3/testsuite/20_util/void_t/1.cc
+++ b/libstdc++-v3/testsuite/20_util/void_t/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <type_traits>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc
index 3c88b7c163b..edef8c9f911 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <string>
 
@@ -10,7 +11,6 @@
 #endif
 #endif
 
-
 #include <cstring>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
index 8c60708a3d3..7822c89497b 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-add-options no_pch }
 
 #include <string>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
index 40cea53b590..44c8391ebc2 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-add-options no_pch }
 
 #include <string>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc b/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
index b85496a16f1..23aae3c4dd2 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <string>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <string>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <string>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
index 3837c896f6b..727e9601271 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
@@ -1,9 +1,27 @@
 // { dg-do run { target c++11 } }
 // { dg-require-namedlocale "de_DE.ISO8859-15" }
+// { dg-add-options no_pch }
 
 // C++11 21.5 Numeric Conversions [string.conversions]
 
 #include <string>
+
+#if __cplusplus > 202302L
+
+#ifndef __cpp_lib_to_string
+# error "Feature-test macro for std::to_string missing in <string>"
+#elif __cpp_lib_to_string != 202306L
+# error "Feature-test macro for std::to_string has wrong value in <string>"
+#endif
+
+#else
+
+#ifdef __cpp_lib_to_string
+# error "__cpp_lib_to_string should not be defined for C++23"
+#endif
+
+#endif
+
 #include <format>
 #include <limits>
 #include <locale>
@@ -14,24 +32,11 @@ namespace test
 {
 // Canonical version of std::to_string(double) as specified in the standard.
 
-#if __cplusplus > 202302L
-
-#ifndef __cpp_lib_to_string
-# error "Feature-test macro for std::to_string missing in <string>"
-#elif __cpp_lib_to_string != 202306L
-# error "Feature-test macro for std::to_string has wrong value in <string>"
-#endif
-
+#if __cpp_lib_to_string
 static std::string to_string(float val) { return std::format("{}", val); }
 static std::string to_string(double val) { return std::format("{}", val); }
 static std::string to_string(long double val) { return std::format("{}", val); }
-
 #else
-
-#ifdef __cpp_lib_to_string
-# error "__cpp_lib_to_string should not be defined for C++23"
-#endif
-
 static std::string to_string(double val)
 {
   std::string str(100, '9');
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc
index 630e06fff8f..669becc36f1 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-add-options no_pch }
+
 #include <version>
 
 #if __cplusplus > 202302L
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
index 865b17905ff..71dd4dfb67f 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char.cc
index f59cad37722..629af6a9971 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2021-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
index 2f1b6848b76..c351d306180 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2021-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
index b91fea03c62..92919155cb3 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <string_view>
 
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
index 0db1673d8d3..34fb51a096b 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2017-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
index 805b84dea58..efddcb23fab 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2017-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
index 908163a2635..1a6fde2bbb7 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc b/libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
index e4029bdc06b..ff773fd9fab 100644
--- a/libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
-//
+// { dg-add-options no_pch }
+
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/23_containers/array/creation/1.cc b/libstdc++-v3/testsuite/23_containers/array/creation/1.cc
index 9c2eedb5c15..1e158abc275 100644
--- a/libstdc++-v3/testsuite/23_containers/array/creation/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/creation/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/23_containers/array/creation/2.cc b/libstdc++-v3/testsuite/23_containers/array/creation/2.cc
index be83073dc3d..a192073bdd4 100644
--- a/libstdc++-v3/testsuite/23_containers/array/creation/2.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/creation/2.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc b/libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
index 266df756db9..234a4f01a8b 100644
--- a/libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2011-2023 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc b/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
index 6acf1837a68..07a64003c8e 100644
--- a/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
-//
+// { dg-add-options no_pch }
+
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc b/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
index 7bccd1f79aa..5d06f2dda93 100644
--- a/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
-//
+// { dg-add-options no_pch }
+
 // Copyright (C) 2019-2023 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
index 889d4aa2e0b..bf64d298579 100644
--- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
@@ -26,6 +26,6 @@ int n1 = std::get<1>(a);
 int n2 = std::get<1>(std::move(a));
 int n3 = std::get<1>(ca);
 
-// { dg-error "static assertion failed" "" { target *-*-* } 389 }
-// { dg-error "static assertion failed" "" { target *-*-* } 398 }
-// { dg-error "static assertion failed" "" { target *-*-* } 407 }
+// { dg-error "static assertion failed" "" { target *-*-* } 391 }
+// { dg-error "static assertion failed" "" { target *-*-* } 400 }
+// { dg-error "static assertion failed" "" { target *-*-* } 409 }
diff --git a/libstdc++-v3/testsuite/23_containers/deque/erasure.cc b/libstdc++-v3/testsuite/23_containers/deque/erasure.cc
index 30885d1476a..317ce50fc57 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <deque>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <deque>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <deque>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc b/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
index 2a73b98a293..973a6323f05 100644
--- a/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <forward_list>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <forward_list>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <forward_list>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/23_containers/list/erasure.cc b/libstdc++-v3/testsuite/23_containers/list/erasure.cc
index d6b06b13326..5d32098c17d 100644
--- a/libstdc++-v3/testsuite/23_containers/list/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <list>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <list>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <list>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/23_containers/map/erasure.cc b/libstdc++-v3/testsuite/23_containers/map/erasure.cc
index 078d1297404..61090eb810e 100644
--- a/libstdc++-v3/testsuite/23_containers/map/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/map/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,8 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <map>
-#include <string>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <map>"
@@ -27,6 +26,9 @@
 # error "Feature-test macro for erase_if has wrong value in <map>"
 #endif
 
+#include <string>
+#include <testsuite_hooks.h>
+
 auto is_odd_pair = [](const std::pair<const int, std::string>& p)
 {
   return p.first % 2 != 0;
diff --git a/libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc b/libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
index 334ef00b79e..1a1009e34b3 100644
--- a/libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
+++ b/libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <queue>
 
diff --git a/libstdc++-v3/testsuite/23_containers/set/erasure.cc b/libstdc++-v3/testsuite/23_containers/set/erasure.cc
index a2bbf3ad603..8e629fa9e0c 100644
--- a/libstdc++-v3/testsuite/23_containers/set/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/set/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <set>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <set>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <set>"
 #endif
 
+#include <testsuite_hooks.h>
+
 auto is_odd = [](const int i) { return i % 2 != 0; };
 
 void
diff --git a/libstdc++-v3/testsuite/23_containers/span/1.cc b/libstdc++-v3/testsuite/23_containers/span/1.cc
index 40bb7a0b1f3..c1c0a7e619b 100644
--- a/libstdc++-v3/testsuite/23_containers/span/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/span/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <span>
 
diff --git a/libstdc++-v3/testsuite/23_containers/span/2.cc b/libstdc++-v3/testsuite/23_containers/span/2.cc
index 533d1721a53..2931c0b14ed 100644
--- a/libstdc++-v3/testsuite/23_containers/span/2.cc
+++ b/libstdc++-v3/testsuite/23_containers/span/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc b/libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
index 77240952909..8df4d33b729 100644
--- a/libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
+++ b/libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <stack>
 
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
index 696fc05afa4..201145a651c 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,8 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <unordered_map>
-#include <string>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <unordered_map>"
@@ -27,6 +26,9 @@
 # error "Feature-test macro for erase_if has wrong value in <unordered_map>"
 #endif
 
+#include <string>
+#include <testsuite_hooks.h>
+
 auto is_odd_pair = [](const std::pair<const int, std::string>& p)
 {
   return p.first % 2 != 0;
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
index cfeca606c55..cf6ee50f9ef 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <unordered_map>
 
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
index 2384136e769..7a298b7a11c 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <unordered_set>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <unordered_set>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <unordered_set>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
index b2f13990b56..5da7c31cc52 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <unordered_set>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
index 9a784583304..7bf86511240 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 // { dg-xfail-if "not supported" { debug_mode } }
 
 #include <vector>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/erasure.cc b/libstdc++-v3/testsuite/23_containers/vector/erasure.cc
index 2135b6b8fb3..780a9ca54ba 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/erasure.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/erasure.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2018-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <vector>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_erase_if
 # error "Feature-test macro for erase_if missing in <vector>"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for erase_if has wrong value in <vector>"
 #endif
 
+#include <testsuite_hooks.h>
+
 void
 test01()
 {
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
index 50a10d217f6..ef11ebbbfc6 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc b/libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
index ed2b6488516..24d208cff2b 100644
--- a/libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
+++ b/libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <iterator>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc b/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
index 92db5388595..5fcfb1e2e62 100644
--- a/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2016-2023 Free Software Foundation, Inc.
 //
@@ -18,13 +19,14 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <algorithm>
-#include <functional>
 
 #ifndef __cpp_lib_clamp
-# error "Feature-test macro for clamp missing"
+# error "Feature-test macro for clamp missing in <algorithm>"
 #elif __cpp_lib_clamp != 201603
-# error "Feature-test macro for clamp has wrong value"
+# error "Feature-test macro for clamp has wrong value in <algorithm>"
 #endif
 
+#include <functional>
+
 static_assert(std::clamp(2, 0, 1) == 1);
 static_assert(std::clamp(2, 1, 0, std::greater<int>()) == 1);
diff --git a/libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
index f696e135477..8cbe6c14835 100644
--- a/libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
@@ -21,12 +21,6 @@
 #include <functional>
 #include <testsuite_api.h>
 
-#ifndef __cpp_lib_clamp
-# error "Feature-test macro for clamp missing"
-#elif __cpp_lib_clamp != 201603
-# error "Feature-test macro for clamp has wrong value"
-#endif
-
 namespace std
 {
   using __gnu_test::NonDefaultConstructible;
diff --git a/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc b/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
index d591b11bd5f..258b7495a5d 100644
--- a/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc b/libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
index 0774032b0a0..0f4143ea794 100644
--- a/libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <algorithm>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc b/libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc
index b08a0651174..d5cbc225412 100644
--- a/libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc
@@ -1,13 +1,15 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <algorithm>
-#include <ranges>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_fold != 202207L
 # error "Feature-test macro __cpp_lib_ranges_fold has wrong value in <algorithm>"
 #endif
 
+#include <ranges>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
index bac78011837..f8dc94f640d 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++17 } }
 // { dg-require-effective-target tbb_backend }
+// { dg-add-options no_pch }
 
 #include <numeric>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
index 27ae1e42c5b..000b2e0a144 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++17 } }
 // { dg-require-effective-target tbb_backend }
+// { dg-add-options no_pch }
 
 #include <execution>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
index a397c3db8ae..c128695a309 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++17 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
index da5b73e5859..7b9ae1bc75e 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++17 } }
 // { dg-require-effective-target tbb_backend }
+// { dg-add-options no_pch }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
index 4d758eb9292..da593562428 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++17 } }
 // { dg-require-effective-target tbb_backend }
+// { dg-add-options no_pch }
 
 #include <algorithm>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc b/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc
index 034019b3da2..37b42957e37 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <bit>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc b/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc
index c179944e6e8..aa59604d186 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc b/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
index dc7249df68a..b488a8b2df2 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <bit>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc b/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
index 296adf75682..079780a81b0 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/header-2.cc b/libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
index 07d0865214e..94db9e15eb6 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/bit/header.cc b/libstdc++-v3/testsuite/26_numerics/bit/header.cc
index 36207bb5149..ecb6e1bdb11 100644
--- a/libstdc++-v3/testsuite/26_numerics/bit/header.cc
+++ b/libstdc++-v3/testsuite/26_numerics/bit/header.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <bit>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/complex/1.cc b/libstdc++-v3/testsuite/26_numerics/complex/1.cc
index 229926cd82c..f4d7bce2335 100644
--- a/libstdc++-v3/testsuite/26_numerics/complex/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/complex/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <complex>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/complex/2.cc b/libstdc++-v3/testsuite/26_numerics/complex/2.cc
index 6276e2de405..2b1a5a932f4 100644
--- a/libstdc++-v3/testsuite/26_numerics/complex/2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/complex/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do preprocess { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/endian/2.cc b/libstdc++-v3/testsuite/26_numerics/endian/2.cc
index 2822be35563..24a40e47cf4 100644
--- a/libstdc++-v3/testsuite/26_numerics/endian/2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/endian/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <bit>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/endian/3.cc b/libstdc++-v3/testsuite/26_numerics/endian/3.cc
index 7e02cab4086..5f6ad56600c 100644
--- a/libstdc++-v3/testsuite/26_numerics/endian/3.cc
+++ b/libstdc++-v3/testsuite/26_numerics/endian/3.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/gcd/1.cc b/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
index 1475a5a7348..3083682bd1a 100644
--- a/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/gcd/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <numeric>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/lcm/1.cc b/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
index 18828a7d403..1fa16af8316 100644
--- a/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lcm/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-add-options no_pch }
 
 #include <numeric>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/lerp/1.cc b/libstdc++-v3/testsuite/26_numerics/lerp/1.cc
index 65b715437f5..8aedc47f1ce 100644
--- a/libstdc++-v3/testsuite/26_numerics/lerp/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lerp/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <cmath>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/lerp/version.cc b/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
index 63206ba8e3f..a6a57733a0f 100644
--- a/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc b/libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
index 0f8a16e656e..51218f38f2d 100644
--- a/libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
+++ b/libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <numeric>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc b/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
index 63206ba8e3f..a6a57733a0f 100644
--- a/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/numbers/1.cc b/libstdc++-v3/testsuite/26_numerics/numbers/1.cc
index f41551c2148..8443efba086 100644
--- a/libstdc++-v3/testsuite/26_numerics/numbers/1.cc
+++ b/libstdc++-v3/testsuite/26_numerics/numbers/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <numbers>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/numbers/2.cc b/libstdc++-v3/testsuite/26_numerics/numbers/2.cc
index d9e791e2843..d55b44c0257 100644
--- a/libstdc++-v3/testsuite/26_numerics/numbers/2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/numbers/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/char/1.cc
index 749451a4c81..0551f260ade 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/char/1.cc
@@ -1,5 +1,6 @@
 // { dg-options "-fno-inline" }
 // { dg-do run { target c++26 } }
+// { dg-add-options no_pch }
 // { dg-additional-files "filebuf_members-1.txt" }
 
 #include <fstream>
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/version.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/version.cc
index 46c400d12ce..10a559859e3 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/version.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/native_handle/version.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++26 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
index 2e99707df86..c34882fa4e9 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
@@ -1,4 +1,5 @@
 // { dg-do run { xfail *-*-vxworks* } }
+// { dg-add-options no_pch }
 
 #include <ios>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
index ddb7fd69160..55c7ad4876f 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
@@ -1,4 +1,5 @@
 // { dg-do run { xfail *-*-vxworks* } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc b/libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
index d48ad090086..01ce127fbda 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-add-options no_pch }
 
 #include <syncstream>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc b/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
index ad1ab383b1c..a973c448404 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc b/libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
index d48ad090086..01ce127fbda 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-add-options no_pch }
 
 #include <syncstream>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc b/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
index ad1ab383b1c..a973c448404 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target cxx11_abi }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/spanstream/1.cc b/libstdc++-v3/testsuite/27_io/spanstream/1.cc
index bd45a38ae3c..4f384dbdd54 100644
--- a/libstdc++-v3/testsuite/27_io/spanstream/1.cc
+++ b/libstdc++-v3/testsuite/27_io/spanstream/1.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <spanstream>
 
diff --git a/libstdc++-v3/testsuite/27_io/spanstream/version.cc b/libstdc++-v3/testsuite/27_io/spanstream/version.cc
index 7434e3b292e..4e01113ff98 100644
--- a/libstdc++-v3/testsuite/27_io/spanstream/version.cc
+++ b/libstdc++-v3/testsuite/27_io/spanstream/version.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++23 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc b/libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
index 809c6c02443..a852c42f397 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++20 } }
 // { dg-require-thread-fence "" }
+// { dg-add-options no_pch }
 
 #include <atomic>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc b/libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
index 8192f73dd47..372a63129ff 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <atomic>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
index 3ded103b4fe..2fe83d58aaa 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target gthreads }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <atomic>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
index d07bdeece20..35bff9fcf7a 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target gthreads }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
index 70d37d4d8cd..bcdb969b0c0 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <stdatomic.h>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
index 26fa76d0229..5feb08936d8 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
@@ -1,4 +1,5 @@
 // { dg-do preprocess { target c++23 } }
+// { dg-add-options no_pch }
 
 // <stdatomic.h> is not freestanding.
 // { dg-require-effective-target hosted }
diff --git a/libstdc++-v3/testsuite/30_threads/barrier/1.cc b/libstdc++-v3/testsuite/30_threads/barrier/1.cc
index e7f62a17f24..f1e981eb2f8 100644
--- a/libstdc++-v3/testsuite/30_threads/barrier/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/barrier/1.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target gthreads }
+// { dg-add-options no_pch }
 
 #include <barrier>
 
diff --git a/libstdc++-v3/testsuite/30_threads/barrier/2.cc b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
index d33597a0c40..d11eacc825b 100644
--- a/libstdc++-v3/testsuite/30_threads/barrier/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target gthreads }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
index 8c173977bcb..03a867c3131 100644
--- a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <condition_variable>
 
diff --git a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
index 754bd912eb4..e698915ed6f 100644
--- a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/jthread/1.cc b/libstdc++-v3/testsuite/30_threads/jthread/1.cc
index e4063af3784..ff3d428efec 100644
--- a/libstdc++-v3/testsuite/30_threads/jthread/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/jthread/1.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-gthreads "" }
+// { dg-add-options no_pch }
 
 #include <thread>
 
diff --git a/libstdc++-v3/testsuite/30_threads/jthread/version.cc b/libstdc++-v3/testsuite/30_threads/jthread/version.cc
index 48241e981ea..00dfbd881a9 100644
--- a/libstdc++-v3/testsuite/30_threads/jthread/version.cc
+++ b/libstdc++-v3/testsuite/30_threads/jthread/version.cc
@@ -18,6 +18,7 @@
 // { dg-do compile { target c++20 } }
 // { dg-require-gthreads "" }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/latch/1.cc b/libstdc++-v3/testsuite/30_threads/latch/1.cc
index 6f4da112012..ba0a95bad88 100644
--- a/libstdc++-v3/testsuite/30_threads/latch/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/latch/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <latch>
 
diff --git a/libstdc++-v3/testsuite/30_threads/latch/2.cc b/libstdc++-v3/testsuite/30_threads/latch/2.cc
index 4ebd9e67ec7..15e325bd950 100644
--- a/libstdc++-v3/testsuite/30_threads/latch/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/latch/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
index c171afc6a7c..438b62f4814 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-require-gthreads "" }
+// { dg-add-options no_pch }
 
 // Copyright (C) 2017-2023 Free Software Foundation, Inc.
 //
@@ -18,7 +19,6 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-
 // NB: This file is for testing with NO OTHER INCLUDES.
 
 #include <mutex>
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/1.cc b/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
index f58e7f522df..ced3c6c700c 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <semaphore>
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
index 0bab29417ac..111984d8e0f 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/stop_token/1.cc b/libstdc++-v3/testsuite/30_threads/stop_token/1.cc
index 099c6c1c271..c2f1d8d4d76 100644
--- a/libstdc++-v3/testsuite/30_threads/stop_token/1.cc
+++ b/libstdc++-v3/testsuite/30_threads/stop_token/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <stop_token>
 
diff --git a/libstdc++-v3/testsuite/30_threads/stop_token/2.cc b/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
index 754bd912eb4..e698915ed6f 100644
--- a/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do compile { target c++20 } }
 // { dg-require-effective-target hosted }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/experimental/feat-char8_t.cc b/libstdc++-v3/testsuite/experimental/feat-char8_t.cc
index c9b277a4626..05c1aa21541 100644
--- a/libstdc++-v3/testsuite/experimental/feat-char8_t.cc
+++ b/libstdc++-v3/testsuite/experimental/feat-char8_t.cc
@@ -1,5 +1,6 @@
 // { dg-do preprocess { target c++11 } }
 // { dg-options "-fchar8_t" }
+// { dg-add-options no_pch }
 
 #include <atomic>
 #include <filesystem>
diff --git a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
index effe382e06e..c009062b55c 100644
--- a/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
+++ b/libstdc++-v3/testsuite/experimental/feat-cxx14.cc
@@ -1,4 +1,5 @@
 // { dg-do preprocess { target c++14 } }
+// { dg-add-options no_pch }
 
 #include <utility>
 #include <tuple>
@@ -8,10 +9,12 @@
 #include <chrono>
 #include <string>
 #include <complex>
+#include <algorithm>
 #include <iomanip>
 #include <shared_mutex>
 #include <map>
 #include <set>
+#include <iterator>
 
 #ifndef  __cpp_lib_integer_sequence
 #  error "__cpp_lib_integer_sequence"
diff --git a/libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc b/libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
index 61af30058bb..ed2c4da91ed 100644
--- a/libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
+++ b/libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
@@ -16,10 +16,9 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-add-options no_pch }
 
 #include <experimental/iterator>
-#include <sstream>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_experimental_ostream_joiner
 # error Feature-test macro is not defined.
@@ -27,6 +26,9 @@
 # error Feature-test macro has bad value.
 #endif
 
+#include <sstream>
+#include <testsuite_hooks.h>
+
 using std::experimental::ostream_joiner;
 
 void
diff --git a/libstdc++-v3/testsuite/experimental/numeric/gcd.cc b/libstdc++-v3/testsuite/experimental/numeric/gcd.cc
index 505675d618c..6d447c36ed8 100644
--- a/libstdc++-v3/testsuite/experimental/numeric/gcd.cc
+++ b/libstdc++-v3/testsuite/experimental/numeric/gcd.cc
@@ -16,9 +16,9 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++14 } }
+// { dg-add-options no_pch }
 
 #include <experimental/numeric>
-#include <experimental/type_traits>
 
 #ifndef __cpp_lib_experimental_gcd_lcm
 # error "Feature-test macro for gcd missing"
@@ -26,6 +26,8 @@
 # error "Feature-test macro for gcd has wrong value"
 #endif
 
+#include <experimental/type_traits>
+
 using std::experimental::fundamentals_v2::gcd;
 using std::experimental::is_same_v;
 
diff --git a/libstdc++-v3/testsuite/experimental/scopeguard/uniqueres.cc b/libstdc++-v3/testsuite/experimental/scopeguard/uniqueres.cc
index 27a427f7ea8..4deb60a1422 100644
--- a/libstdc++-v3/testsuite/experimental/scopeguard/uniqueres.cc
+++ b/libstdc++-v3/testsuite/experimental/scopeguard/uniqueres.cc
@@ -1,7 +1,7 @@
 // { dg-do run { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <experimental/scope>
-#include <testsuite_hooks.h>
 
 #ifndef __cpp_lib_experimental_scope
 # error Feature-test macro is not defined.
@@ -9,6 +9,8 @@
 # error Feature-test macro has bad value.
 #endif
 
+#include <testsuite_hooks.h>
+
 using std::experimental::unique_resource;
 
 void
diff --git a/libstdc++-v3/testsuite/std/concepts/1.cc b/libstdc++-v3/testsuite/std/concepts/1.cc
index 0301b91e869..0d056d68de8 100644
--- a/libstdc++-v3/testsuite/std/concepts/1.cc
+++ b/libstdc++-v3/testsuite/std/concepts/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <concepts>
 
diff --git a/libstdc++-v3/testsuite/std/concepts/2.cc b/libstdc++-v3/testsuite/std/concepts/2.cc
index 53a1e006993..ebb054ac33b 100644
--- a/libstdc++-v3/testsuite/std/concepts/2.cc
+++ b/libstdc++-v3/testsuite/std/concepts/2.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc
index 48c7d38a0a3..2d36e0a4712 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc
@@ -1,6 +1,12 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
+
+#if __cpp_lib_ranges_as_const != 202207L
+# error "Feature-test macro __cpp_lib_ranges_as_const has wrong value in <ranges>"
+#endif
+
 #include <algorithm>
 #include <span>
 #include <utility>
@@ -8,10 +14,6 @@
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
 
-#if __cpp_lib_ranges_as_const != 202207L
-# error "Feature-test macro __cpp_lib_ranges_as_const has wrong value in <ranges>"
-#endif
-
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/as_rvalue/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/as_rvalue/1.cc
index 74223a699b6..48770077370 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/as_rvalue/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/as_rvalue/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <memory>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_as_rvalue != 202207L
 # error "Feature-test macro __cpp_lib_ranges_as_rvalue has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <memory>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc
index 7b8d4bacc0c..90eb608ca5e 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <vector>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_chunk != 202202L
 # error "Feature-test macro __cpp_lib_ranges_chunk has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <vector>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
index 656c3c0d15e..5d1ce55b485 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <vector>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_chunk_by != 202202L
 # error "Feature-test macro __cpp_lib_ranges_chunk_by has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <vector>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
index d5221680d6b..c33aa9ff51e 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <memory>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_enumerate != 202302L
 # error "Feature-test macro __cpp_lib_ranges_enumerate has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <memory>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
index 7bed169d127..8ab30a5277d 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <string>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_join_with != 202202L
 # error "Feature-test macro __cpp_lib_ranges_join_with has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <string>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 using namespace std::literals;
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
index 8dfb8715e5a..bafe9fbc4bf 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <utility>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_slide != 202202L
 # error "Feature-test macro __cpp_lib_ranges_slide has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <utility>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
index dfc413dbb66..e0af8c874fd 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
@@ -1,14 +1,16 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_stride != 202207L
 # error "Feature-test macro __cpp_lib_ranges_stride has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc b/libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
index 8938e92158d..f69f965c0ce 100644
--- a/libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
@@ -1,15 +1,17 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <sstream>
-#include <testsuite_hooks.h>
-#include <testsuite_iterators.h>
 
 #if __cpp_lib_ranges_cartesian_product != 202207L
 # error "Feature-test macro __cpp_lib_ranges_cartesian_product has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <sstream>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc b/libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
index dfa3fcaa37e..e9fef0dce48 100644
--- a/libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
+++ b/libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
 
diff --git a/libstdc++-v3/testsuite/std/ranges/repeat/1.cc b/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
index 0f6e551c1e9..cad8c8dcbe7 100644
--- a/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/repeat/1.cc
@@ -1,14 +1,16 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
-#include <algorithm>
-#include <memory>
-#include <testsuite_hooks.h>
 
 #if __cpp_lib_ranges_repeat != 202207L
 # error "Feature-test macro __cpp_lib_ranges_repeat has wrong value in <ranges>"
 #endif
 
+#include <algorithm>
+#include <memory>
+#include <testsuite_hooks.h>
+
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/ranges/version_c++23.cc b/libstdc++-v3/testsuite/std/ranges/version_c++23.cc
index f68df67d3b3..823264f32aa 100644
--- a/libstdc++-v3/testsuite/std/ranges/version_c++23.cc
+++ b/libstdc++-v3/testsuite/std/ranges/version_c++23.cc
@@ -1,4 +1,5 @@
 // { dg-do preprocess { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/std/ranges/zip/1.cc b/libstdc++-v3/testsuite/std/ranges/zip/1.cc
index f7c2c00a2cd..b7717aed92c 100644
--- a/libstdc++-v3/testsuite/std/ranges/zip/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/zip/1.cc
@@ -1,16 +1,18 @@
 // { dg-do run { target c++23 } }
+// { dg-add-options no_pch }
 
 #include <ranges>
+
+#if __cpp_lib_ranges_zip != 202110L
+# error "Feature-test macro __cpp_lib_ranges_zip has wrong value in <ranges>"
+#endif
+
 #include <algorithm>
 #include <utility>
 #include <vector>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
 
-#if __cpp_lib_ranges_zip != 202110L
-# error "Feature-test macro __cpp_lib_ranges_zip has wrong value in <ranges>"
-#endif
-
 namespace ranges = std::ranges;
 namespace views = std::views;
 
diff --git a/libstdc++-v3/testsuite/std/time/syn_c++20.cc b/libstdc++-v3/testsuite/std/time/syn_c++20.cc
index 9f0e5ee5a9d..dd9e4059c1b 100644
--- a/libstdc++-v3/testsuite/std/time/syn_c++20.cc
+++ b/libstdc++-v3/testsuite/std/time/syn_c++20.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++20 } }
+// { dg-add-options no_pch }
 
 #include <chrono>
 
-- 
2.41.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [committed 2/2] libstdc++: Only declare feature test macros in standard headers
  2023-11-16  8:11 [committed 1/2] libstdc++: Test for feature test macros more accurately Jonathan Wakely
@ 2023-11-16  8:11 ` Jonathan Wakely
  0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Wakely @ 2023-11-16  8:11 UTC (permalink / raw)
  To: libstdc++, gcc-patches

Tested x86_64-linux. Pushed to trunk.

-- >8 --

This change moves the definitions of feature test macros (or strictly
speaking, the requests for <bits/version.h> to define them) so that only
standard headers define them. For example, <bits/shared_ptr.h> will no
longer define macros related to std::shared_ptr, only <memory> and
<version> will define them. This means that __cpp_lib_shared_ptr_arrays
will not be defined by <future> or by other headers that include
<bits/shared_ptr.h>. It will only be defined when <memory> has been
included. This will discourage users from relying on transitive
includes.

As a result, internal headers that need to query the macros should use
the internal macros like __glibcxx_shared_ptr_arrays instead of
__cpp_lib_shared_ptr_arrays, as those internal macros are defined by the
internal headers after icluding <bits/version.h>. There are some
exceptions to this rule, because __cpp_lib_is_constant_evaluated is
defined by bits/c++config.h and so is available everywhere, and
__cpp_lib_three_way_comparison is defined by <compare> which several
headers are explicitly specified to include, so its macro is guaranteed
to be usable too.

N.B. not many internal headers actually need an explicit include of
<bits/version.h>, because most of them include <type_traits> and so get
all the __glibcxx_foo internal macros from there.

libstdc++-v3/ChangeLog:

	* include/bits/algorithmfwd.h: Do not define standard feature
	test macro here.
	* include/bits/align.h: Likewise. Test internal macros instead
	of standard macros.
	* include/bits/alloc_traits.h: Likewise.
	* include/bits/allocator.h: Likewise.
	* include/bits/atomic_base.h: Likewise.
	* include/bits/atomic_timed_wait.h: Likewise.
	* include/bits/atomic_wait.h: Likewise.
	* include/bits/basic_string.h: Likewise.
	* include/bits/basic_string.tcc: Likewise.
	* include/bits/char_traits.h: Likewise.
	* include/bits/chrono.h: Likewise.
	* include/bits/cow_string.h: Likewise.
	* include/bits/forward_list.h: Likewise.
	* include/bits/hashtable.h: Likewise.
	* include/bits/ios_base.h: Likewise.
	* include/bits/memory_resource.h: Likewise.
	* include/bits/move.h: Likewise.
	* include/bits/move_only_function.h: Likewise.
	* include/bits/node_handle.h: Likewise.
	* include/bits/ptr_traits.h: Likewise.
	* include/bits/range_access.h: Likewise.
	* include/bits/ranges_algo.h: Likewise.
	* include/bits/ranges_cmp.h: Likewise.
	* include/bits/ranges_util.h: Likewise.
	* include/bits/semaphore_base.h: Likewise.
	* include/bits/shared_ptr.h: Likewise.
	* include/bits/shared_ptr_atomic.h: Likewise.
	* include/bits/shared_ptr_base.h: Likewise.
	* include/bits/stl_algo.h: Likewise.
	* include/bits/stl_algobase.h: Likewise.
	* include/bits/stl_function.h: Likewise.
	* include/bits/stl_iterator.h: Likewise.
	* include/bits/stl_list.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/stl_pair.h: Likewise.
	* include/bits/stl_queue.h: Likewise.
	* include/bits/stl_stack.h: Likewise.
	* include/bits/stl_tree.h: Likewise.
	* include/bits/stl_uninitialized.h: Likewise.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/unique_ptr.h: Likewise.
	* include/bits/unordered_map.h: Likewise.
	* include/bits/uses_allocator_args.h: Likewise.
	* include/bits/utility.h: Likewise.
	* include/bits/erase_if.h: Add comment.
	* include/std/algorithm: Define standard feature test macros
	here.
	* include/std/atomic: Likewise.
	* include/std/array: Likewise.
	* include/std/chrono: Likewise.
	* include/std/condition_variable: Likewise.
	* include/std/deque: Likewise.
	* include/std/format: Likewise.
	* include/std/functional: Likewise.
	* include/std/forward_list: Likewise.
	* include/std/ios: Likewise.
	* include/std/iterator: Likewise.
	* include/std/list: Likewise.
	* include/std/map: Likewise.
	* include/std/memory: Likewise.
	* include/std/numeric: Likewise.
	* include/std/queue: Likewise.
	* include/std/ranges: Likewise.
	* include/std/regex: Likewise.
	* include/std/set: Likewise.
	* include/std/stack: Likewise.
	* include/std/stop_token: Likewise.
	* include/std/string: Likewise.
	* include/std/string_view:
	* include/std/tuple: Likewise.
	* include/std/unordered_map:
	* include/std/unordered_set:
	* include/std/utility: Likewise.
	* include/std/vector: Likewise.
	* include/std/scoped_allocator: Query internal macros instead of
	standard macros.
---
 libstdc++-v3/include/bits/algorithmfwd.h      |  3 -
 libstdc++-v3/include/bits/align.h             | 10 +--
 libstdc++-v3/include/bits/alloc_traits.h      |  4 --
 libstdc++-v3/include/bits/allocator.h         |  3 -
 libstdc++-v3/include/bits/atomic_base.h       | 42 ++++++-----
 libstdc++-v3/include/bits/atomic_timed_wait.h |  2 +-
 libstdc++-v3/include/bits/atomic_wait.h       |  5 +-
 libstdc++-v3/include/bits/basic_string.h      | 22 +++---
 libstdc++-v3/include/bits/basic_string.tcc    |  6 +-
 libstdc++-v3/include/bits/char_traits.h       |  3 -
 libstdc++-v3/include/bits/chrono.h            | 16 ++---
 libstdc++-v3/include/bits/cow_string.h        | 11 ++-
 libstdc++-v3/include/bits/erase_if.h          |  4 +-
 libstdc++-v3/include/bits/forward_list.h      |  5 +-
 libstdc++-v3/include/bits/hashtable.h         |  7 +-
 libstdc++-v3/include/bits/ios_base.h          |  5 +-
 libstdc++-v3/include/bits/memory_resource.h   |  6 +-
 libstdc++-v3/include/bits/move.h              |  3 -
 .../include/bits/move_only_function.h         |  5 +-
 libstdc++-v3/include/bits/node_handle.h       |  5 +-
 libstdc++-v3/include/bits/ptr_traits.h        |  8 +--
 libstdc++-v3/include/bits/range_access.h      | 12 ++--
 libstdc++-v3/include/bits/ranges_algo.h       | 25 +++----
 libstdc++-v3/include/bits/ranges_cmp.h        |  7 +-
 libstdc++-v3/include/bits/ranges_util.h       |  2 +-
 libstdc++-v3/include/bits/semaphore_base.h    |  6 +-
 libstdc++-v3/include/bits/shared_ptr.h        | 22 +++---
 libstdc++-v3/include/bits/shared_ptr_atomic.h | 18 +++--
 libstdc++-v3/include/bits/shared_ptr_base.h   | 28 ++++----
 libstdc++-v3/include/bits/stl_algo.h          | 12 ++--
 libstdc++-v3/include/bits/stl_algobase.h      | 11 ++-
 libstdc++-v3/include/bits/stl_function.h      | 25 +++----
 libstdc++-v3/include/bits/stl_iterator.h      | 72 +++++++++----------
 libstdc++-v3/include/bits/stl_list.h          |  5 +-
 libstdc++-v3/include/bits/stl_map.h           |  5 +-
 libstdc++-v3/include/bits/stl_pair.h          |  8 +--
 libstdc++-v3/include/bits/stl_queue.h         |  7 +-
 libstdc++-v3/include/bits/stl_stack.h         |  7 +-
 libstdc++-v3/include/bits/stl_tree.h          |  3 -
 libstdc++-v3/include/bits/stl_uninitialized.h |  7 +-
 libstdc++-v3/include/bits/stl_vector.h        |  3 -
 libstdc++-v3/include/bits/unique_ptr.h        |  6 +-
 libstdc++-v3/include/bits/unordered_map.h     |  7 +-
 .../include/bits/uses_allocator_args.h        |  5 +-
 libstdc++-v3/include/bits/utility.h           | 11 +--
 libstdc++-v3/include/std/algorithm            |  8 +++
 libstdc++-v3/include/std/array                |  2 +
 libstdc++-v3/include/std/atomic               |  3 +
 libstdc++-v3/include/std/chrono               |  4 ++
 libstdc++-v3/include/std/condition_variable   |  2 +-
 libstdc++-v3/include/std/deque                |  1 +
 libstdc++-v3/include/std/format               |  5 +-
 libstdc++-v3/include/std/forward_list         |  5 +-
 libstdc++-v3/include/std/functional           | 19 ++---
 libstdc++-v3/include/std/ios                  |  3 +
 libstdc++-v3/include/std/iterator             |  7 ++
 libstdc++-v3/include/std/list                 |  3 +
 libstdc++-v3/include/std/map                  |  7 ++
 libstdc++-v3/include/std/memory               | 14 ++++
 libstdc++-v3/include/std/numeric              |  1 +
 libstdc++-v3/include/std/queue                |  3 +
 libstdc++-v3/include/std/ranges               |  1 +
 libstdc++-v3/include/std/regex                |  3 +
 libstdc++-v3/include/std/scoped_allocator     |  6 +-
 libstdc++-v3/include/std/set                  |  6 ++
 libstdc++-v3/include/std/stack                |  3 +
 libstdc++-v3/include/std/stop_token           |  2 +-
 libstdc++-v3/include/std/string               |  6 ++
 libstdc++-v3/include/std/string_view          |  1 +
 libstdc++-v3/include/std/tuple                |  2 +
 libstdc++-v3/include/std/unordered_map        |  7 ++
 libstdc++-v3/include/std/unordered_set        |  6 ++
 libstdc++-v3/include/std/utility              | 24 ++++---
 libstdc++-v3/include/std/vector               |  3 +
 74 files changed, 313 insertions(+), 333 deletions(-)

diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h
index bc757c340a4..ab7641815b9 100644
--- a/libstdc++-v3/include/bits/algorithmfwd.h
+++ b/libstdc++-v3/include/bits/algorithmfwd.h
@@ -39,9 +39,6 @@
 #include <initializer_list>
 #endif
 
-#define __glibcxx_want_constexpr_algorithms
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/align.h b/libstdc++-v3/include/bits/align.h
index 4152639622e..68bacf4edd9 100644
--- a/libstdc++-v3/include/bits/align.h
+++ b/libstdc++-v3/include/bits/align.h
@@ -30,14 +30,10 @@
 #ifndef _GLIBCXX_ALIGN_H
 #define _GLIBCXX_ALIGN_H 1
 
-#include <bits/c++config.h>
-
-#define __glibcxx_want_assume_aligned
-#include <bits/version.h>
-
 #include <bit>          // std::has_single_bit
 #include <stdint.h>     // uintptr_t
 #include <debug/assertions.h> // _GLIBCXX_DEBUG_ASSERT
+#include <bits/version.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -78,7 +74,7 @@ align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept
     }
 }
 
-#ifdef __cpp_lib_assume_aligned // C++ >= 20
+#ifdef __glibcxx_assume_aligned // C++ >= 20
   /** @brief Inform the compiler that a pointer is aligned.
    *
    *  @tparam _Align An alignment value (i.e. a power of two)
@@ -105,7 +101,7 @@ align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept
 	  return static_cast<_Tp*>(__builtin_assume_aligned(__ptr, _Align));
 	}
     }
-#endif // __cpp_lib_assume_aligned
+#endif // __glibcxx_assume_aligned
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h
index 453278e5348..611615d6052 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -40,10 +40,6 @@
 # endif
 #endif
 
-#define __glibcxx_want_constexpr_dynamic_alloc
-#define __glibcxx_want_allocator_traits_is_always_equal
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h
index 41e35f876f0..af7951a02a5 100644
--- a/libstdc++-v3/include/bits/allocator.h
+++ b/libstdc++-v3/include/bits/allocator.h
@@ -49,9 +49,6 @@
 #include <type_traits>
 #endif
 
-#define __glibcxx_want_incomplete_container_elements
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h
index 974872ad7a6..f4ce0fa5324 100644
--- a/libstdc++-v3/include/bits/atomic_base.h
+++ b/libstdc++-v3/include/bits/atomic_base.h
@@ -46,8 +46,6 @@
 #define _GLIBCXX_ALWAYS_INLINE inline __attribute__((__always_inline__))
 #endif
 
-#define __glibcxx_want_atomic_value_initialization
-#define __glibcxx_want_atomic_flag_test
 #include <bits/version.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -161,7 +159,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     }
 
 /// @cond undocumented
-#if __cpp_lib_atomic_value_initialization
+#if __glibcxx_atomic_value_initialization
 # define _GLIBCXX20_INIT(I) = I
 #else
 # define _GLIBCXX20_INIT(I)
@@ -234,7 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __atomic_test_and_set (&_M_i, int(__m));
     }
 
-#ifdef __cpp_lib_atomic_flag_test // C++ >= 20
+#ifdef __glibcxx_atomic_flag_test // C++ >= 20
     _GLIBCXX_ALWAYS_INLINE bool
     test(memory_order __m = memory_order_seq_cst) const noexcept
     {
@@ -252,7 +250,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     }
 #endif
 
-#if __cpp_lib_atomic_wait // C++ >= 20 && (linux_futex || gthread)
+#if __glibcxx_atomic_wait // C++ >= 20 && (linux_futex || gthread)
     _GLIBCXX_ALWAYS_INLINE void
     wait(bool __old,
 	memory_order __m = memory_order_seq_cst) const noexcept
@@ -277,7 +275,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { std::__atomic_notify_address(&_M_i, true); }
 
     // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
     _GLIBCXX_ALWAYS_INLINE void
     clear(memory_order __m = memory_order_seq_cst) noexcept
@@ -603,7 +601,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__m));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(__int_type __old,
 	  memory_order __m = memory_order_seq_cst) const noexcept
@@ -625,7 +623,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { std::__atomic_notify_address(&_M_i, true); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
       _GLIBCXX_ALWAYS_INLINE __int_type
       fetch_add(__int_type __i,
@@ -905,7 +903,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 					   int(__m1), int(__m2));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(__pointer_type __old,
 	   memory_order __m = memory_order_seq_cst) const noexcept
@@ -928,7 +926,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { std::__atomic_notify_address(&_M_p, true); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
       _GLIBCXX_ALWAYS_INLINE __pointer_type
       fetch_add(ptrdiff_t __d,
@@ -1138,7 +1136,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		   *__ptr, __expected, __desired, false, __success, __failure);
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
     template<typename _Tp>
       _GLIBCXX_ALWAYS_INLINE void
       wait(const _Tp* __ptr, _Val<_Tp> __old,
@@ -1163,7 +1161,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { std::__atomic_notify_address(__ptr, true); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
     template<typename _Tp>
       _GLIBCXX_ALWAYS_INLINE _Tp
@@ -1418,7 +1416,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__order));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(_Fp __old, memory_order __m = memory_order_seq_cst) const noexcept
       { __atomic_impl::wait(&_M_fp, __old, __m); }
@@ -1436,7 +1434,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { __atomic_impl::notify_all(&_M_fp); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
       value_type
       fetch_add(value_type __i,
@@ -1573,7 +1571,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__order));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
       { __atomic_impl::wait(_M_ptr, __old, __m); }
@@ -1591,7 +1589,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { __atomic_impl::notify_all(_M_ptr); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
     private:
       _Tp* _M_ptr;
@@ -1686,7 +1684,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__order));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
       { __atomic_impl::wait(_M_ptr, __old, __m); }
@@ -1704,7 +1702,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { __atomic_impl::notify_all(_M_ptr); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait 
+#endif // __glibcxx_atomic_wait
 
       value_type
       fetch_add(value_type __i,
@@ -1859,7 +1857,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__order));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(_Fp __old, memory_order __m = memory_order_seq_cst) const noexcept
       { __atomic_impl::wait(_M_ptr, __old, __m); }
@@ -1877,7 +1875,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { __atomic_impl::notify_all(_M_ptr); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
       value_type
       fetch_add(value_type __i,
@@ -1986,7 +1984,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 				       __cmpexch_failure_order(__order));
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       _GLIBCXX_ALWAYS_INLINE void
       wait(_Tp* __old, memory_order __m = memory_order_seq_cst) const noexcept
       { __atomic_impl::wait(_M_ptr, __old, __m); }
@@ -2004,7 +2002,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { __atomic_impl::notify_all(_M_ptr); }
 
       // TODO add const volatile overload
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 
       _GLIBCXX_ALWAYS_INLINE value_type
       fetch_add(difference_type __d,
diff --git a/libstdc++-v3/include/bits/atomic_timed_wait.h b/libstdc++-v3/include/bits/atomic_timed_wait.h
index 8bb731db787..ba21ab20a11 100644
--- a/libstdc++-v3/include/bits/atomic_timed_wait.h
+++ b/libstdc++-v3/include/bits/atomic_timed_wait.h
@@ -34,7 +34,7 @@
 
 #include <bits/atomic_wait.h>
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 #include <bits/functional_hash.h>
 #include <bits/this_thread_sleep.h>
 #include <bits/chrono.h>
diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h
index 9cbfb99a7c2..506b7f0cc9d 100644
--- a/libstdc++-v3/include/bits/atomic_wait.h
+++ b/libstdc++-v3/include/bits/atomic_wait.h
@@ -32,10 +32,9 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_atomic_wait
 #include <bits/version.h>
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 #include <bits/functional_hash.h>
 #include <bits/gthr.h>
 #include <ext/numeric_traits.h>
@@ -476,5 +475,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   }
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
-#endif // __cpp_lib_atomic_wait
+#endif // __glibcxx_atomic_wait
 #endif // _GLIBCXX_ATOMIC_WAIT_H
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 0fa32afeb84..9956a76f40c 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -51,10 +51,6 @@
 # include <charconv>
 #endif
 
-#define __glibcxx_want_constexpr_string
-#define __glibcxx_want_string_resize_and_overwrite
-#define __glibcxx_want_string_udls
-#define __glibcxx_want_to_string
 #include <bits/version.h>
 
 #if ! _GLIBCXX_USE_CXX11_ABI
@@ -133,7 +129,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       _S_allocate(_Char_alloc_type& __a, size_type __n)
       {
 	pointer __p = _Alloc_traits::allocate(__a, __n);
-#if __cpp_lib_constexpr_string >= 201907L
+#if __glibcxx_constexpr_string >= 201907L
 	// std::char_traits begins the lifetime of characters,
 	// but custom traits might not, so do it here.
 	if constexpr (!is_same_v<_Traits, char_traits<_CharT>>)
@@ -356,7 +352,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       void
       _M_init_local_buf() _GLIBCXX_NOEXCEPT
       {
-#if __cpp_lib_is_constant_evaluated
+#if __glibcxx_is_constant_evaluated
 	if (std::is_constant_evaluated())
 	  for (size_type __i = 0; __i <= _S_local_capacity; ++__i)
 	    _M_local_buf[__i] = _CharT();
@@ -1133,7 +1129,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #pragma GCC diagnostic pop
 #endif
 
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
       /** Resize the string and call a function to fill it.
        *
        * @param __n   The maximum size requested.
@@ -4339,7 +4335,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
     return __str;
   }
 
-#if __cpp_lib_to_string >= 202306L
+#if __glibcxx_to_string >= 202306L // C++ >= 26
 
   [[nodiscard]]
   inline string
@@ -4518,7 +4514,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       }
   }
 
-#if __cpp_lib_constexpr_string >= 201907L
+#if __glibcxx_constexpr_string >= 201907L
   constexpr
 #endif
   inline wstring
@@ -4575,7 +4571,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
   to_wstring(unsigned long long __val)
   { return std::__to_wstring_numeric(std::to_string(__val)); }
 
-#if __cpp_lib_to_string || _GLIBCXX_USE_C99_STDIO
+#if __glibcxx_to_string || _GLIBCXX_USE_C99_STDIO
   _GLIBCXX_NODISCARD
   inline wstring
   to_wstring(float __val)
@@ -4678,7 +4674,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { };
 #endif
 
-#ifdef __cpp_lib_string_udls // C++ >= 14
+#ifdef __glibcxx_string_udls // C++ >= 14
   inline namespace literals
   {
   inline namespace string_literals
@@ -4686,7 +4682,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wliteral-suffix"
 
-#if __cpp_lib_constexpr_string >= 201907L
+#if __glibcxx_constexpr_string >= 201907L
 # define _GLIBCXX_STRING_CONSTEXPR constexpr
 #else
 # define _GLIBCXX_STRING_CONSTEXPR
@@ -4723,7 +4719,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #pragma GCC diagnostic pop
   } // inline namespace string_literals
   } // inline namespace literals
-#endif // __cpp_lib_string_udls
+#endif // __glibcxx_string_udls
 
 #if __cplusplus >= 201703L
   namespace __detail::__variant
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index f0a44e5e881..1568fc32007 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -566,7 +566,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __n;
     }
 
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
   template<typename _CharT, typename _Traits, typename _Alloc>
   template<typename _Operation>
     [[__gnu__::__always_inline__]]
@@ -581,7 +581,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Operation>
     _GLIBCXX20_CONSTEXPR void
     basic_string<_CharT, _Traits, _Alloc>::
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
     resize_and_overwrite(const size_type __n, _Operation __op)
 #else
     __resize_and_overwrite(const size_type __n, _Operation __op)
@@ -615,7 +615,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #endif  // _GLIBCXX_USE_CXX11_ABI
    
-#if __cpp_lib_constexpr_string >= 201907L
+#if __glibcxx_constexpr_string >= 201907L
 # define _GLIBCXX_STRING_CONSTEXPR constexpr
 #else
 # define _GLIBCXX_STRING_CONSTEXPR
diff --git a/libstdc++-v3/include/bits/char_traits.h b/libstdc++-v3/include/bits/char_traits.h
index e9b4e84af99..824630842ee 100644
--- a/libstdc++-v3/include/bits/char_traits.h
+++ b/libstdc++-v3/include/bits/char_traits.h
@@ -61,9 +61,6 @@
 # define _GLIBCXX_ALWAYS_INLINE inline __attribute__((__always_inline__))
 #endif
 
-#define __glibcxx_want_constexpr_char_traits
-#include <bits/version.h>
-
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h
index 50aca84f142..1f6daa34bcd 100644
--- a/libstdc++-v3/include/bits/chrono.h
+++ b/libstdc++-v3/include/bits/chrono.h
@@ -32,10 +32,6 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_chrono
-#define __glibcxx_want_chrono_udls
-#include <bits/version.h>
-
 #if __cplusplus >= 201103L
 
 #include <ratio>
@@ -48,6 +44,8 @@
 # include <compare>
 #endif
 
+#include <bits/version.h>
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -374,7 +372,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { };
 #endif // C++20
 
-#ifdef __cpp_lib_chrono // C++ >= 17 && HOSTED
+#ifdef __glibcxx_chrono // C++ >= 17 && HOSTED
     /** Convert a `duration` to type `ToDur` and round down.
      *
      * If the duration cannot be represented exactly in the result type,
@@ -468,7 +466,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     // Make chrono::ceil<D> also usable as chrono::__detail::ceil<D>.
     namespace __detail { using chrono::ceil; }
 
-#else // ! __cpp_lib_chrono
+#else // ! __glibcxx_chrono
 
     // We want to use ceil even when compiling for earlier standards versions.
     // C++11 only allows a single statement in a constexpr function, so we
@@ -490,7 +488,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  return __detail::__ceil_impl(chrono::duration_cast<_ToDur>(__d), __d);
 	}
     }
-#endif // __cpp_lib_chrono
+#endif // __glibcxx_chrono
 
     /// duration_values
     template<typename _Rep>
@@ -1314,7 +1312,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
 #endif // C++20
   } // namespace chrono
 
-#ifdef __cpp_lib_chrono_udls // C++ >= 14 && HOSTED
+#ifdef __glibcxx_chrono_udls // C++ >= 14 && HOSTED
   inline namespace literals
   {
   /** ISO C++ 2014  namespace for suffixes for duration literals.
@@ -1435,7 +1433,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
   {
     using namespace literals::chrono_literals;
   } // namespace chrono
-#endif // __cpp_lib_chrono_udls
+#endif // __glibcxx_chrono_udls
 
 #if __cplusplus >= 201703L
   namespace filesystem
diff --git a/libstdc++-v3/include/bits/cow_string.h b/libstdc++-v3/include/bits/cow_string.h
index 5411dfe32a9..414f10a4993 100644
--- a/libstdc++-v3/include/bits/cow_string.h
+++ b/libstdc++-v3/include/bits/cow_string.h
@@ -36,9 +36,6 @@
 
 #include <ext/atomicity.h> // _Atomic_word, __is_single_threaded
 
-#define __glibcxx_want_constexpr_string
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -965,7 +962,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #pragma GCC diagnostic pop
 #endif
 
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
       /** Resize the string and call a function to fill it.
        *
        * @param __n   The maximum size requested.
@@ -998,7 +995,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Operation>
 	void
 	resize_and_overwrite(size_type __n, _Operation __op);
-#endif // __cpp_lib_string_resize_and_overwrite
+#endif // __glibcxx_string_resize_and_overwrite
 
 #if __cplusplus >= 201103L
       /// Non-standard version of resize_and_overwrite for C++11 and above.
@@ -3754,7 +3751,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __n;
     }
 
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
   template<typename _CharT, typename _Traits, typename _Alloc>
   template<typename _Operation>
     [[__gnu__::__always_inline__]]
@@ -3769,7 +3766,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Operation>
     void
     basic_string<_CharT, _Traits, _Alloc>::
-#ifdef __cpp_lib_string_resize_and_overwrite // C++ >= 23
+#ifdef __glibcxx_string_resize_and_overwrite // C++ >= 23
     resize_and_overwrite(const size_type __n, _Operation __op)
 #else
     __resize_and_overwrite(const size_type __n, _Operation __op)
diff --git a/libstdc++-v3/include/bits/erase_if.h b/libstdc++-v3/include/bits/erase_if.h
index 4ff81e0f98f..b807a4515b4 100644
--- a/libstdc++-v3/include/bits/erase_if.h
+++ b/libstdc++-v3/include/bits/erase_if.h
@@ -34,9 +34,7 @@
 
 #include <bits/c++config.h>
 
-#define __glibcxx_want_erase_if
-#include <bits/version.h>
-
+// Used by C++17 containers and Library Fundamentals v2 headers.
 #if __cplusplus >= 201402L
 namespace std
 {
diff --git a/libstdc++-v3/include/bits/forward_list.h b/libstdc++-v3/include/bits/forward_list.h
index c56e430b068..5f7972d1a69 100644
--- a/libstdc++-v3/include/bits/forward_list.h
+++ b/libstdc++-v3/include/bits/forward_list.h
@@ -41,9 +41,6 @@
 #include <ext/alloc_traits.h>
 #include <ext/aligned_buffer.h>
 
-#define __glibcxx_want_list_remove_return_type
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1183,7 +1180,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       /// @}
 
     private:
-#ifdef __cpp_lib_list_remove_return_type // C++20 && HOSTED
+#ifdef __glibcxx_list_remove_return_type // C++20 && HOSTED
       using __remove_return_type = size_type;
 # define _GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG \
       __attribute__((__abi_tag__("__cxx20")))
diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index 89132430f3e..9ff9104a2ab 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -39,9 +39,6 @@
 # include <bits/node_handle.h>
 #endif
 
-#define __glibcxx_want_generic_unordered_lookup
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -760,7 +757,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       std::pair<const_iterator, const_iterator>
       equal_range(const key_type& __k) const;
 
-#ifdef __cpp_lib_generic_unordered_lookup // C++ >= 20 && HOSTED
+#ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
       template<typename _Kt,
 	       typename = __has_is_transparent_t<_Hash, _Kt>,
 	       typename = __has_is_transparent_t<_Equal, _Kt>>
@@ -790,7 +787,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	       typename = __has_is_transparent_t<_Equal, _Kt>>
 	pair<const_iterator, const_iterator>
 	_M_equal_range_tr(const _Kt& __k) const;
-#endif // __cpp_lib_generic_unordered_lookup
+#endif // __glibcxx_generic_unordered_lookup
 
     private:
       // Bucket index computation helpers.
diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h
index 3253eaaa233..9e775ccff64 100644
--- a/libstdc++-v3/include/bits/ios_base.h
+++ b/libstdc++-v3/include/bits/ios_base.h
@@ -46,9 +46,6 @@
 # include <system_error>
 #endif
 
-#define __glibcxx_want_ios_noreplace
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -476,7 +473,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     static const openmode __noreplace =	_S_noreplace;
 
-#ifdef __cpp_lib_ios_noreplace // C++ >= 23 && HOSTED
+#ifdef __glibcxx_ios_noreplace // C++ >= 23 && HOSTED
     /// Open a file in exclusive mode.
     static const openmode noreplace =	_S_noreplace;
 #endif
diff --git a/libstdc++-v3/include/bits/memory_resource.h b/libstdc++-v3/include/bits/memory_resource.h
index f12555d4215..97bcdd5e572 100644
--- a/libstdc++-v3/include/bits/memory_resource.h
+++ b/libstdc++-v3/include/bits/memory_resource.h
@@ -42,7 +42,7 @@
 #include <ext/numeric_traits.h>		// __int_traits
 #include <debug/assertions.h>
 
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
 # include <bits/utility.h>		// index_sequence
 # include <tuple>			// tuple, forward_as_tuple
 #endif
@@ -220,7 +220,7 @@ namespace pmr
 	}
 #endif // C++2a
 
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
       template<typename _Tp1, typename... _Args>
 	__attribute__((__nonnull__))
 	typename __not_pair<_Tp1>::type
@@ -337,7 +337,7 @@ namespace pmr
 #endif
 
     private:
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
       using __uses_alloc1_ = __uses_alloc1<polymorphic_allocator>;
       using __uses_alloc2_ = __uses_alloc2<polymorphic_allocator>;
 
diff --git a/libstdc++-v3/include/bits/move.h b/libstdc++-v3/include/bits/move.h
index 0151d78aff9..54606cd4e8f 100644
--- a/libstdc++-v3/include/bits/move.h
+++ b/libstdc++-v3/include/bits/move.h
@@ -37,9 +37,6 @@
 # include <type_traits> // Brings in std::declval too.
 #endif
 
-#define __glibcxx_want_addressof_constexpr
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/move_only_function.h b/libstdc++-v3/include/bits/move_only_function.h
index 0aa5980324a..2a40ff400de 100644
--- a/libstdc++-v3/include/bits/move_only_function.h
+++ b/libstdc++-v3/include/bits/move_only_function.h
@@ -32,10 +32,9 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_move_only_function
 #include <bits/version.h>
 
-#ifdef __cpp_lib_move_only_function // C++ >= 23 && HOSTED
+#ifdef __glibcxx_move_only_function // C++ >= 23 && HOSTED
 
 #include <bits/invoke.h>
 #include <bits/utility.h>
@@ -213,5 +212,5 @@ _GLIBCXX_END_NAMESPACE_VERSION
 #define _GLIBCXX_MOF_REF &&
 #include "mofunc_impl.h"
 
-#endif // __cpp_lib_move_only_function
+#endif // __glibcxx_move_only_function
 #endif // _GLIBCXX_MOVE_ONLY_FUNCTION_H
diff --git a/libstdc++-v3/include/bits/node_handle.h b/libstdc++-v3/include/bits/node_handle.h
index 16471355c19..d3c75c7c3ef 100644
--- a/libstdc++-v3/include/bits/node_handle.h
+++ b/libstdc++-v3/include/bits/node_handle.h
@@ -33,10 +33,9 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_node_extract
 #include <bits/version.h>
 
-#ifdef __cpp_lib_node_extract // C++ >= 17 && HOSTED
+#ifdef __glibcxx_node_extract // C++ >= 17 && HOSTED
 
 #include <new>
 #include <bits/alloc_traits.h>
@@ -392,5 +391,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
-#endif // __cpp_lib_node_extract
+#endif // __glibcxx_node_extract
 #endif
diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h
index 9e2f4f3f216..66c39cc83fd 100644
--- a/libstdc++-v3/include/bits/ptr_traits.h
+++ b/libstdc++-v3/include/bits/ptr_traits.h
@@ -34,10 +34,6 @@
 
 #include <bits/move.h>
 
-#define __glibcxx_want_constexpr_memory
-#define __glibcxx_want_to_address
-#include <bits/version.h>
-
 #if __cplusplus > 201703L
 #include <concepts>
 namespace __gnu_debug { struct _Safe_iterator_base; }
@@ -212,7 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return __ptr;
     }
 
-#ifndef __cpp_lib_to_address // C++ < 20
+#ifndef __glibcxx_to_address // C++ < 20
   template<typename _Ptr>
     constexpr typename std::pointer_traits<_Ptr>::element_type*
     __to_address(const _Ptr& __ptr)
@@ -256,7 +252,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr auto
     to_address(const _Ptr& __ptr) noexcept
     { return std::__to_address(__ptr); }
-#endif // __cpp_lib_to_address
+#endif // __glibcxx_to_address
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/include/bits/range_access.h b/libstdc++-v3/include/bits/range_access.h
index 9751b8e88d5..63fc06dd4bf 100644
--- a/libstdc++-v3/include/bits/range_access.h
+++ b/libstdc++-v3/include/bits/range_access.h
@@ -32,10 +32,6 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_nonmember_container_access
-#define __glibcxx_want_ssize
-#include <bits/version.h>
-
 #if __cplusplus >= 201103L
 #include <initializer_list>
 #include <type_traits>	    // common_type_t, make_signed_t
@@ -255,7 +251,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #endif // C++14
 
-#ifdef __cpp_lib_nonmember_container_access // C++ >= 17
+#ifdef __glibcxx_nonmember_container_access // C++ >= 17
   /**
    *  @brief  Return the size of a container.
    *  @param  __cont  Container.
@@ -347,9 +343,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr const _Tp*
     data(initializer_list<_Tp> __il) noexcept
     { return __il.begin(); }
-#endif // __cpp_lib_nonmember_container_access
+#endif // __glibcxx_nonmember_container_access
 
-#ifdef __cpp_lib_ssize // C++ >= 20
+#ifdef __glibcxx_ssize // C++ >= 20
   template<typename _Container>
     [[nodiscard, __gnu__::__always_inline__]]
     constexpr auto
@@ -366,7 +362,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr ptrdiff_t
     ssize(const _Tp (&)[_Num]) noexcept
     { return _Num; }
-#endif // __cpp_lib_ssize
+#endif // __glibcxx_ssize
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index a06794c02c9..460893353de 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -39,14 +39,7 @@
 #include <bits/ranges_util.h>
 #include <bits/uniform_int_dist.h> // concept uniform_random_bit_generator
 
-#define __glibcxx_want_ranges_contains
-#define __glibcxx_want_ranges_find_last
-#define __glibcxx_want_ranges_fold
-#define __glibcxx_want_ranges_iota
-#define __glibcxx_want_shift
-#include <bits/version.h>
-
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -3472,7 +3465,7 @@ namespace ranges
 
   inline constexpr __prev_permutation_fn prev_permutation{};
 
-#if __cpp_lib_ranges_contains >= 202207L // C++ >= 23
+#if __glibcxx_ranges_contains >= 202207L // C++ >= 23
   struct __contains_fn
   {
     template<input_iterator _Iter, sentinel_for<_Iter> _Sent,
@@ -3526,9 +3519,9 @@ namespace ranges
 
   inline constexpr __contains_subrange_fn contains_subrange{};
 
-#endif // __cpp_lib_ranges_contains
+#endif // __glibcxx_ranges_contains
 
-#if __cpp_lib_ranges_iota >= 202202L // C++ >= 23
+#if __glibcxx_ranges_iota >= 202202L // C++ >= 23
 
   template<typename _Out, typename _Tp>
     struct out_value_result
@@ -3578,9 +3571,9 @@ namespace ranges
 
   inline constexpr __iota_fn iota{};
 
-#endif // __cpp_lib_ranges_iota
+#endif // __glibcxx_ranges_iota
 
-#if __cpp_lib_ranges_find_last >= 202207L // C++ >= 23
+#if __glibcxx_ranges_find_last >= 202207L // C++ >= 23
 
   struct __find_last_fn
   {
@@ -3708,9 +3701,9 @@ namespace ranges
 
   inline constexpr __find_last_if_not_fn find_last_if_not{};
 
-#endif // __cpp_lib_ranges_find_last
+#endif // __glibcxx_ranges_find_last
 
-#if __cpp_lib_ranges_fold >= 202207L // C++ >= 23
+#if __glibcxx_ranges_fold >= 202207L // C++ >= 23
 
   template<typename _Iter, typename _Tp>
     struct in_value_result
@@ -3957,7 +3950,7 @@ namespace ranges
   };
 
   inline constexpr __fold_right_last_fn fold_right_last{};
-#endif // __cpp_lib_ranges_fold
+#endif // __glibcxx_ranges_fold
 } // namespace ranges
 
   template<typename _ForwardIterator>
diff --git a/libstdc++-v3/include/bits/ranges_cmp.h b/libstdc++-v3/include/bits/ranges_cmp.h
index 96fa79667e6..420d8bd2448 100644
--- a/libstdc++-v3/include/bits/ranges_cmp.h
+++ b/libstdc++-v3/include/bits/ranges_cmp.h
@@ -30,9 +30,6 @@
 #ifndef _RANGES_CMP_H
 #define _RANGES_CMP_H 1
 
-#define __glibcxx_want_ranges
-#include <bits/version.h>
-
 #if __cplusplus > 201703L
 # include <bits/move.h>
 # include <concepts>
@@ -58,7 +55,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     using is_transparent = __is_transparent;
   };
 
-#ifdef __cpp_lib_ranges // C++ >= 20
+#ifdef __glibcxx_ranges // C++ >= 20
 namespace ranges
 {
   namespace __detail
@@ -175,7 +172,7 @@ namespace ranges
   };
 
 } // namespace ranges
-#endif // __cpp_lib_ranges
+#endif // __glibcxx_ranges
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 #endif // C++20
diff --git a/libstdc++-v3/include/bits/ranges_util.h b/libstdc++-v3/include/bits/ranges_util.h
index f7e3538af97..ab6c69c57d0 100644
--- a/libstdc++-v3/include/bits/ranges_util.h
+++ b/libstdc++-v3/include/bits/ranges_util.h
@@ -34,7 +34,7 @@
 # include <bits/ranges_base.h>
 # include <bits/utility.h>
 
-#ifdef __cpp_lib_ranges
+#ifdef __glibcxx_ranges
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/semaphore_base.h b/libstdc++-v3/include/bits/semaphore_base.h
index 2b3c196040b..7e07b308cdc 100644
--- a/libstdc++-v3/include/bits/semaphore_base.h
+++ b/libstdc++-v3/include/bits/semaphore_base.h
@@ -34,7 +34,7 @@
 
 #include <bits/atomic_base.h>
 #include <bits/chrono.h>
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 #include <bits/atomic_timed_wait.h>
 #include <ext/numeric_traits.h>
 #endif // __cpp_lib_atomic_wait
@@ -181,7 +181,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   };
 #endif // _GLIBCXX_HAVE_POSIX_SEMAPHORE
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
   struct __atomic_semaphore
   {
     static constexpr ptrdiff_t _S_max = __gnu_cxx::__int_traits<int>::__max;
@@ -266,7 +266,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 // Note: the _GLIBCXX_USE_POSIX_SEMAPHORE macro can be used to force the
 // use of Posix semaphores (sem_t). Doing so however, alters the ABI.
-#if defined __cpp_lib_atomic_wait && !_GLIBCXX_USE_POSIX_SEMAPHORE
+#if defined __glibcxx_atomic_wait && !_GLIBCXX_USE_POSIX_SEMAPHORE
   using __semaphore_impl = __atomic_semaphore;
 #elif _GLIBCXX_HAVE_POSIX_SEMAPHORE
   using __semaphore_impl = __platform_semaphore;
diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h
index 9b5ee571c3e..02bfdabfd1c 100644
--- a/libstdc++-v3/include/bits/shared_ptr.h
+++ b/libstdc++-v3/include/bits/shared_ptr.h
@@ -52,10 +52,6 @@
 #include <iosfwd>           	  // std::basic_ostream
 #include <bits/shared_ptr_base.h>
 
-#define __glibcxx_want_shared_ptr_weak_type
-#define __glibcxx_want_enable_shared_from_this
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -107,7 +103,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// @cond undocumented
 
   // Constraint for overloads taking non-array types.
-#if __cpp_concepts && __cpp_lib_type_trait_variable_templates
+#if __cpp_concepts && __glibcxx_type_trait_variable_templates
   template<typename _Tp>
     requires (!is_array_v<_Tp>)
     using _NonArray = _Tp;
@@ -116,7 +112,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     using _NonArray = __enable_if_t<!is_array<_Tp>::value, _Tp>;
 #endif
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L
+#if __glibcxx_shared_ptr_arrays >= 201707L
   // Constraint for overloads taking array types with unknown bound, U[].
 #if __cpp_concepts
   template<typename _Tp>
@@ -139,7 +135,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       = __enable_if_t<__is_array_known_bounds<_Tp>::value, _Tp>;
 #endif
 
-#if __cpp_lib_smart_ptr_for_overwrite
+#if __glibcxx_smart_ptr_for_overwrite
   // Constraint for overloads taking either non-array or bounded array, U[N].
 #if __cpp_concepts
   template<typename _Tp>
@@ -193,7 +189,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /// The type pointed to by the stored pointer, remove_extent_t<_Tp>
       using element_type = typename __shared_ptr<_Tp>::element_type;
 
-#ifdef __cpp_lib_shared_ptr_weak_type // C++ >= 17 && HOSTED
+#ifdef __glibcxx_shared_ptr_weak_type // C++ >= 17 && HOSTED
       /// The corresponding weak_ptr type for this shared_ptr
       /// @since C++17
       using weak_type = weak_ptr<_Tp>;
@@ -475,7 +471,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	friend shared_ptr<_NonArray<_Yp>>
 	make_shared(_Args&&...);
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L
+#if __glibcxx_shared_ptr_arrays >= 201707L
       // This constructor is non-standard, it is used by allocate_shared<T[]>.
       template<typename _Alloc, typename _Init = const remove_extent_t<_Tp>*>
 	shared_ptr(const _Sp_counted_array_base<_Alloc>& __a,
@@ -515,7 +511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	friend shared_ptr<_BoundedArray<_Yp>>
 	make_shared(const remove_extent_t<_Yp>&);
 
-#if __cpp_lib_smart_ptr_for_overwrite
+#if __glibcxx_smart_ptr_for_overwrite
       template<typename _Yp, typename _Alloc>
 	friend shared_ptr<_NotUnboundedArray<_Yp>>
 	allocate_shared_for_overwrite(const _Alloc&);
@@ -941,7 +937,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       shared_from_this() const
       { return shared_ptr<const _Tp>(this->_M_weak_this); }
 
-#ifdef __cpp_lib_enable_shared_from_this // C++ >= 17 && HOSTED
+#ifdef __glibcxx_enable_shared_from_this // C++ >= 17 && HOSTED
       /** @{
        * Get a `weak_ptr` referring to the object that has `*this` as its base.
        * @since C++17
@@ -1012,7 +1008,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 			     std::forward<_Args>(__args)...);
     }
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L
+#if __glibcxx_shared_ptr_arrays >= 201707L
   /// @cond undocumented
   template<typename _Tp, typename _Alloc = allocator<void>>
     auto
@@ -1100,7 +1096,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 			     std::__addressof(__u));
     }
 
-#if __cpp_lib_smart_ptr_for_overwrite
+#if __glibcxx_smart_ptr_for_overwrite
   template<typename _Tp, typename _Alloc>
     inline shared_ptr<_NotUnboundedArray<_Tp>>
     allocate_shared_for_overwrite(const _Alloc& __a)
diff --git a/libstdc++-v3/include/bits/shared_ptr_atomic.h b/libstdc++-v3/include/bits/shared_ptr_atomic.h
index 5b818fe4456..d0be43aec2d 100644
--- a/libstdc++-v3/include/bits/shared_ptr_atomic.h
+++ b/libstdc++-v3/include/bits/shared_ptr_atomic.h
@@ -31,9 +31,7 @@
 #define _SHARED_PTR_ATOMIC_H 1
 
 #include <bits/atomic_base.h>
-
-#define __glibcxx_want_atomic_shared_ptr
-#include <bits/version.h>
+#include <bits/shared_ptr.h>
 
 // Annotations for the custom locking in atomic<shared_ptr<T>>.
 #if defined _GLIBCXX_TSAN && __has_include(<sanitizer/tsan_interface.h>)
@@ -380,7 +378,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /// @} group pointer_abstractions
 
-#ifdef  __cpp_lib_atomic_shared_ptr // C++ >= 20 && HOSTED
+#ifdef  __glibcxx_atomic_shared_ptr // C++ >= 20 && HOSTED
   template<typename _Tp>
     struct atomic;
 
@@ -451,7 +449,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  auto __current = _M_val.load(memory_order_relaxed);
 	  while (__current & _S_lock_bit)
 	    {
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 	      __detail::__thread_relax();
 #endif
 	      __current = _M_val.load(memory_order_relaxed);
@@ -465,7 +463,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 						 memory_order_relaxed))
 	    {
 	      _GLIBCXX_TSAN_MUTEX_TRY_LOCK_FAILED(&_M_val);
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 	      __detail::__thread_relax();
 #endif
 	      __current = __current & ~_S_lock_bit;
@@ -498,7 +496,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __c._M_pi = reinterpret_cast<pointer>(__x & ~_S_lock_bit);
 	}
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
 	// Precondition: caller holds lock!
 	void
 	_M_wait_unlock(memory_order __o) const noexcept
@@ -608,7 +606,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	return __result;
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       void
       wait(value_type __old, memory_order __o) const noexcept
       {
@@ -731,7 +729,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	return compare_exchange_strong(__expected, std::move(__desired), __o);
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       void
       wait(value_type __old,
 	   memory_order __o = memory_order_seq_cst) const noexcept
@@ -844,7 +842,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	return compare_exchange_strong(__expected, std::move(__desired), __o);
       }
 
-#if __cpp_lib_atomic_wait
+#if __glibcxx_atomic_wait
       void
       wait(value_type __old,
 	   memory_order __o = memory_order_seq_cst) const noexcept
diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 33282e596b2..edb3eb654ea 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -67,10 +67,6 @@
 # include <bits/stl_uninitialized.h>
 #endif
 
-#define __glibcxx_want_smart_ptr_for_overwrite
-#define __glibcxx_want_shared_ptr_arrays
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -413,7 +409,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<_Lock_policy _Lp = __default_lock_policy>
     class __shared_count;
 
-#if __cplusplus >= 202002L
+#ifdef __glibcxx_atomic_shared_ptr
   template<typename>
     class _Sp_atomic;
 #endif
@@ -656,7 +652,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _Impl _M_impl;
     };
 
-#ifdef __cpp_lib_smart_ptr_for_overwrite // C++ >= 20 && HOSTED
+#ifdef __glibcxx_smart_ptr_for_overwrite // C++ >= 20 && HOSTED
   struct _Sp_overwrite_tag { };
 
   // Partial specialization used for make_shared_for_overwrite<non-array>().
@@ -715,9 +711,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_get_deleter(const std::type_info&) noexcept override
       { return nullptr; }
     };
-#endif // __cpp_lib_smart_ptr_for_overwrite
+#endif // __glibcxx_smart_ptr_for_overwrite
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
+#if __glibcxx_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
   struct _Sp_overwrite_tag;
 
   // For make_shared<T[]>, make_shared<T[N]>, allocate_shared<T[]> etc.
@@ -879,7 +875,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_get_deleter(const std::type_info&) noexcept override
       { return nullptr; }
     };
-#endif // __cpp_lib_shared_ptr_arrays >= 201707L
+#endif // __glibcxx_shared_ptr_arrays >= 201707L
 
   // The default deleter for shared_ptr<T[]> and shared_ptr<T[N]>.
   struct __sp_array_delete
@@ -898,7 +894,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Tp>
 	struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { };
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
+#if __glibcxx_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
       template<typename _Alloc>
 	struct __not_alloc_shared_tag<_Sp_counted_array_base<_Alloc>> { };
 #endif
@@ -974,7 +970,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  __p = __pi->_M_ptr();
 	}
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
+#if __glibcxx_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
       template<typename _Tp, typename _Alloc, typename _Init>
 	__shared_count(_Tp*& __p, const _Sp_counted_array_base<_Alloc>& __a,
 		       _Init __init)
@@ -1127,7 +1123,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     private:
       friend class __weak_count<_Lp>;
-#if __cplusplus >= 202002L
+#ifdef __glibcxx_atomic_shared_ptr
       template<typename> friend class _Sp_atomic;
 #endif
 
@@ -1227,7 +1223,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
     private:
       friend class __shared_count<_Lp>;
-#if __cplusplus >= 202002L
+#ifdef __glibcxx_atomic_shared_ptr
       template<typename> friend class _Sp_atomic;
 #endif
 
@@ -1716,7 +1712,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	friend __shared_ptr<_Tp1, _Lp1>
 	__allocate_shared(const _Alloc& __a, _Args&&... __args);
 
-#if __cpp_lib_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
+#if __glibcxx_shared_ptr_arrays >= 201707L // C++ >= 20 && HOSTED
       // This constructor is non-standard, it is used by allocate_shared<T[]>.
       template<typename _Alloc, typename _Init = const remove_extent_t<_Tp>*>
 	__shared_ptr(const _Sp_counted_array_base<_Alloc>& __a,
@@ -1777,7 +1773,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Del, typename _Tp1>
 	friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept;
 
-#if __cplusplus >= 202002L
+#ifdef __glibcxx_atomic_shared_ptr
       friend _Sp_atomic<shared_ptr<_Tp>>;
 #endif
 
@@ -2111,7 +2107,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr;
       friend class __enable_shared_from_this<_Tp, _Lp>;
       friend class enable_shared_from_this<_Tp>;
-#if __cplusplus >= 202002L
+#ifdef __glibcxx_atomic_shared_ptr
       friend _Sp_atomic<weak_ptr<_Tp>>;
 #endif
 
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index 637d53d6b95..0b34a4f86b0 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -72,10 +72,6 @@
 # endif
 #endif
 
-#define __glibcxx_want_clamp
-#define __glibcxx_want_sample
-#include <bits/version.h>
-
 // See concept_check.h for the __glibcxx_*_requires macros.
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -3604,7 +3600,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     }
 #endif // C++14
 
-#ifdef  __cpp_lib_clamp // C++ >= 17
+#ifdef  __glibcxx_clamp // C++ >= 17
   /**
    *  @brief  Returns the value clamped between lo and hi.
    *  @ingroup sorting_algorithms
@@ -3643,7 +3639,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
       __glibcxx_assert(!__comp(__hi, __lo));
       return std::min(std::max(__val, __lo, __comp), __hi, __comp);
     }
-#endif // __cpp_lib_clamp
+#endif // __glibcxx_clamp
 
   /**
    *  @brief Generate two uniformly distributed integers using a
@@ -5815,7 +5811,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     }
 #endif // C++14
 
-#ifdef __cpp_lib_sample // C++ >= 17
+#ifdef __glibcxx_sample // C++ >= 17
   /// Take a random sample from a population.
   template<typename _PopulationIterator, typename _SampleIterator,
            typename _Distance, typename _UniformRandomBitGenerator>
@@ -5843,7 +5839,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	__sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, __d,
 		 std::forward<_UniformRandomBitGenerator>(__g));
     }
-#endif // __cpp_lib_sample
+#endif // __glibcxx_sample
 
 _GLIBCXX_END_NAMESPACE_ALGO
 _GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 2f5a4bd4fd4..6276d85b86f 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -79,9 +79,6 @@
 # include <compare>
 #endif
 
-#define __glibcxx_want_robust_nonmodifying_seq_ops
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1382,7 +1379,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
 	(__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value
 	 && __is_pointer<_II1>::__value
 	 && __is_pointer<_II2>::__value
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
 	 // For C++20 iterator_traits<volatile T*>::value_type is non-volatile
 	 // so __is_byte<T> could be true, but we can't use memcmp with
 	 // volatile data.
@@ -1648,7 +1645,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     }
 #endif // C++11
 
-#ifdef __cpp_lib_robust_nonmodifying_seq_ops // C++ >= 14
+#ifdef __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
   /**
    *  @brief Tests a range for element-wise equality.
    *  @ingroup non_mutating_algorithms
@@ -1710,7 +1707,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
       return _GLIBCXX_STD_A::__equal4(__first1, __last1, __first2, __last2,
 				      __binary_pred);
     }
-#endif // __cpp_lib_robust_nonmodifying_seq_ops
+#endif // __glibcxx_robust_nonmodifying_seq_ops
 
   /**
    *  @brief Performs @b dictionary comparison on ranges.
@@ -1952,7 +1949,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	__gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
     }
 
-#if __cpp_lib_robust_nonmodifying_seq_ops // C++ >= 14
+#if __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
   template<typename _InputIterator1, typename _InputIterator2,
 	   typename _BinaryPredicate>
     _GLIBCXX20_CONSTEXPR
diff --git a/libstdc++-v3/include/bits/stl_function.h b/libstdc++-v3/include/bits/stl_function.h
index 608d4e96fb2..23d6da34d19 100644
--- a/libstdc++-v3/include/bits/stl_function.h
+++ b/libstdc++-v3/include/bits/stl_function.h
@@ -60,9 +60,6 @@
 #include <bits/move.h>
 #endif
 
-#define __glibcxx_want_transparent_operators
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -156,7 +153,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @{
    */
 
-#if __cpp_lib_transparent_operators // C++ >= 14
+#if __glibcxx_transparent_operators // C++ >= 14
   struct __is_transparent;  // undefined
 
   template<typename _Tp = void>
@@ -244,7 +241,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 #pragma GCC diagnostic pop
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   template<>
     struct plus<void>
     {
@@ -345,7 +342,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  @{
    */
-#if __cpp_lib_transparent_operators // C++ >= 14
+#if __glibcxx_transparent_operators // C++ >= 14
   template<typename _Tp = void>
     struct equal_to;
 
@@ -489,7 +486,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 #pragma GCC diagnostic pop
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   /// One of the @link comparison_functors comparison functors@endlink.
   template<>
     struct equal_to<void>
@@ -765,7 +762,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	      is_convertible<_Tp, const volatile void*>,
 	      is_convertible<_Up, const volatile void*>>;
     };
-#endif // __cpp_lib_transparent_operators
+#endif // __glibcxx_transparent_operators
   /** @}  */
 
   // 20.3.4 logical operations
@@ -777,7 +774,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  @{
    */
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   template<typename _Tp = void>
     struct logical_and;
 
@@ -822,7 +819,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 #pragma GCC diagnostic pop
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   /// One of the @link logical_functors Boolean operations functors@endlink.
   template<>
     struct logical_and<void>
@@ -867,10 +864,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       typedef __is_transparent is_transparent;
     };
-#endif // __cpp_lib_transparent_operators
+#endif // __glibcxx_transparent_operators
   /** @}  */
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   template<typename _Tp = void>
     struct bit_and;
 
@@ -926,7 +923,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 #pragma GCC diagnostic pop
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   template <>
     struct bit_and<void>
     {
@@ -1416,7 +1413,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   /** @}  */
 
-#ifdef __cpp_lib_transparent_operators // C++ >= 14
+#ifdef __glibcxx_transparent_operators // C++ >= 14
   template<typename _Func, typename _SfinaeType, typename = __void_t<>>
     struct __has_is_transparent
     { };
diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index b75f87e056d..919b1633930 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -70,12 +70,6 @@
 # include <type_traits>
 #endif
 
-#define __glibcxx_want_constexpr_iterator
-#define __glibcxx_want_array_constexpr
-#define __glibcxx_want_make_reverse_iterator
-#define __glibcxx_want_move_iterator_concept
-#include <bits/version.h>
-
 #if __cplusplus >= 202002L
 # include <compare>
 # include <new>
@@ -93,7 +87,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
   namespace __detail
   {
     // Weaken iterator_category _Cat to _Limit if it is derived from that,
@@ -142,7 +136,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       template<typename _Iter>
 	friend class reverse_iterator;
 
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 3435. three_way_comparable_with<reverse_iterator<int*>, [...]>
       template<typename _Iter>
@@ -158,7 +152,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     public:
       typedef _Iterator					iterator_type;
       typedef typename __traits_type::pointer		pointer;
-#if ! __cpp_lib_concepts
+#if ! __glibcxx_concepts
       typedef typename __traits_type::difference_type	difference_type;
       typedef typename __traits_type::reference		reference;
 #else
@@ -214,7 +208,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        *  underlying %iterator can be converted to the type of @c current.
       */
       template<typename _Iter>
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
 	requires __convertible<_Iter>
 #endif
 	_GLIBCXX17_CONSTEXPR
@@ -225,7 +219,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if __cplusplus >= 201103L
       template<typename _Iter>
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
 	requires __convertible<_Iter>
 	  && assignable_from<_Iterator&, const _Iter&>
 #endif
@@ -392,7 +386,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       operator[](difference_type __n) const
       { return *(*this + __n); }
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       [[nodiscard]]
       friend constexpr iter_rvalue_reference_t<_Iterator>
       iter_move(const reverse_iterator& __i)
@@ -440,7 +434,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  iterators.
    *
   */
-#if __cplusplus <= 201703L || ! defined __cpp_lib_concepts
+#if __cplusplus <= 201703L || ! defined __glibcxx_concepts
   template<typename _Iterator>
     _GLIBCXX_NODISCARD
     inline _GLIBCXX17_CONSTEXPR bool
@@ -641,7 +635,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     __make_reverse_iterator(_Iterator __i)
     { return reverse_iterator<_Iterator>(__i); }
 
-# ifdef __cpp_lib_make_reverse_iterator // C++ >= 14
+# ifdef __glibcxx_make_reverse_iterator // C++ >= 14
   // _GLIBCXX_RESOLVE_LIB_DEFECTS
   // DR 2285. make_reverse_iterator
   /// Generator function for reverse_iterator.
@@ -651,14 +645,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     make_reverse_iterator(_Iterator __i)
     { return reverse_iterator<_Iterator>(__i); }
 
-#  if __cplusplus > 201703L && defined __cpp_lib_concepts
+#  if __cplusplus > 201703L && defined __glibcxx_concepts
   template<typename _Iterator1, typename _Iterator2>
     requires (!sized_sentinel_for<_Iterator1, _Iterator2>)
     inline constexpr bool
     disable_sized_sentinel_for<reverse_iterator<_Iterator1>,
 			       reverse_iterator<_Iterator2>> = true;
 #  endif // C++20
-# endif // __cpp_lib_make_reverse_iterator
+# endif // __glibcxx_make_reverse_iterator
 
   template<typename _Iterator>
     _GLIBCXX20_CONSTEXPR
@@ -901,7 +895,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     class insert_iterator
     : public iterator<output_iterator_tag, void, void, void, void>
     {
-#if __cplusplus > 201703L && defined __cpp_lib_concepts
+#if __cplusplus > 201703L && defined __glibcxx_concepts
       using _Iter = std::__detail::__range_iter_t<_Container>;
 #else
       typedef typename _Container::iterator		_Iter;
@@ -914,7 +908,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       /// A nested typedef for the type of whatever container you used.
       typedef _Container          container_type;
 
-#if __cplusplus > 201703L && defined __cpp_lib_concepts
+#if __cplusplus > 201703L && defined __glibcxx_concepts
       using difference_type = ptrdiff_t;
 #endif
 
@@ -1010,7 +1004,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  template parameter deduction, making the compiler match the correct
    *  types for you.
   */
-#if __cplusplus > 201703L && defined __cpp_lib_concepts
+#if __cplusplus > 201703L && defined __glibcxx_concepts
   template<typename _Container>
     [[nodiscard]]
     constexpr insert_iterator<_Container>
@@ -1062,7 +1056,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typedef typename __traits_type::reference 	reference;
       typedef typename __traits_type::pointer   	pointer;
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       using iterator_concept = std::__detail::__iter_concept<_Iterator>;
 #endif
 
@@ -1373,7 +1367,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
   template<semiregular _Sent>
     class move_sentinel
     {
@@ -1417,7 +1411,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   namespace __detail
   {
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     template<typename _Iterator>
       struct __move_iter_cat
       { };
@@ -1444,21 +1438,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    */
   template<typename _Iterator>
     class move_iterator
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       : public __detail::__move_iter_cat<_Iterator>
 #endif
     {
       _Iterator _M_current;
 
       using __traits_type = iterator_traits<_Iterator>;
-#if ! (__cplusplus > 201703L && __cpp_lib_concepts)
+#if ! (__cplusplus > 201703L && __glibcxx_concepts)
       using __base_ref = typename __traits_type::reference;
 #endif
 
       template<typename _Iter2>
 	friend class move_iterator;
 
-#if __cpp_lib_concepts // C++20 && concepts
+#if __glibcxx_concepts // C++20 && concepts
       // _GLIBCXX_RESOLVE_LIB_DEFECTS
       // 3435. three_way_comparable_with<reverse_iterator<int*>, [...]>
       template<typename _Iter2>
@@ -1466,7 +1460,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	    && convertible_to<const _Iter2&, _Iterator>;
 #endif
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       static auto
       _S_iter_concept()
       {
@@ -1484,7 +1478,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     public:
       using iterator_type = _Iterator;
 
-#ifdef __cpp_lib_move_iterator_concept // C++ >= 20 && lib_concepts
+#ifdef __glibcxx_move_iterator_concept // C++ >= 20 && lib_concepts
       using iterator_concept = decltype(_S_iter_concept());
 
       // iterator_category defined in __move_iter_cat
@@ -1515,7 +1509,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       : _M_current(std::move(__i)) { }
 
       template<typename _Iter>
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
 	requires __convertible<_Iter>
 #endif
 	_GLIBCXX17_CONSTEXPR
@@ -1523,7 +1517,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: _M_current(__i._M_current) { }
 
       template<typename _Iter>
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
 	requires __convertible<_Iter>
 	  && assignable_from<_Iterator&, const _Iter&>
 #endif
@@ -1554,7 +1548,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       [[__nodiscard__]]
       _GLIBCXX17_CONSTEXPR reference
       operator*() const
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       { return ranges::iter_move(_M_current); }
 #else
       { return static_cast<reference>(*_M_current); }
@@ -1580,7 +1574,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	return __tmp;
       }
 
-#if __cpp_lib_concepts
+#if __glibcxx_concepts
       constexpr void
       operator++(int) requires (!forward_iterator<_Iterator>)
       { ++_M_current; }
@@ -1628,13 +1622,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       [[__nodiscard__]]
       _GLIBCXX17_CONSTEXPR reference
       operator[](difference_type __n) const
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       { return ranges::iter_move(_M_current + __n); }
 #else
       { return std::move(_M_current[__n]); }
 #endif
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
       template<sentinel_for<_Iterator> _Sent>
 	[[nodiscard]]
 	friend constexpr bool
@@ -1672,7 +1666,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator==(const move_iterator<_IteratorL>& __x,
 	       const move_iterator<_IteratorR>& __y)
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     requires requires { { __x.base() == __y.base() } -> convertible_to<bool>; }
 #endif
     { return __x.base() == __y.base(); }
@@ -1699,7 +1693,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator<(const move_iterator<_IteratorL>& __x,
 	      const move_iterator<_IteratorR>& __y)
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     requires requires { { __x.base() < __y.base() } -> convertible_to<bool>; }
 #endif
     { return __x.base() < __y.base(); }
@@ -1709,7 +1703,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator<=(const move_iterator<_IteratorL>& __x,
 	       const move_iterator<_IteratorR>& __y)
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     requires requires { { __y.base() < __x.base() } -> convertible_to<bool>; }
 #endif
     { return !(__y < __x); }
@@ -1719,7 +1713,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator>(const move_iterator<_IteratorL>& __x,
 	      const move_iterator<_IteratorR>& __y)
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     requires requires { { __y.base() < __x.base() } -> convertible_to<bool>; }
 #endif
     { return __y < __x; }
@@ -1729,7 +1723,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     inline _GLIBCXX17_CONSTEXPR bool
     operator>=(const move_iterator<_IteratorL>& __x,
 	       const move_iterator<_IteratorR>& __y)
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
     requires requires { { __x.base() < __y.base() } -> convertible_to<bool>; }
 #endif
     { return !(__x < __y); }
@@ -1827,7 +1821,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     __make_move_if_noexcept_iterator(_Tp* __i)
     { return _ReturnType(__i); }
 
-#if __cplusplus > 201703L && __cpp_lib_concepts
+#if __cplusplus > 201703L && __glibcxx_concepts
   // [iterators.common] Common iterators
 
   namespace __detail
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index 82256b7f1c5..6192f227dbd 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -65,9 +65,6 @@
 #include <ext/aligned_buffer.h>
 #endif
 
-#define __glibcxx_want_list_remove_return_type
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1764,7 +1761,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #endif
 
     private:
-#ifdef __cpp_lib_list_remove_return_type // C++ >= 20 && HOSTED
+#ifdef __glibcxx_list_remove_return_type // C++ >= 20 && HOSTED
       typedef size_type __remove_return_type;
 # define _GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG \
       __attribute__((__abi_tag__("__cxx20")))
diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index 02cce9b37d8..1221bb9c59f 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -63,9 +63,6 @@
 #include <tuple>
 #endif
 
-#define __glibcxx_want_map_try_emplace
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -699,7 +696,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	{ merge(__source); }
 #endif // C++17
 
-#ifdef __cpp_lib_map_try_emplace // C++ >= 17 && HOSTED
+#ifdef __glibcxx_map_try_emplace // C++ >= 17 && HOSTED
       /**
        *  @brief Attempts to build and insert a std::pair into the %map.
        *
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index 197a90987e6..0f1495aad73 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -65,10 +65,6 @@
 # include <compare>
 #endif
 
-#define __glibcxx_want_constexpr_utility
-#define __glibcxx_want_tuples_by_type
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1054,7 +1050,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     { return __pair_get<_Int>::__const_move_get(std::move(__in)); }
 
 
-#ifdef __cpp_lib_tuples_by_type // C++ >= 14
+#ifdef __glibcxx_tuples_by_type // C++ >= 14
   template <typename _Tp, typename _Up>
     constexpr _Tp&
     get(pair<_Tp, _Up>& __p) noexcept
@@ -1094,7 +1090,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     constexpr const _Tp&&
     get(const pair<_Up, _Tp>&& __p) noexcept
     { return std::move(__p.second); }
-#endif // __cpp_lib_tuples_by_type
+#endif // __glibcxx_tuples_by_type
 
 
 #if __cplusplus > 202002L
diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index 1d22578eb1e..63373f3a7f4 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -62,9 +62,6 @@
 # include <bits/uses_allocator.h>
 #endif
 
-#define __glibcxx_want_adaptor_iterator_pair_constructor
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -199,7 +196,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	: c(std::move(__q.c), __a) { }
 #endif
 
-#ifdef __cpp_lib_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
+#ifdef __glibcxx_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
       template<typename _InputIterator,
 	       typename = _RequireInputIter<_InputIterator>>
 	queue(_InputIterator __first, _InputIterator __last)
@@ -347,7 +344,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     queue(_Container, _Allocator)
     -> queue<typename _Container::value_type, _Container>;
 
-#ifdef __cpp_lib_adaptor_iterator_pair_constructor
+#ifdef __glibcxx_adaptor_iterator_pair_constructor
   template<typename _InputIterator,
 	   typename _ValT
 	     = typename iterator_traits<_InputIterator>::value_type,
diff --git a/libstdc++-v3/include/bits/stl_stack.h b/libstdc++-v3/include/bits/stl_stack.h
index 2d09098ca86..4a211e452e6 100644
--- a/libstdc++-v3/include/bits/stl_stack.h
+++ b/libstdc++-v3/include/bits/stl_stack.h
@@ -62,9 +62,6 @@
 # include <bits/uses_allocator.h>
 #endif
 
-#define __glibcxx_want_adaptor_iterator_pair_constructor
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -173,7 +170,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       stack(_Sequence&& __c)
       : c(std::move(__c)) { }
 
-#ifdef __cpp_lib_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
+#ifdef __glibcxx_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
       template<typename _InputIterator,
 	       typename = _RequireInputIter<_InputIterator>>
 	stack(_InputIterator __first, _InputIterator __last)
@@ -322,7 +319,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     stack(_Container, _Allocator)
     -> stack<typename _Container::value_type, _Container>;
 
-#ifdef __cpp_lib_adaptor_iterator_pair_constructor
+#ifdef __glibcxx_adaptor_iterator_pair_constructor
   template<typename _InputIterator,
 	   typename _ValT
 	     = typename iterator_traits<_InputIterator>::value_type,
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index 1cf887b028e..943bedb57f6 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -72,9 +72,6 @@
 # include <bits/node_handle.h>
 #endif
 
-#define __glibcxx_want_generic_associative_lookup
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h
index 5174cfbcbe2..1282af3bc43 100644
--- a/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -67,9 +67,6 @@
 #include <bits/stl_pair.h>
 #endif
 
-#define __glibcxx_want_raw_memory_algorithms
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -966,7 +963,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// @endcond
 #endif
 
-#ifdef __cpp_lib_raw_memory_algorithms // C++ >= 17
+#ifdef __glibcxx_raw_memory_algorithms // C++ >= 17
   /**
    *  @brief Default-initializes objects in the range [first,last).
    *  @param  __first  A forward iterator.
@@ -1059,7 +1056,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	 __count, __result);
       return {__res.first.base(), __res.second};
     }
-#endif // __cpp_lib_raw_memory_algorithms
+#endif // __glibcxx_raw_memory_algorithms
 
 #if __cplusplus >= 201103L
   /// @cond undocumented
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index 1a353397e07..5e18f6eedce 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -66,9 +66,6 @@
 # include <compare>
 #endif
 
-#define __glibcxx_want_constexpr_vector
-#include <bits/version.h>
-
 #include <debug/assertions.h>
 
 #if _GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR
diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index d92fe79e2f2..164f5f7e945 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -44,10 +44,6 @@
 # endif
 #endif
 
-#define __glibcxx_want_constexpr_memory
-#define __glibcxx_want_make_unique
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1027,7 +1023,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       public __uniq_ptr_hash<unique_ptr<_Tp, _Dp>>
     { };
 
-#ifdef __cpp_lib_make_unique // C++ >= 14 && HOSTED
+#ifdef __glibcxx_make_unique // C++ >= 14 && HOSTED
   /// @cond undocumented
 namespace __detail
 {
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index 4c9a6bae2fd..1c99a83bc1e 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -35,9 +35,6 @@
 #include <bits/functional_hash.h> // hash
 #include <bits/stl_function.h>    // equal_to
 
-#define __glibcxx_want_unordered_map_try_emplace
-#include <bits/version.h>
-
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -454,7 +451,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       { return _M_h._M_reinsert_node(std::move(__nh)).position; }
 #endif // C++17
 
-#ifdef __cpp_lib_unordered_map_try_emplace // C++ >= 17 && HOSTED
+#ifdef __glibcxx_unordered_map_try_emplace // C++ >= 17 && HOSTED
       /**
        *  @brief Attempts to build and insert a std::pair into the
        *  %unordered_map.
@@ -538,7 +535,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
 	  return _M_h.try_emplace(__hint, std::move(__k),
 				  std::forward<_Args>(__args)...).first;
 	}
-#endif // __cpp_lib_unordered_map_try_emplace
+#endif // __glibcxx_unordered_map_try_emplace
 
       ///@{
       /**
diff --git a/libstdc++-v3/include/bits/uses_allocator_args.h b/libstdc++-v3/include/bits/uses_allocator_args.h
index a4eae74d5e9..ede11db5b46 100644
--- a/libstdc++-v3/include/bits/uses_allocator_args.h
+++ b/libstdc++-v3/include/bits/uses_allocator_args.h
@@ -32,10 +32,9 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_make_obj_using_allocator
 #include <bits/version.h>
 
-#ifdef __cpp_lib_make_obj_using_allocator // C++ >= 20 && concepts
+#ifdef __glibcxx_make_obj_using_allocator // C++ >= 20 && concepts
 #include <new>			// for placement operator new
 #include <tuple>		// for tuple, make_tuple, make_from_tuple
 #include <bits/stl_construct.h> // construct_at
@@ -245,5 +244,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 /// @}
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
-#endif // __cpp_lib_make_obj_using_allocator
+#endif // __glibcxx_make_obj_using_allocator
 #endif // _USES_ALLOCATOR_ARGS
diff --git a/libstdc++-v3/include/bits/utility.h b/libstdc++-v3/include/bits/utility.h
index ebcf5ba36b2..bfcb8e78eba 100644
--- a/libstdc++-v3/include/bits/utility.h
+++ b/libstdc++-v3/include/bits/utility.h
@@ -35,11 +35,6 @@
 
 #pragma GCC system_header
 
-#define __glibcxx_want_tuple_element_t
-#define __glibcxx_want_integer_sequence
-#define __glibcxx_want_ranges_zip
-#include <bits/version.h>
-
 #if __cplusplus >= 201103L
 
 #include <type_traits>
@@ -135,7 +130,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 // _GLIBCXX_RESOLVE_LIB_DEFECTS
 // 3378. tuple_size_v/tuple_element_t should be available when
 //       tuple_size/tuple_element are
-#ifdef __cpp_lib_tuple_element_t // C++ >= 14
+#ifdef __glibcxx_tuple_element_t // C++ >= 14
   template<size_t __i, typename _Tp>
     using tuple_element_t = typename tuple_element<__i, _Tp>::type;
 #endif
@@ -160,7 +155,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
     };
 
-#ifdef __cpp_lib_integer_sequence // C++ >= 14
+#ifdef __glibcxx_integer_sequence // C++ >= 14
 
   /// Class template integer_sequence
   template<typename _Tp, _Tp... _Idx>
@@ -193,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   /// Alias template index_sequence_for
   template<typename... _Types>
     using index_sequence_for = make_index_sequence<sizeof...(_Types)>;
-#endif // __cpp_lib_integer_sequence
+#endif // __glibcxx_integer_sequence
 
 #if __cplusplus >= 201703L
 
diff --git a/libstdc++-v3/include/std/algorithm b/libstdc++-v3/include/std/algorithm
index c6ebb86e6a9..d7fab417111 100644
--- a/libstdc++-v3/include/std/algorithm
+++ b/libstdc++-v3/include/std/algorithm
@@ -63,7 +63,15 @@
 # include <bits/ranges_algo.h>
 #endif
 
+#define __glibcxx_want_clamp
+#define __glibcxx_want_constexpr_algorithms
 #define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges_contains
+#define __glibcxx_want_ranges_find_last
+#define __glibcxx_want_ranges_fold
+#define __glibcxx_want_robust_nonmodifying_seq_ops
+#define __glibcxx_want_sample
+#define __glibcxx_want_shift
 #include <bits/version.h>
 
 #if __cpp_lib_parallel_algorithm // C++ >= 17 && HOSTED
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index c4d534c3a34..d34ec5c7c43 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -45,6 +45,8 @@
 #include <bits/utility.h>      // std::index_sequence, std::tuple_size
 #include <debug/assertions.h>
 
+#define __glibcxx_want_array_constexpr
+#define __glibcxx_want_nonmember_container_access
 #define __glibcxx_want_to_array
 #include <bits/version.h>
 
diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic
index 713ee2cc539..09bbe2a7245 100644
--- a/libstdc++-v3/include/std/atomic
+++ b/libstdc++-v3/include/std/atomic
@@ -39,9 +39,12 @@
 #else
 
 #define __glibcxx_want_atomic_is_always_lock_free
+#define __glibcxx_want_atomic_flag_test
 #define __glibcxx_want_atomic_float
 #define __glibcxx_want_atomic_ref
 #define __glibcxx_want_atomic_lock_free_type_aliases
+#define __glibcxx_want_atomic_value_initialization
+#define __glibcxx_want_atomic_wait
 #include <bits/version.h>
 
 #include <bits/atomic_base.h>
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 10bdd1c4ede..e4ba6eafceb 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -50,6 +50,10 @@
 # include <bits/unique_ptr.h>
 #endif
 
+#define __glibcxx_want_chrono
+#define __glibcxx_want_chrono_udls
+#include <bits/version.h>
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 5ed4d3b2519..a4c4f8400ec 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -363,7 +363,7 @@ _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
 	       const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p)
       { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
 
-#ifdef __cpp_lib_jthread
+#ifdef __glibcxx_jthread
     template <class _Lock, class _Predicate>
     bool wait(_Lock& __lock,
               stop_token __stoken,
diff --git a/libstdc++-v3/include/std/deque b/libstdc++-v3/include/std/deque
index c0b05ddfc64..e48dc9968e8 100644
--- a/libstdc++-v3/include/std/deque
+++ b/libstdc++-v3/include/std/deque
@@ -69,6 +69,7 @@
 #include <bits/deque.tcc>
 
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
 
 #ifdef _GLIBCXX_DEBUG
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 1e7172575ec..8ec1c8a0b9a 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -34,6 +34,7 @@
 #include <bits/requires_hosted.h> // for std::string
 
 #define __glibcxx_want_format
+#define __glibcxx_want_format_ranges
 #include <bits/version.h>
 
 #ifdef __cpp_lib_format // C++ >= 20 && HOSTED
@@ -2041,7 +2042,7 @@ namespace __format
     };
 #endif
 
-#if defined __cpp_lib_to_chars
+#if defined __glibcxx_to_chars
   /// Format a floating-point value.
   template<__format::__formattable_float _Tp, __format::__char _CharT>
     struct formatter<_Tp, _CharT>
@@ -3246,7 +3247,7 @@ namespace __format
 	      return std::forward<_Visitor>(__vis)(_M_val._M_ll);
 	    case _Arg_ull:
 	      return std::forward<_Visitor>(__vis)(_M_val._M_ull);
-#if __cpp_lib_to_chars // FIXME: need to be able to format these types!
+#if __glibcxx_to_chars // FIXME: need to be able to format these types!
 	    case _Arg_flt:
 	      return std::forward<_Visitor>(__vis)(_M_val._M_flt);
 	    case _Arg_dbl:
diff --git a/libstdc++-v3/include/std/forward_list b/libstdc++-v3/include/std/forward_list
index bd642a16e42..0870bc22f47 100644
--- a/libstdc++-v3/include/std/forward_list
+++ b/libstdc++-v3/include/std/forward_list
@@ -46,6 +46,9 @@
 #endif
 
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_list_remove_return_type
+#define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
 
 #if __cplusplus >= 201703L
@@ -67,7 +70,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp, typename _Alloc, typename _Predicate>
-    inline typename forward_list<_Tp, _Alloc>::size_type 
+    inline typename forward_list<_Tp, _Alloc>::size_type
     erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred)
     { return __cont.remove_if(__pred); }
 
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 9551e38dfdb..729d11c9804 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -48,14 +48,6 @@
 #include <bits/c++config.h>
 #include <bits/stl_function.h> // std::equal_to, std::unary_function etc.
 
-#define __glibcxx_want_invoke
-#define __glibcxx_want_constexpr_functional
-#define __glibcxx_want_invoke_r
-#define __glibcxx_want_bind_front
-#define __glibcxx_want_not_fn
-#define __glibcxx_want_boyer_moore_searcher
-#include <bits/version.h>
-
 #if __cplusplus >= 201103L
 
 #include <tuple>
@@ -82,6 +74,17 @@
 # include <bits/move_only_function.h>
 #endif
 
+#define __glibcxx_want_boyer_moore_searcher
+#define __glibcxx_want_bind_front
+#define __glibcxx_want_constexpr_functional
+#define __glibcxx_want_invoke
+#define __glibcxx_want_invoke_r
+#define __glibcxx_want_move_only_function
+#define __glibcxx_want_not_fn
+#define __glibcxx_want_ranges
+#define __glibcxx_want_transparent_operators
+#include <bits/version.h>
+
 #endif // C++11
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/ios b/libstdc++-v3/include/std/ios
index 80be29f461e..3f4ad1c2cd6 100644
--- a/libstdc++-v3/include/std/ios
+++ b/libstdc++-v3/include/std/ios
@@ -45,4 +45,7 @@
 #include <streambuf>
 #include <bits/basic_ios.h>
 
+#define __glibcxx_want_ios_noreplace
+#include <bits/version.h>
+
 #endif	/* _GLIBCXX_IOS */
diff --git a/libstdc++-v3/include/std/iterator b/libstdc++-v3/include/std/iterator
index 8c8670fbdf0..7461efbdeb5 100644
--- a/libstdc++-v3/include/std/iterator
+++ b/libstdc++-v3/include/std/iterator
@@ -67,7 +67,14 @@
 #endif
 #include <bits/range_access.h>
 
+#define __glibcxx_want_array_constexpr
+#define __glibcxx_want_constexpr_iterator
+#define __glibcxx_want_make_reverse_iterator
+#define __glibcxx_want_move_iterator_concept
+#define __glibcxx_want_nonmember_container_access
 #define __glibcxx_want_null_iterators
+#define __glibcxx_want_ranges
+#define __glibcxx_want_ssize
 #include <bits/version.h>
 
 #if __cplusplus >= 202002L
diff --git a/libstdc++-v3/include/std/list b/libstdc++-v3/include/std/list
index 98415919dd4..b5185a9dec2 100644
--- a/libstdc++-v3/include/std/list
+++ b/libstdc++-v3/include/std/list
@@ -70,6 +70,9 @@
 #endif
 
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_list_remove_return_type
+#define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
 
 #if __cplusplus >= 201703L
diff --git a/libstdc++-v3/include/std/map b/libstdc++-v3/include/std/map
index a0f3fce7b28..008d8d3bdef 100644
--- a/libstdc++-v3/include/std/map
+++ b/libstdc++-v3/include/std/map
@@ -69,6 +69,13 @@
 # include <debug/map>
 #endif
 
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_associative_lookup
+#define __glibcxx_want_map_try_emplace
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
 #if __cplusplus >= 201703L
 #include <bits/memory_resource.h>
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory
index 3cce72cc036..ac83761a26c 100644
--- a/libstdc++-v3/include/std/memory
+++ b/libstdc++-v3/include/std/memory
@@ -91,8 +91,22 @@
 #  include <bits/uses_allocator_args.h>
 #endif
 
+#define __glibcxx_want_allocator_traits_is_always_equal
+#define __glibcxx_want_assume_aligned
+#define __glibcxx_want_atomic_shared_ptr
 #define __glibcxx_want_atomic_value_initialization
+#define __glibcxx_want_constexpr_dynamic_alloc
+#define __glibcxx_want_constexpr_memory
+#define __glibcxx_want_enable_shared_from_this
+#define __glibcxx_want_make_unique
 #define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges
+#define __glibcxx_want_raw_memory_algorithms
+#define __glibcxx_want_shared_ptr_arrays
+#define __glibcxx_want_shared_ptr_weak_type
+#define __glibcxx_want_smart_ptr_for_overwrite
+#define __glibcxx_want_to_address
+#define __glibcxx_want_transparent_operators
 #include <bits/version.h>
 
 #if __cplusplus >= 201103L && __cplusplus <= 202002L && _GLIBCXX_HOSTED
diff --git a/libstdc++-v3/include/std/numeric b/libstdc++-v3/include/std/numeric
index 8c8d200021f..559e6242e92 100644
--- a/libstdc++-v3/include/std/numeric
+++ b/libstdc++-v3/include/std/numeric
@@ -85,6 +85,7 @@
 #define __glibcxx_want_interpolate
 #define __glibcxx_want_lcm
 #define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges_iota
 #include <bits/version.h>
 
 /**
diff --git a/libstdc++-v3/include/std/queue b/libstdc++-v3/include/std/queue
index ec620ac6d62..8980ba8a578 100644
--- a/libstdc++-v3/include/std/queue
+++ b/libstdc++-v3/include/std/queue
@@ -65,4 +65,7 @@
 #include <bits/stl_function.h>
 #include <bits/stl_queue.h>
 
+#define __glibcxx_want_adaptor_iterator_pair_constructor
+#include <bits/version.h>
+
 #endif /* _GLIBCXX_QUEUE */
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 41f95dc8f78..26d6c013ad0 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -51,6 +51,7 @@
 #include <bits/ranges_util.h>
 #include <bits/refwrap.h>
 
+#define __glibcxx_want_ranges
 #define __glibcxx_want_ranges_as_const
 #define __glibcxx_want_ranges_as_rvalue
 #define __glibcxx_want_ranges_cartesian_product
diff --git a/libstdc++-v3/include/std/regex b/libstdc++-v3/include/std/regex
index 7f63d8606f7..ff3320522c1 100644
--- a/libstdc++-v3/include/std/regex
+++ b/libstdc++-v3/include/std/regex
@@ -68,6 +68,9 @@
 #include <bits/regex.h>
 #include <bits/regex_executor.h>
 
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
 #if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
 #include <bits/memory_resource.h>
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/scoped_allocator b/libstdc++-v3/include/std/scoped_allocator
index 8af432ada42..2f10479763e 100644
--- a/libstdc++-v3/include/std/scoped_allocator
+++ b/libstdc++-v3/include/std/scoped_allocator
@@ -196,7 +196,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	using __outermost_alloc_traits
 	  = allocator_traits<typename __outermost_type<_Alloc>::type>;
 
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
       template<typename _Tp, typename... _Args>
         void
         _M_construct(__uses_alloc0, _Tp* __p, _Args&&... __args)
@@ -373,7 +373,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       size_type max_size() const
       { return __traits::max_size(outer_allocator()); }
 
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
       template<typename _Tp, typename... _Args>
 	typename __not_pair<_Tp>::type
 	construct(_Tp* __p, _Args&&... __args)
@@ -473,7 +473,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                  const scoped_allocator_adaptor<_OutA2, _InA...>& __b) noexcept;
 
     private:
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
       template<typename _Ind, typename... _Args>
 	tuple<_Args&&...>
 	_M_construct_p(__uses_alloc0, _Ind, tuple<_Args...>& __t)
diff --git a/libstdc++-v3/include/std/set b/libstdc++-v3/include/std/set
index 5641b791668..55cabda0c2e 100644
--- a/libstdc++-v3/include/std/set
+++ b/libstdc++-v3/include/std/set
@@ -69,6 +69,12 @@
 # include <debug/set>
 #endif
 
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_associative_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
 #if __cplusplus >= 201703L
 #include <bits/memory_resource.h>
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/stack b/libstdc++-v3/include/std/stack
index 4cc89f0d585..dda18b6222e 100644
--- a/libstdc++-v3/include/std/stack
+++ b/libstdc++-v3/include/std/stack
@@ -62,4 +62,7 @@
 #include <deque>
 #include <bits/stl_stack.h>
 
+#define __glibcxx_want_adaptor_iterator_pair_constructor
+#include <bits/version.h>
+
 #endif /* _GLIBCXX_STACK */
diff --git a/libstdc++-v3/include/std/stop_token b/libstdc++-v3/include/std/stop_token
index 3be0f5a3ac4..fce1cf59b88 100644
--- a/libstdc++-v3/include/std/stop_token
+++ b/libstdc++-v3/include/std/stop_token
@@ -109,7 +109,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       this_thread::yield();
     }
 
-#ifndef __cpp_lib_semaphore
+#ifndef __glibcxx_semaphore
     struct binary_semaphore
     {
       explicit binary_semaphore(int __d) : _M_counter(__d > 0) { }
diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string
index 832e9d8915f..78e8bacc007 100644
--- a/libstdc++-v3/include/std/string
+++ b/libstdc++-v3/include/std/string
@@ -54,7 +54,13 @@
 #include <bits/basic_string.h>
 #include <bits/basic_string.tcc>
 
+#define __glibcxx_want_constexpr_char_traits
+#define __glibcxx_want_constexpr_string
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_nonmember_container_access
+#define __glibcxx_want_string_resize_and_overwrite
+#define __glibcxx_want_string_udls
+#define __glibcxx_want_to_string
 #include <bits/version.h>
 
 #if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index cf288ed3a36..cbb6bb0928f 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -35,6 +35,7 @@
 
 #pragma GCC system_header
 
+#define __glibcxx_want_constexpr_char_traits
 #define __glibcxx_want_string_view
 #define __glibcxx_want_constexpr_string_view
 #define __glibcxx_want_starts_ends_with
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 797d8c03112..f2e008be34f 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -45,9 +45,11 @@
 #endif
 
 #define __glibcxx_want_constexpr_tuple
+#define __glibcxx_want_tuple_element_t
 #define __glibcxx_want_tuples_by_type
 #define __glibcxx_want_apply
 #define __glibcxx_want_make_from_tuple
+#define __glibcxx_want_ranges_zip
 #include <bits/version.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/unordered_map b/libstdc++-v3/include/std/unordered_map
index b72845be18e..ec92492e8ed 100644
--- a/libstdc++-v3/include/std/unordered_map
+++ b/libstdc++-v3/include/std/unordered_map
@@ -46,6 +46,13 @@
 # include <debug/unordered_map>
 #endif
 
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_unordered_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#define __glibcxx_want_unordered_map_try_emplace
+#include <bits/version.h>
+
 #if __cplusplus >= 201703L
 #include <bits/memory_resource.h>
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/unordered_set b/libstdc++-v3/include/std/unordered_set
index 22a1c7ca24d..b77b6229fc2 100644
--- a/libstdc++-v3/include/std/unordered_set
+++ b/libstdc++-v3/include/std/unordered_set
@@ -46,6 +46,12 @@
 # include <debug/unordered_set>
 #endif
 
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_unordered_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
 #if __cplusplus >= 201703L
 #include <bits/memory_resource.h>
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index bdaf5d4c31b..18bef7adccd 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -68,15 +68,6 @@
 #include <bits/stl_relops.h>
 #include <bits/stl_pair.h>
 
-#define __glibcxx_want_as_const
-#define __glibcxx_want_constexpr_algorithms
-#define __glibcxx_want_exchange_function
-#define __glibcxx_want_forward_like
-#define __glibcxx_want_integer_comparison_functions
-#define __glibcxx_want_to_underlying
-#define __glibcxx_want_unreachable
-#include <bits/version.h>
-
 #if __cplusplus >= 201103L
 
 #include <initializer_list>
@@ -88,6 +79,21 @@
 #include <ext/numeric_traits.h> // __is_standard_integer, __int_traits
 #endif
 
+#define __glibcxx_want_addressof_constexpr
+#define __glibcxx_want_as_const
+#define __glibcxx_want_constexpr_algorithms
+#define __glibcxx_want_constexpr_utility
+#define __glibcxx_want_exchange_function
+#define __glibcxx_want_forward_like
+#define __glibcxx_want_integer_comparison_functions
+#define __glibcxx_want_integer_sequence
+#define __glibcxx_want_ranges_zip
+#define __glibcxx_want_to_underlying
+#define __glibcxx_want_tuple_element_t
+#define __glibcxx_want_tuples_by_type
+#define __glibcxx_want_unreachable
+#include <bits/version.h>
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/vector b/libstdc++-v3/include/std/vector
index ecd9f7108f6..5e1d54a04ac 100644
--- a/libstdc++-v3/include/std/vector
+++ b/libstdc++-v3/include/std/vector
@@ -76,7 +76,10 @@
 # include <debug/vector>
 #endif
 
+#define __glibcxx_want_constexpr_vector
 #define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_nonmember_container_access
 #include <bits/version.h>
 
 #if __cplusplus >= 201703L
-- 
2.41.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-11-16  8:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-16  8:11 [committed 1/2] libstdc++: Test for feature test macros more accurately Jonathan Wakely
2023-11-16  8:11 ` [committed 2/2] libstdc++: Only declare feature test macros in standard headers Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).