Message ID | 20230911163534.1913512-1-jwakely@redhat.com |
---|---|
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ab0a:0:b0:3f2:4152:657d with SMTP id m10csp2190334vqo; Mon, 11 Sep 2023 09:38:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE3ASwGX15htZB0cuWDB+T2R3r9mS8P7HzGmtD2B0EKS9GlJF6RFi8QGHX/JXwE8KyS9AtQ X-Received: by 2002:a2e:8684:0:b0:2b6:dc55:c3c7 with SMTP id l4-20020a2e8684000000b002b6dc55c3c7mr8604122lji.20.1694450289891; Mon, 11 Sep 2023 09:38:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694450289; cv=none; d=google.com; s=arc-20160816; b=GoptEiBqXjHC6izaZTaI5uM9O1HN0iicgpu1hCpRanjF/xLOuILL3RS0eB/oVl4ICY oiFTJdk9g4VKsFwYRmEOQjBbfwjXXXF8iM4shhT1KqJ/w6LwOHhVf3boEOLpt0wVyjQF l5q5LCrl/eTK+k72NtNcpIzEQK3TEqP6Nvx1wLVnOUIZMOTwXuzb6jDGNCcgwk+lbe4h NNVQnTd8UEIaGuZLDBsy0+RVtdiPxShp3VV+g3pCct6YY+LHdAYF+pvDsDjYLD6htUb6 qNENgXQ+n4P7SnlxDWcAEymPw5hjiu71LAtYKDaR8qJMdWFm82TiqS2Ckv6YlsjQh4KV Ga2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=oODF1JatEdf+O8DdyQ018nt1YS3Id6OxK/Sy/QPeXa0=; fh=sJ+2/4g29YdyXkoRrFZSpsL2zxijepB7X/1rB0LDDh8=; b=fa3/8OtC7KSg5g48EubR3nmEpKi2rP4O76IyG8545qHZ/HMMo/A4FTS90egFrmLAn/ Xogr96IpqJrh9z3usuPkWjEqQfFttxy86KBJTruzWL2wGqPB50k3d3Q4KYVubCWq8yhI JOqfFYkelyAVtGxMbosV8OuoIjtkyGVIoXVWg9Wv1DOjrlDPBvsoJ4pWIxaAPS03a2fm 8ZBhVDDlOcXPZXRyVp2ZtAZNdIsN3tTkurenQiMCcZMJN2+O7c4Dfb10F7kxHBxEeRdh 0YnNf210IXRfNX/OmIkSxxjjp9yuemgGG/PqIIDYlYD0nGqhb9XZIPjjLjPqRsb3BpQa 9C7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=NnIe3JQx; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id jz17-20020a170906bb1100b009a1b2ec439dsi6784775ejb.622.2023.09.11.09.38.09 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Sep 2023 09:38:09 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=NnIe3JQx; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8CB7A387689F for <ouuuleilei@gmail.com>; Mon, 11 Sep 2023 16:36:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8CB7A387689F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1694450199; bh=oODF1JatEdf+O8DdyQ018nt1YS3Id6OxK/Sy/QPeXa0=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=NnIe3JQxY8aVBl9V20EvZnJwx+4Z60sLTvy48n8PJvp5beULalacBQtTTPG25cbxJ RcT+BdPGK9w63s+seGVk2mvCCxak2oQR+9INXXg4sfR3k5Nhzvo2nLiBjfFYUNv1Fu E0I0JDnQm8vkAnz0EgcAY1N/Bso2T2vooB+8Sksc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 6B141385782B for <gcc-patches@gcc.gnu.org>; Mon, 11 Sep 2023 16:35:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6B141385782B Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-413-62MyL-FvOYWD_azRbhnQ4Q-1; Mon, 11 Sep 2023 12:35:35 -0400 X-MC-Unique: 62MyL-FvOYWD_azRbhnQ4Q-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8A0473813F28; Mon, 11 Sep 2023 16:35:35 +0000 (UTC) Received: from localhost (unknown [10.42.28.190]) by smtp.corp.redhat.com (Postfix) with ESMTP id 11BA52156701; Mon, 11 Sep 2023 16:35:34 +0000 (UTC) To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [PATCH 00/13] libstdc++: Add support for running tests with multiple -std options Date: Mon, 11 Sep 2023 17:16:31 +0100 Message-ID: <20230911163534.1913512-1-jwakely@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, URI_HEX autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> From: Jonathan Wakely via Gcc-patches <gcc-patches@gcc.gnu.org> Reply-To: Jonathan Wakely <jwakely@redhat.com> Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776759901161584413 X-GMAIL-MSGID: 1776759907454006359 |
Series |
libstdc++: Add support for running tests with multiple -std options
|
|
Message
Jonathan Wakely
Sept. 11, 2023, 4:16 p.m. UTC
This patch series replicates the behaviour of the g++ testsuite, so that libstdc++ tests can easily be run for multiple different -std options in a single testsuite run. As described in the updated docs, the -std options to use for every test can be overridden by setting v3_std_list in ~/.dejagnurc or $DEJAGNU, or setting $GLIBCXX_TESTSUITE_STDS in the environment. If not overridden, the default is just to run with -std=gnu++17 (so that we don't increase the time taken for a full testsuite run). Tests that require a newer standard than C++17 will default to that newer standard and C++26, so e.g. std::format tests will be run with both -std=gnu++20 and -std=gnu++26. This does increase the number of tests, but only for the subset of tests for C++20/23/26 features. If this is too costly for testers, we can change that (this might be needed, because the C++20 tests for std::ranges and std::format are particularly slow to compile). Because a correct default will be chosen for tests that require something newer than C++17, we no longer need dg-options "-std=gnu++20" or similar in any tests. Removing the explicit -std option allows the test to be run for later standards via the v3_std_list settings, so that we can verify that C++20 features still work in C++23 and C++26, for example. This change already found some tests which failed when run with a later standard (see r14-3771-gf12e26f3496275). Patches 2-13 in the series remove those unnecessary dg-options from about half the relevant tests, but there are more than 500 others that still need adjusting. We can remove files like testsuite/std/format/functions/format_c++23.cc which only exist to duplicate existing tests with a different -std option. We can remove that file now, and rely on format.cc being run with multiple -std options by libstdc++ maintainers. It might also be useful to add a 'make check-quick' target which runs a small subset of smoke tests with every standard version in v3_std_list. This would be a suitable target for CI bots and for packagers who want to verify that a build of GCC is functional, without running the entire libstdc++ testsuite. Any comments or suggestions? -- >8 -- Jonathan Wakely (13): libstdc++: Add support for running tests with multiple -std options libstdc++: Replace dg-options "-std=c++11" with dg-add-options strict_std libstdc++: Replace dg-options "-std=c++17" with dg-add-options strict_std libstdc++: Replace dg-options "-std=c++20" with dg-add-options strict_std libstdc++: Remove dg-options "-std=c++20" from <span> and <cuchar> tests libstdc++: Remove dg-options "-std=gnu++20" from <concepts> and <ranges> tests libstdc++: Remove dg-options "-std=gnu++2a" from constrained algo tests libstdc++: Remove dg-options "-std=gnu++20" from std::format tests libstdc++: Remove dg-options "-std=gnu++20" from std::chrono tests libstdc++: Remove dg-options "-std=gnu++23" from std::expected tests libstdc++: Remove dg-options "-std=gnu++23" from remaining tests libstdc++: Remove dg-options "-std=gnu++2a" from XFAIL std::span tests libstdc++: Simplify dejagnu directives for some tests using threads libstdc++-v3/doc/html/manual/test.html | 46 +++++--- libstdc++-v3/doc/xml/manual/test.xml | 52 ++++++--- .../headers/limits/synopsis_cxx23.cc | 1 - .../18_support/headers/stdfloat/types_std.cc | 1 - .../18_support/type_info/constexpr.cc | 2 +- .../19_diagnostics/stacktrace/current.cc | 2 +- .../19_diagnostics/stacktrace/entry.cc | 2 +- .../19_diagnostics/stacktrace/stacktrace.cc | 2 +- .../19_diagnostics/stacktrace/synopsis.cc | 1 - .../19_diagnostics/stacktrace/version.cc | 1 - .../20_util/aligned_storage/deprecated-2b.cc | 1 - .../20_util/aligned_union/deprecated-2b.cc | 1 - .../20_util/bitset/access/constexpr.cc | 1 - .../20_util/bitset/cons/constexpr_c++23.cc | 1 - .../20_util/bitset/count/constexpr.cc | 1 - .../testsuite/20_util/bitset/ext/constexpr.cc | 1 - .../bitset/operations/constexpr_c++23.cc | 1 - .../testsuite/20_util/bitset/version.cc | 1 - .../duration/arithmetic/overflow_c++20.cc | 1 - libstdc++-v3/testsuite/20_util/duration/io.cc | 1 - .../testsuite/20_util/expected/assign.cc | 1 - .../testsuite/20_util/expected/bad.cc | 1 - .../testsuite/20_util/expected/cons.cc | 1 - .../testsuite/20_util/expected/equality.cc | 1 - .../20_util/expected/illformed_neg.cc | 1 - .../testsuite/20_util/expected/lwg3877.cc | 1 - .../testsuite/20_util/expected/lwg3938.cc | 1 - .../testsuite/20_util/expected/monadic.cc | 1 - .../testsuite/20_util/expected/observers.cc | 1 - .../20_util/expected/requirements.cc | 1 - .../testsuite/20_util/expected/swap.cc | 1 - .../testsuite/20_util/expected/synopsis.cc | 1 - .../testsuite/20_util/expected/unexpected.cc | 1 - .../testsuite/20_util/expected/version.cc | 1 - .../testsuite/20_util/from_chars/8.cc | 1 - .../testsuite/20_util/from_chars/constexpr.cc | 1 - .../20_util/function/cons/deduction_c++23.cc | 1 - .../20_util/function_objects/invoke/4.cc | 1 - .../function_objects/invoke/dangling_ref.cc | 1 - .../function_objects/range.cmp/equal_to.cc | 3 +- .../function_objects/range.cmp/greater.cc | 3 +- .../range.cmp/greater_equal.cc | 3 +- .../function_objects/range.cmp/less.cc | 3 +- .../function_objects/range.cmp/less_equal.cc | 3 +- .../function_objects/range.cmp/lwg3530.cc | 1 - .../range.cmp/not_equal_to.cc | 3 +- .../testsuite/20_util/is_scoped_enum/value.cc | 1 - .../20_util/is_scoped_enum/version.cc | 1 - .../20_util/move_only_function/call.cc | 1 - .../20_util/move_only_function/cons.cc | 1 - .../20_util/move_only_function/move.cc | 1 - .../20_util/move_only_function/version.cc | 1 - .../20_util/optional/monadic/and_then.cc | 1 - .../20_util/optional/monadic/or_else.cc | 1 - .../20_util/optional/monadic/or_else_neg.cc | 1 - .../20_util/optional/monadic/pr109242.cc | 1 - .../20_util/optional/monadic/transform.cc | 1 - .../testsuite/20_util/pair/p2321r2.cc | 1 - .../20_util/reference_from_temporary/value.cc | 1 - .../reference_from_temporary/value2.cc | 1 - .../reference_from_temporary/version.cc | 1 - .../testsuite/20_util/shared_ptr/atomic/3.cc | 3 +- .../shared_ptr/thread/default_weaktoshared.cc | 3 +- .../shared_ptr/thread/mutex_weaktoshared.cc | 3 +- .../specialized_algorithms/construct_at/1.cc | 3 +- .../construct_at/92878_92947.cc | 3 +- .../construct_at/95788.cc | 3 +- .../destroy/constrained.cc | 3 +- .../uninitialized_copy/constrained.cc | 3 +- .../constrained.cc | 3 +- .../uninitialized_fill/94017.cc | 3 +- .../uninitialized_fill/constrained.cc | 3 +- .../uninitialized_fill_n/94017.cc | 3 +- .../uninitialized_move/constrained.cc | 3 +- .../constrained.cc | 3 +- .../synchronized_pool_resource/allocate.cc | 6 +- .../allocate_single.cc | 3 +- .../synchronized_pool_resource/cons.cc | 6 +- .../synchronized_pool_resource/cons_single.cc | 3 +- .../synchronized_pool_resource/is_equal.cc | 6 +- .../multithreaded.cc | 6 +- .../synchronized_pool_resource/options.cc | 6 +- .../synchronized_pool_resource/release.cc | 6 +- .../release_single.cc | 3 +- .../testsuite/20_util/to_chars/constexpr.cc | 1 - .../20_util/to_chars/float128_c++23.cc | 1 - .../20_util/to_chars/float16_c++23.cc | 1 - .../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/p2321r2.cc | 1 - .../20_util/unique_ptr/assign/constexpr.cc | 1 - .../unique_ptr/comparison/constexpr.cc | 1 - .../unique_ptr/cons/constexpr_c++20.cc | 1 - .../20_util/unique_ptr/creation/constexpr.cc | 1 - .../20_util/unique_ptr/modifiers/constexpr.cc | 1 - .../specialized_algorithms/constexpr.cc | 1 - .../testsuite/20_util/unreachable/1.cc | 1 - .../testsuite/20_util/unreachable/version.cc | 1 - .../20_util/uses_allocator/lwg3677.cc | 1 - .../capacity/char/resize_and_overwrite.cc | 1 - .../basic_string/operations/contains/char.cc | 1 - .../operations/contains/nonnull.cc | 2 +- .../operations/contains/wchar_t.cc | 1 - .../cons/char/range_c++20.cc | 1 - .../cons/wchar_t/range_c++20.cc | 1 - .../operations/contains/char.cc | 1 - .../operations/contains/char/2.cc | 1 - .../operations/contains/nonnull.cc | 2 +- .../operations/contains/wchar_t.cc | 1 - .../headers/cuchar/functions_std_cxx20.cc | 1 - .../23_containers/deque/48101-2_neg.cc | 4 +- .../23_containers/forward_list/48101-2_neg.cc | 4 +- .../23_containers/list/48101-2_neg.cc | 4 +- .../23_containers/map/48101-2_neg.cc | 4 +- .../testsuite/23_containers/map/48101_neg.cc | 3 +- .../23_containers/multimap/48101-2_neg.cc | 4 +- .../23_containers/multimap/48101_neg.cc | 3 +- .../23_containers/multiset/48101-2_neg.cc | 4 +- .../23_containers/queue/cons_from_iters.cc | 1 - .../23_containers/set/48101-2_neg.cc | 4 +- .../23_containers/span/back_assert_neg.cc | 5 +- .../testsuite/23_containers/span/back_neg.cc | 3 +- .../23_containers/span/cons_1_assert_neg.cc | 5 +- .../23_containers/span/cons_2_assert_neg.cc | 5 +- .../span/contiguous_range_neg.cc | 3 +- .../23_containers/span/everything.cc | 3 +- .../23_containers/span/first_2_assert_neg.cc | 5 +- .../23_containers/span/first_assert_neg.cc | 5 +- .../testsuite/23_containers/span/first_neg.cc | 3 +- .../23_containers/span/front_assert_neg.cc | 5 +- .../testsuite/23_containers/span/front_neg.cc | 3 +- .../23_containers/span/index_op_assert_neg.cc | 5 +- .../23_containers/span/index_op_neg.cc | 3 +- .../23_containers/span/last_2_assert_neg.cc | 5 +- .../23_containers/span/last_assert_neg.cc | 5 +- .../testsuite/23_containers/span/last_neg.cc | 3 +- .../span/subspan_2_assert_neg.cc | 5 +- .../span/subspan_3_assert_neg.cc | 5 +- .../span/subspan_4_assert_neg.cc | 5 +- .../span/subspan_5_assert_neg.cc | 5 +- .../span/subspan_6_assert_neg.cc | 5 +- .../23_containers/span/subspan_assert_neg.cc | 5 +- .../23_containers/span/subspan_neg.cc | 3 +- .../23_containers/stack/cons_from_iters.cc | 1 - .../unordered_map/48101-2_neg.cc | 4 +- .../unordered_multimap/48101-2_neg.cc | 4 +- .../unordered_multiset/48101-2_neg.cc | 4 +- .../unordered_set/48101-2_neg.cc | 4 +- .../23_containers/vector/48101-2_neg.cc | 4 +- .../vector/bool/element_access/1.cc | 1 - .../24_iterators/const_iterator/1.cc | 1 - .../range_operations/advance_debug_neg.cc | 5 +- .../24_iterators/reverse_iterator/100639.cc | 4 +- .../25_algorithms/adjacent_find/constexpr.cc | 3 +- .../adjacent_find/constrained.cc | 3 +- .../25_algorithms/all_of/constexpr.cc | 3 +- .../25_algorithms/all_of/constrained.cc | 3 +- .../25_algorithms/any_of/constexpr.cc | 3 +- .../25_algorithms/any_of/constrained.cc | 3 +- .../25_algorithms/binary_search/constexpr.cc | 3 +- .../binary_search/constrained.cc | 3 +- .../25_algorithms/clamp/constrained.cc | 3 +- .../25_algorithms/constexpr_macro.cc | 3 +- .../testsuite/25_algorithms/contains/1.cc | 1 - .../25_algorithms/contains_subrange/1.cc | 1 - .../testsuite/25_algorithms/copy/95578.cc | 3 +- .../testsuite/25_algorithms/copy/constexpr.cc | 3 +- .../25_algorithms/copy/constrained.cc | 3 +- .../25_algorithms/copy/debug/constexpr_neg.cc | 3 +- .../25_algorithms/copy_backward/95578.cc | 3 +- .../25_algorithms/copy_backward/constexpr.cc | 3 +- .../copy_backward/constrained.cc | 3 +- .../copy_backward/debug/constexpr_neg.cc | 3 +- .../25_algorithms/copy_if/constexpr.cc | 3 +- .../25_algorithms/copy_if/constrained.cc | 3 +- .../25_algorithms/copy_n/constexpr.cc | 3 +- .../25_algorithms/copy_n/constrained.cc | 3 +- .../25_algorithms/count/constexpr.cc | 3 +- .../25_algorithms/count/constrained.cc | 3 +- .../25_algorithms/count_if/constexpr.cc | 3 +- .../25_algorithms/count_if/constrained.cc | 3 +- .../25_algorithms/cpp_lib_constexpr.cc | 3 +- .../testsuite/25_algorithms/equal/95578.cc | 3 +- .../25_algorithms/equal/constexpr.cc | 3 +- .../25_algorithms/equal/constexpr_neg.cc | 3 +- .../25_algorithms/equal/constrained.cc | 3 +- .../equal/debug/constexpr_neg.cc | 3 +- .../25_algorithms/equal_range/constexpr.cc | 3 +- .../25_algorithms/equal_range/constrained.cc | 3 +- .../testsuite/25_algorithms/fill/94017.cc | 3 +- .../testsuite/25_algorithms/fill/constexpr.cc | 3 +- .../25_algorithms/fill/constrained.cc | 3 +- .../testsuite/25_algorithms/fill_n/94017.cc | 3 +- .../25_algorithms/fill_n/constexpr.cc | 3 +- .../25_algorithms/fill_n/constrained.cc | 3 +- .../testsuite/25_algorithms/find/constexpr.cc | 3 +- .../25_algorithms/find/constrained.cc | 3 +- .../25_algorithms/find_end/constexpr.cc | 3 +- .../25_algorithms/find_end/constrained.cc | 3 +- .../25_algorithms/find_first_of/constexpr.cc | 3 +- .../find_first_of/constrained.cc | 3 +- .../25_algorithms/find_if/constexpr.cc | 3 +- .../25_algorithms/find_if/constrained.cc | 3 +- .../25_algorithms/find_if_not/constexpr.cc | 3 +- .../25_algorithms/find_if_not/constrained.cc | 3 +- .../testsuite/25_algorithms/find_last/1.cc | 1 - .../testsuite/25_algorithms/find_last_if/1.cc | 1 - .../25_algorithms/find_last_if_not/1.cc | 1 - .../testsuite/25_algorithms/fold_left/1.cc | 1 - .../testsuite/25_algorithms/fold_right/1.cc | 1 - .../25_algorithms/for_each/constexpr.cc | 3 +- .../25_algorithms/for_each/constrained.cc | 3 +- .../25_algorithms/generate/constexpr.cc | 3 +- .../25_algorithms/generate/constrained.cc | 3 +- .../25_algorithms/generate_n/constexpr.cc | 3 +- .../25_algorithms/generate_n/constrained.cc | 3 +- .../25_algorithms/heap/constrained.cc | 3 +- .../25_algorithms/includes/constrained.cc | 3 +- .../inplace_merge/constrained.cc | 3 +- .../testsuite/25_algorithms/iota/1.cc | 1 - .../25_algorithms/is_heap/constexpr.cc | 3 +- .../25_algorithms/is_heap_until/constexpr.cc | 3 +- .../25_algorithms/is_partitioned/constexpr.cc | 3 +- .../is_partitioned/constrained.cc | 3 +- .../25_algorithms/is_permutation/constexpr.cc | 3 +- .../is_permutation/constrained.cc | 3 +- .../25_algorithms/is_sorted/constexpr.cc | 3 +- .../25_algorithms/is_sorted/constrained.cc | 3 +- .../is_sorted_until/constexpr.cc | 3 +- .../is_sorted_until/constrained.cc | 3 +- .../25_algorithms/iter_swap/constexpr.cc | 3 +- .../lexicographical_compare/93972.cc | 3 +- .../lexicographical_compare/95578.cc | 3 +- .../lexicographical_compare/constexpr.cc | 3 +- .../lexicographical_compare/constrained.cc | 3 +- .../lexicographical_compare_three_way/1.cc | 3 +- .../constexpr.cc | 3 +- .../25_algorithms/lower_bound/constexpr.cc | 3 +- .../25_algorithms/lower_bound/constrained.cc | 3 +- .../debug/constexpr_partitioned_neg.cc | 3 +- .../debug/constexpr_partitioned_pred_neg.cc | 3 +- .../debug/constexpr_valid_range_neg.cc | 3 +- .../25_algorithms/make_heap/constexpr.cc | 3 +- .../25_algorithms/max/constrained.cc | 3 +- .../25_algorithms/max_element/constrained.cc | 3 +- .../25_algorithms/merge/constexpr.cc | 3 +- .../25_algorithms/merge/constrained.cc | 3 +- .../25_algorithms/min/constrained.cc | 3 +- .../25_algorithms/min_element/constrained.cc | 3 +- .../25_algorithms/minmax/constrained.cc | 3 +- .../minmax_element/constrained.cc | 3 +- .../25_algorithms/mismatch/constexpr.cc | 3 +- .../25_algorithms/mismatch/constrained.cc | 3 +- .../testsuite/25_algorithms/move/93872.cc | 3 +- .../testsuite/25_algorithms/move/95578.cc | 3 +- .../testsuite/25_algorithms/move/constexpr.cc | 1 - .../25_algorithms/move/constrained.cc | 3 +- .../25_algorithms/move_backward/93872.cc | 3 +- .../25_algorithms/move_backward/95578.cc | 3 +- .../move_backward/constrained.cc | 3 +- .../next_permutation/constexpr.cc | 3 +- .../next_permutation/constrained.cc | 3 +- .../25_algorithms/none_of/constexpr.cc | 3 +- .../25_algorithms/none_of/constrained.cc | 3 +- .../25_algorithms/nth_element/constexpr.cc | 3 +- .../25_algorithms/nth_element/constrained.cc | 3 +- .../25_algorithms/partial_sort/constexpr.cc | 3 +- .../25_algorithms/partial_sort/constrained.cc | 3 +- .../partial_sort_copy/constexpr.cc | 3 +- .../partial_sort_copy/constrained.cc | 3 +- .../25_algorithms/partition/constexpr.cc | 3 +- .../25_algorithms/partition/constrained.cc | 3 +- .../25_algorithms/partition_copy/constexpr.cc | 3 +- .../partition_copy/constrained.cc | 3 +- .../partition_point/constexpr.cc | 3 +- .../partition_point/constrained.cc | 3 +- .../25_algorithms/pop_heap/constexpr.cc | 3 +- .../prev_permutation/constexpr.cc | 3 +- .../prev_permutation/constrained.cc | 3 +- .../25_algorithms/push_heap/constexpr.cc | 3 +- .../25_algorithms/remove/constexpr.cc | 3 +- .../25_algorithms/remove/constrained.cc | 3 +- .../25_algorithms/remove_copy/constexpr.cc | 3 +- .../25_algorithms/remove_copy/constrained.cc | 3 +- .../25_algorithms/remove_copy_if/constexpr.cc | 3 +- .../remove_copy_if/constrained.cc | 3 +- .../25_algorithms/remove_if/constexpr.cc | 3 +- .../25_algorithms/remove_if/constrained.cc | 3 +- .../25_algorithms/replace/constrained.cc | 3 +- .../25_algorithms/replace_copy/constexpr.cc | 3 +- .../25_algorithms/replace_copy/constrained.cc | 3 +- .../replace_copy_if/constexpr.cc | 3 +- .../replace_copy_if/constrained.cc | 3 +- .../25_algorithms/replace_if/constexpr.cc | 3 +- .../25_algorithms/replace_if/constrained.cc | 3 +- .../25_algorithms/reverse/constexpr.cc | 3 +- .../25_algorithms/reverse/constrained.cc | 3 +- .../25_algorithms/reverse_copy/constexpr.cc | 3 +- .../25_algorithms/reverse_copy/constrained.cc | 3 +- .../25_algorithms/rotate/constexpr.cc | 3 +- .../25_algorithms/rotate/constrained.cc | 3 +- .../25_algorithms/rotate_copy/constexpr.cc | 3 +- .../25_algorithms/rotate_copy/constrained.cc | 3 +- .../25_algorithms/sample/constrained.cc | 3 +- .../25_algorithms/search/constexpr.cc | 3 +- .../25_algorithms/search/constrained.cc | 3 +- .../testsuite/25_algorithms/search_n/97828.cc | 3 +- .../25_algorithms/search_n/constexpr.cc | 3 +- .../25_algorithms/search_n/constrained.cc | 3 +- .../25_algorithms/set_difference/constexpr.cc | 3 +- .../set_difference/constrained.cc | 3 +- .../set_intersection/constexpr.cc | 3 +- .../set_intersection/constrained.cc | 3 +- .../set_symmetric_difference/constexpr.cc | 3 +- .../set_symmetric_difference/constrained.cc | 3 +- .../25_algorithms/set_union/constexpr.cc | 3 +- .../25_algorithms/set_union/constrained.cc | 3 +- .../testsuite/25_algorithms/shift_left/1.cc | 3 +- .../testsuite/25_algorithms/shift_right/1.cc | 3 +- .../25_algorithms/shuffle/constrained.cc | 3 +- .../testsuite/25_algorithms/sort/constexpr.cc | 3 +- .../25_algorithms/sort/constrained.cc | 3 +- .../25_algorithms/sort_heap/constexpr.cc | 3 +- .../stable_partition/constrained.cc | 3 +- .../25_algorithms/stable_sort/constrained.cc | 3 +- .../testsuite/25_algorithms/swap/constexpr.cc | 3 +- .../25_algorithms/swap_ranges/constexpr.cc | 3 +- .../25_algorithms/swap_ranges/constrained.cc | 3 +- .../25_algorithms/transform/constexpr.cc | 3 +- .../25_algorithms/transform/constrained.cc | 3 +- .../25_algorithms/unique/constexpr.cc | 3 +- .../25_algorithms/unique/constrained.cc | 3 +- .../25_algorithms/unique_copy/constexpr.cc | 3 +- .../25_algorithms/unique_copy/constrained.cc | 3 +- .../25_algorithms/upper_bound/constexpr.cc | 3 +- .../25_algorithms/upper_bound/constrained.cc | 3 +- .../debug/constexpr_partitioned_neg.cc | 3 +- .../debug/constexpr_partitioned_pred_neg.cc | 3 +- .../debug/constexpr_valid_range_neg.cc | 3 +- .../26_numerics/bit/bit.byteswap/byteswap.cc | 1 - .../26_numerics/bit/bit.byteswap/version.cc | 1 - .../26_numerics/complex/ext_c++23.cc | 1 - .../cmath/c99_classification_macros_c++23.cc | 1 - .../headers/cmath/constexpr_std_c++23.cc | 1 - .../headers/cmath/functions_std_c++23.cc | 1 - .../headers/cmath/nextafter_c++23.cc | 1 - .../testsuite/26_numerics/numbers/4.cc | 1 - .../inserters_other/char/volatile_ptr.cc | 2 +- .../filesystem/path/native/conv_c++23.cc | 1 - libstdc++-v3/testsuite/27_io/spanstream/1.cc | 1 - libstdc++-v3/testsuite/27_io/spanstream/2.cc | 1 - .../testsuite/27_io/spanstream/version.cc | 1 - .../atomic_float/requirements_cxx23.cc | 1 - .../headers/stdatomic.h/c_compat.cc | 1 - .../29_atomics/headers/stdatomic.h/version.cc | 1 - .../stop_token/wait_on.cc | 6 +- .../packaged_task/cons/deduction_c++23.cc | 1 - .../stop_token/stop_callback/deadlock-mt.cc | 5 +- .../stop_token/stop_callback/destroy.cc | 5 +- libstdc++-v3/testsuite/Makefile.am | 1 + libstdc++-v3/testsuite/Makefile.in | 1 + .../filesystem/path/native/conv_c++23.cc | 1 - libstdc++-v3/testsuite/lib/dg-options.exp | 7 ++ libstdc++-v3/testsuite/lib/libstdc++.exp | 107 ++++++++++++++++++ .../testsuite/libstdc++-dg/conformance.exp | 3 +- libstdc++-v3/testsuite/std/concepts/1.cc | 3 +- libstdc++-v3/testsuite/std/concepts/2.cc | 3 +- .../concepts/concepts.callable/invocable.cc | 3 +- .../concepts.callable/regular_invocable.cc | 3 +- .../concepts/concepts.callable/relation.cc | 3 +- .../concepts.callable/strictweakorder.cc | 3 +- .../concept.arithmetic/floating_point.cc | 3 +- .../concept.arithmetic/integral.cc | 3 +- .../concept.arithmetic/signed_integral.cc | 3 +- .../concept.arithmetic/unsigned_integral.cc | 3 +- .../concepts.lang/concept.assignable/1.cc | 3 +- .../concepts.lang/concept.common/1.cc | 3 +- .../concepts.lang/concept.commonref/1.cc | 3 +- .../concepts.lang/concept.constructible/1.cc | 3 +- .../concepts.lang/concept.convertible/1.cc | 3 +- .../concept.copyconstructible/1.cc | 3 +- .../concept.defaultinitializable/1.cc | 3 +- .../concept.defaultinitializable/lwg3149.cc | 3 +- .../concepts.lang/concept.derived/1.cc | 3 +- .../concepts.lang/concept.destructible/1.cc | 3 +- .../concept.moveconstructible/1.cc | 3 +- .../concepts/concepts.lang/concept.same/1.cc | 3 +- .../concepts.lang/concept.swappable/swap.cc | 3 +- .../concept.swappable/swappable.cc | 3 +- .../concept.swappable/swappable_with.cc | 3 +- .../std/concepts/concepts.object/copyable.cc | 3 +- .../std/concepts/concepts.object/movable.cc | 3 +- .../std/concepts/concepts.object/regular.cc | 3 +- .../concepts/concepts.object/semiregular.cc | 3 +- .../testsuite/std/format/arguments/args.cc | 1 - .../testsuite/std/format/arguments/lwg3810.cc | 1 - libstdc++-v3/testsuite/std/format/error.cc | 1 - .../testsuite/std/format/format_string.cc | 1 - .../testsuite/std/format/formatter/concept.cc | 1 - .../std/format/formatter/ext_float.cc | 1 - .../std/format/formatter/requirements.cc | 1 - .../testsuite/std/format/functions/107871.cc | 1 - .../testsuite/std/format/functions/format.cc | 1 - .../std/format/functions/format_c++23.cc | 5 - .../std/format/functions/format_to.cc | 1 - .../std/format/functions/format_to_n.cc | 1 - .../testsuite/std/format/functions/size.cc | 1 - .../std/format/functions/vformat_to.cc | 1 - .../testsuite/std/format/parse_ctx.cc | 1 - libstdc++-v3/testsuite/std/format/string.cc | 1 - .../testsuite/std/format/string_neg.cc | 1 - libstdc++-v3/testsuite/std/ranges/97600.cc | 3 +- .../testsuite/std/ranges/access/101782.cc | 2 +- .../testsuite/std/ranges/access/begin.cc | 3 +- .../testsuite/std/ranges/access/begin_neg.cc | 3 +- .../testsuite/std/ranges/access/cbegin.cc | 3 +- .../testsuite/std/ranges/access/cdata.cc | 3 +- .../testsuite/std/ranges/access/cend.cc | 3 +- .../testsuite/std/ranges/access/crbegin.cc | 3 +- .../testsuite/std/ranges/access/crend.cc | 3 +- .../testsuite/std/ranges/access/data.cc | 3 +- .../testsuite/std/ranges/access/empty.cc | 3 +- .../testsuite/std/ranges/access/end.cc | 3 +- .../testsuite/std/ranges/access/end_neg.cc | 3 +- .../testsuite/std/ranges/access/lwg3467.cc | 3 +- .../testsuite/std/ranges/access/p2602.cc | 1 - .../testsuite/std/ranges/access/rbegin.cc | 3 +- .../testsuite/std/ranges/access/rend.cc | 3 +- .../testsuite/std/ranges/access/size.cc | 3 +- .../testsuite/std/ranges/access/size_neg.cc | 3 +- .../testsuite/std/ranges/access/ssize.cc | 3 +- .../testsuite/std/ranges/adaptors/100479.cc | 3 +- .../testsuite/std/ranges/adaptors/100577.cc | 3 +- .../testsuite/std/ranges/adaptors/93978.cc | 3 +- .../testsuite/std/ranges/adaptors/95322.cc | 3 +- .../testsuite/std/ranges/adaptors/99433.cc | 3 +- .../std/ranges/adaptors/adjacent/1.cc | 1 - .../ranges/adaptors/adjacent_transform/1.cc | 1 - .../testsuite/std/ranges/adaptors/all.cc | 3 +- .../std/ranges/adaptors/as_const/1.cc | 1 - .../std/ranges/adaptors/as_rvalue/1.cc | 1 - .../testsuite/std/ranges/adaptors/chunk/1.cc | 1 - .../std/ranges/adaptors/chunk_by/1.cc | 1 - .../testsuite/std/ranges/adaptors/common.cc | 3 +- .../ranges/adaptors/conditionally_borrowed.cc | 3 +- .../testsuite/std/ranges/adaptors/counted.cc | 3 +- .../ranges/adaptors/detail/copyable_box.cc | 3 +- .../testsuite/std/ranges/adaptors/drop.cc | 3 +- .../std/ranges/adaptors/drop_while.cc | 3 +- .../testsuite/std/ranges/adaptors/elements.cc | 3 +- .../std/ranges/adaptors/enumerate/1.cc | 1 - .../testsuite/std/ranges/adaptors/filter.cc | 3 +- .../testsuite/std/ranges/adaptors/join.cc | 3 +- .../std/ranges/adaptors/join_with/1.cc | 1 - .../std/ranges/adaptors/lazy_split.cc | 3 +- .../std/ranges/adaptors/lazy_split_neg.cc | 3 +- .../testsuite/std/ranges/adaptors/lwg3286.cc | 3 +- .../std/ranges/adaptors/lwg3313_neg.cc | 3 +- .../std/ranges/adaptors/lwg3325_neg.cc | 3 +- .../testsuite/std/ranges/adaptors/lwg3406.cc | 3 +- .../testsuite/std/ranges/adaptors/lwg3715.cc | 1 - .../testsuite/std/ranges/adaptors/p1739.cc | 1 - .../testsuite/std/ranges/adaptors/p2281.cc | 3 +- .../testsuite/std/ranges/adaptors/p2770r0.cc | 1 - .../testsuite/std/ranges/adaptors/reverse.cc | 3 +- .../testsuite/std/ranges/adaptors/sizeof.cc | 3 +- .../testsuite/std/ranges/adaptors/slide/1.cc | 1 - .../testsuite/std/ranges/adaptors/split.cc | 3 +- .../testsuite/std/ranges/adaptors/stride/1.cc | 1 - .../testsuite/std/ranges/adaptors/take.cc | 3 +- .../std/ranges/adaptors/take_while.cc | 3 +- .../std/ranges/adaptors/transform.cc | 3 +- .../std/ranges/cartesian_product/1.cc | 1 - .../testsuite/std/ranges/empty_view.cc | 3 +- .../std/ranges/headers/ranges/synopsis.cc | 3 +- .../testsuite/std/ranges/iota/93267.cc | 4 +- .../testsuite/std/ranges/iota/96042.cc | 4 +- .../std/ranges/iota/difference_type.cc | 3 +- .../testsuite/std/ranges/iota/iota_view.cc | 3 +- .../testsuite/std/ranges/iota/iterator.cc | 3 +- .../testsuite/std/ranges/iota/lwg3292_neg.cc | 3 +- .../std/ranges/iota/max_size_type.cc | 3 +- .../testsuite/std/ranges/iota/size.cc | 2 +- .../testsuite/std/ranges/istream_view.cc | 3 +- libstdc++-v3/testsuite/std/ranges/p2259.cc | 3 +- libstdc++-v3/testsuite/std/ranges/p2367.cc | 3 +- libstdc++-v3/testsuite/std/ranges/range.cc | 3 +- .../std/ranges/range_adaptor_closure.cc | 1 - .../testsuite/std/ranges/refinements.cc | 3 +- libstdc++-v3/testsuite/std/ranges/repeat/1.cc | 1 - .../testsuite/std/ranges/safe_range.cc | 3 +- .../testsuite/std/ranges/safe_range_types.cc | 3 +- .../testsuite/std/ranges/single_view.cc | 3 +- libstdc++-v3/testsuite/std/ranges/sized.cc | 3 +- .../testsuite/std/ranges/subrange/96042.cc | 4 +- .../testsuite/std/ranges/subrange/97512.cc | 3 +- .../std/ranges/subrange/lwg3282_neg.cc | 7 +- .../testsuite/std/ranges/subrange/lwg3286.cc | 3 +- .../testsuite/std/ranges/subrange/lwg3433.cc | 3 +- .../testsuite/std/ranges/subrange/sizeof.cc | 3 +- .../std/ranges/subrange/tuple_like.cc | 3 +- .../testsuite/std/ranges/version_c++23.cc | 1 - libstdc++-v3/testsuite/std/ranges/view.cc | 3 +- libstdc++-v3/testsuite/std/ranges/zip/1.cc | 1 - .../testsuite/std/ranges/zip_transform/1.cc | 1 - .../testsuite/std/time/clock/file/io.cc | 1 - .../testsuite/std/time/clock/file/members.cc | 3 +- .../testsuite/std/time/clock/file/overview.cc | 3 +- .../testsuite/std/time/clock/gps/1.cc | 1 - .../testsuite/std/time/clock/gps/io.cc | 1 - .../testsuite/std/time/clock/local/io.cc | 1 - .../testsuite/std/time/clock/system/io.cc | 1 - .../testsuite/std/time/clock/tai/1.cc | 1 - .../testsuite/std/time/clock/tai/io.cc | 1 - .../testsuite/std/time/clock/utc/1.cc | 1 - .../testsuite/std/time/clock/utc/io.cc | 1 - .../std/time/clock/utc/leap_second_info.cc | 1 - libstdc++-v3/testsuite/std/time/day/1.cc | 3 +- libstdc++-v3/testsuite/std/time/day/io.cc | 1 - libstdc++-v3/testsuite/std/time/exceptions.cc | 1 - libstdc++-v3/testsuite/std/time/format.cc | 1 - libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc | 3 +- .../testsuite/std/time/hh_mm_ss/109772.cc | 1 - .../testsuite/std/time/hh_mm_ss/io.cc | 1 - libstdc++-v3/testsuite/std/time/is_am/1.cc | 3 +- libstdc++-v3/testsuite/std/time/is_pm/1.cc | 3 +- libstdc++-v3/testsuite/std/time/make12/1.cc | 3 +- libstdc++-v3/testsuite/std/time/make24/1.cc | 3 +- libstdc++-v3/testsuite/std/time/month/1.cc | 3 +- libstdc++-v3/testsuite/std/time/month/io.cc | 1 - .../testsuite/std/time/month_day/1.cc | 3 +- .../testsuite/std/time/month_day/io.cc | 1 - .../testsuite/std/time/month_day_last/1.cc | 3 +- .../testsuite/std/time/month_day_last/io.cc | 1 - .../testsuite/std/time/month_weekday/1.cc | 3 +- .../testsuite/std/time/month_weekday/io.cc | 1 - .../std/time/month_weekday_last/1.cc | 3 +- .../std/time/month_weekday_last/io.cc | 1 - libstdc++-v3/testsuite/std/time/parse.cc | 1 - libstdc++-v3/testsuite/std/time/syn_c++20.cc | 3 +- .../std/time/time_zone/get_info_local.cc | 1 - .../std/time/time_zone/get_info_sys.cc | 1 - .../std/time/time_zone/requirements.cc | 1 - .../testsuite/std/time/traits/is_clock.cc | 3 +- libstdc++-v3/testsuite/std/time/tzdb/1.cc | 1 - .../testsuite/std/time/tzdb/leap_seconds.cc | 1 - .../testsuite/std/time/tzdb_list/1.cc | 1 - .../std/time/tzdb_list/requirements.cc | 1 - libstdc++-v3/testsuite/std/time/weekday/1.cc | 3 +- libstdc++-v3/testsuite/std/time/weekday/io.cc | 1 - .../testsuite/std/time/weekday_indexed/1.cc | 3 +- .../testsuite/std/time/weekday_indexed/io.cc | 1 - .../testsuite/std/time/weekday_last/1.cc | 3 +- .../testsuite/std/time/weekday_last/io.cc | 1 - libstdc++-v3/testsuite/std/time/year/1.cc | 3 +- libstdc++-v3/testsuite/std/time/year/2.cc | 3 +- libstdc++-v3/testsuite/std/time/year/io.cc | 1 - .../testsuite/std/time/year_month/1.cc | 3 +- .../testsuite/std/time/year_month/2.cc | 3 +- .../testsuite/std/time/year_month/io.cc | 1 - .../testsuite/std/time/year_month_day/1.cc | 3 +- .../testsuite/std/time/year_month_day/2.cc | 3 +- .../testsuite/std/time/year_month_day/3.cc | 3 +- .../testsuite/std/time/year_month_day/4.cc | 3 +- .../testsuite/std/time/year_month_day/io.cc | 1 - .../std/time/year_month_day_last/1.cc | 3 +- .../std/time/year_month_day_last/2.cc | 3 +- .../std/time/year_month_day_last/io.cc | 1 - .../std/time/year_month_weekday/1.cc | 3 +- .../std/time/year_month_weekday/2.cc | 3 +- .../std/time/year_month_weekday/3.cc | 3 +- .../std/time/year_month_weekday/io.cc | 1 - .../std/time/year_month_weekday_last/1.cc | 3 +- .../std/time/year_month_weekday_last/2.cc | 3 +- .../std/time/year_month_weekday_last/io.cc | 1 - .../testsuite/std/time/zoned_time/1.cc | 1 - .../testsuite/std/time/zoned_time/custom.cc | 1 - .../std/time/zoned_time/deduction.cc | 1 - .../testsuite/std/time/zoned_time/io.cc | 1 - .../testsuite/std/time/zoned_time/req_neg.cc | 1 - .../std/time/zoned_time/requirements.cc | 1 - .../testsuite/std/time/zoned_traits.cc | 1 - .../07_conf_hyperg/compile_cxx17.cc | 2 +- .../17_hyperg/compile_cxx17.cc | 2 +- 585 files changed, 622 insertions(+), 1029 deletions(-) delete mode 100644 libstdc++-v3/testsuite/std/format/functions/format_c++23.cc
Comments
On Mon, 11 Sept 2023 at 17:37, Jonathan Wakely via Libstdc++ <libstdc++@gcc.gnu.org> wrote: > > This patch series replicates the behaviour of the g++ testsuite, so that > libstdc++ tests can easily be run for multiple different -std options in > a single testsuite run. As described in the updated docs, the -std > options to use for every test can be overridden by setting v3_std_list > in ~/.dejagnurc or $DEJAGNU, or setting $GLIBCXX_TESTSUITE_STDS in the > environment. If not overridden, the default is just to run with > -std=gnu++17 (so that we don't increase the time taken for a full > testsuite run). > > Tests that require a newer standard than C++17 will default to that > newer standard and C++26, so e.g. std::format tests will be run with > both -std=gnu++20 and -std=gnu++26. This does increase the number of > tests, but only for the subset of tests for C++20/23/26 features. If > this is too costly for testers, we can change that (this might be > needed, because the C++20 tests for std::ranges and std::format are > particularly slow to compile). > > Because a correct default will be chosen for tests that require > something newer than C++17, we no longer need dg-options "-std=gnu++20" > or similar in any tests. Removing the explicit -std option allows the > test to be run for later standards via the v3_std_list settings, so that > we can verify that C++20 features still work in C++23 and C++26, for > example. This change already found some tests which failed when run > with a later standard (see r14-3771-gf12e26f3496275). > > Patches 2-13 in the series remove those unnecessary dg-options from > about half the relevant tests, but there are more than 500 others that > still need adjusting. > > We can remove files like testsuite/std/format/functions/format_c++23.cc > which only exist to duplicate existing tests with a different -std > option. We can remove that file now, and rely on format.cc being run > with multiple -std options by libstdc++ maintainers. > > It might also be useful to add a 'make check-quick' target which runs a > small subset of smoke tests with every standard version in v3_std_list. > This would be a suitable target for CI bots and for packagers who want > to verify that a build of GCC is functional, without running the entire > libstdc++ testsuite. There's a problem with this change. Some of our tests fail if they're run more than once. We have some static data files which are copied into the test directory by libstdc++_init at the start of the run. But some tests modify those files, so if the same test gets run multiple times, the file is no longer in the expected state after the first test. This only shows up when overriding the list of -std modes to include more than one option. The tests pass on the first run, and fail for subsequent ones: Running /home/test/src/gcc/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp ... PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++98 (test for excess errors) PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++98 execution test PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++11 (test for excess errors) FAIL: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++11 execution test PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++14 (test for excess errors) FAIL: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++14 execution test PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++17 (test for excess errors) FAIL: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++17 execution test PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++20 (test for excess errors) FAIL: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++20 execution test PASS: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++23 (test for excess errors) FAIL: 27_io/basic_filebuf/seekoff/char/1-io.cc -std=gnu++23 execution test We either need to copy the data files again after each test, or rewrite the tests to be idempotent.
On Mon, 11 Sept 2023 at 17:37, Jonathan Wakely via Libstdc++ <libstdc++@gcc.gnu.org> wrote: > > This patch series replicates the behaviour of the g++ testsuite, so that > libstdc++ tests can easily be run for multiple different -std options in > a single testsuite run. As described in the updated docs, the -std > options to use for every test can be overridden by setting v3_std_list > in ~/.dejagnurc or $DEJAGNU, or setting $GLIBCXX_TESTSUITE_STDS in the > environment. If not overridden, the default is just to run with > -std=gnu++17 (so that we don't increase the time taken for a full > testsuite run). > > Tests that require a newer standard than C++17 will default to that > newer standard and C++26, so e.g. std::format tests will be run with > both -std=gnu++20 and -std=gnu++26. This does increase the number of > tests, but only for the subset of tests for C++20/23/26 features. If > this is too costly for testers, we can change that (this might be > needed, because the C++20 tests for std::ranges and std::format are > particularly slow to compile). > > Because a correct default will be chosen for tests that require > something newer than C++17, we no longer need dg-options "-std=gnu++20" > or similar in any tests. Removing the explicit -std option allows the > test to be run for later standards via the v3_std_list settings, so that > we can verify that C++20 features still work in C++23 and C++26, for > example. This change already found some tests which failed when run > with a later standard (see r14-3771-gf12e26f3496275). > > Patches 2-13 in the series remove those unnecessary dg-options from > about half the relevant tests, but there are more than 500 others that > still need adjusting. > > We can remove files like testsuite/std/format/functions/format_c++23.cc > which only exist to duplicate existing tests with a different -std > option. We can remove that file now, and rely on format.cc being run > with multiple -std options by libstdc++ maintainers. > > It might also be useful to add a 'make check-quick' target which runs a > small subset of smoke tests with every standard version in v3_std_list. > This would be a suitable target for CI bots and for packagers who want > to verify that a build of GCC is functional, without running the entire > libstdc++ testsuite. This has been pushed to trunk now.