From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout-p-103.mailbox.org (mout-p-103.mailbox.org [80.241.56.161]) by sourceware.org (Postfix) with ESMTPS id A8E62385E02B; Fri, 30 Sep 2022 16:46:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A8E62385E02B Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=aarsen.me Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=aarsen.me Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4MfGMq4kmLz9sW3; Fri, 30 Sep 2022 18:46:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aarsen.me; s=MBO0001; t=1664556391; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=drRLhkuEzwZmjesLQ7CrWGabQAx4ZtHwLo0tifPonUQ=; b=V+B+1lHJKnYKFM+RGKDca4wasNTmXOl3mmODRX6VN7VM5ufgUcwT1xydtRl/9aE7skkKD/ R82YoGzjUvaVkRNJMZN/0UyphLB85znkkAsABONeTn4v8jcqiqsYqdzpy/xB5QJ3ExbBM9 lHdk2MCk+gDddEHkSIrQNdCH9QPqu3k1nMmjWeG7faozHyn84Dz5jC2oHpmj4UbvJ084pA IzuecFl8nLtvZx6nCxJQnJ8jNXgTqngv7QX5eRgrisoC1ZVyqE8QBWvxciq/OYc6uEFtt6 Nz6EPf512XRplZ1pSb4sQ9z5fhn0MhRLPuvV1KiUAfrkmTruzn3p2K+XGma9nw== From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, =?UTF-8?q?Arsen=20Arsenovi=C4=87?= , Jonathan Wakely Subject: [PATCH 07/10] libstdc++: Make some tests work on freestanding [PR103626] Date: Fri, 30 Sep 2022 18:45:53 +0200 Message-Id: <20220930164556.1198044-8-arsen@aarsen.me> In-Reply-To: <20220930164556.1198044-1-arsen@aarsen.me> References: <20220930164556.1198044-1-arsen@aarsen.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_INFOUSMEBIZ,KAM_SHORT,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP,URI_HEX autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding Co-authored-by: Jonathan Wakely libstdc++-v3/ChangeLog: PR libstdc++/103626 * testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]: Do not include C headers that aren't valid for freestanding. * testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]: Do not test tag types that aren't defined for freestanding. * testsuite/18_support/headers/cstdlib/functions_std.cc: Do not check for std::getenv and std::system for freestanding. * testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]: Do not test hosted parts of the standard library. * testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]: Likewise. * testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise. * testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise. * testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise. Signed-off-by: Arsen Arsenović --- .../17_intro/headers/c++1998/stdc++.cc | 2 + .../17_intro/tag_type_explicit_ctor.cc | 32 +++++++---- .../17_intro/using_namespace_std_exp_neg.cc | 53 ++++++++++--------- .../17_intro/using_namespace_std_tr1_neg.cc | 53 ++++++++++--------- .../headers/cstdlib/functions_std.cc | 2 + .../allocator_traits/members/rebind_alloc.cc | 2 + .../requirements/explicit_instantiation.cc | 2 + .../20_util/headers/bitset/synopsis.cc | 2 + .../requirements/typedefs_neg.cc | 4 +- .../pointer_traits/requirements/typedefs.cc | 2 + .../testsuite/20_util/tuple/cons/deduction.cc | 2 + .../testsuite/25_algorithms/move/93872.cc | 1 + .../testsuite/std/ranges/adaptors/100577.cc | 11 +++- 13 files changed, 104 insertions(+), 64 deletions(-) diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc index 4776c18e1ed..e362dfee329 100644 --- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc +++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc @@ -24,6 +24,7 @@ #include +#if __STDC_HOSTED__ // "C" compatibility headers #include #include @@ -47,3 +48,4 @@ #ifdef _GLIBCXX_HAVE_WCTYPE_H #include #endif +#endif diff --git a/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc b/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc index 262fc9a04d1..410142d3974 100644 --- a/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc +++ b/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc @@ -20,40 +20,50 @@ #include #include #include -#include + +#if __STDC_HOSTED__ +# include +#endif void f1(std::nothrow_t); void f2(std::piecewise_construct_t); void f3(std::allocator_arg_t); +#if __STDC_HOSTED__ void f4(std::defer_lock_t); void f5(std::try_to_lock_t); void f6(std::adopt_lock_t); - +#endif int main() { std::nothrow_t v1; std::piecewise_construct_t v2; std::allocator_arg_t v3; +#if __STDC_HOSTED__ std::defer_lock_t v4; std::try_to_lock_t v5; std::try_to_lock_t v6; +#endif std::nothrow_t v7 = {}; // { dg-error "explicit" } std::piecewise_construct_t v8 = {}; // { dg-error "explicit" } std::allocator_arg_t v9 = {}; // { dg-error "explicit" } - std::defer_lock_t v10 = {}; // { dg-error "explicit" } - std::try_to_lock_t v11 = {}; // { dg-error "explicit" } - std::try_to_lock_t v12 = {}; // { dg-error "explicit" } +#if __STDC_HOSTED__ + std::defer_lock_t v10 = {}; // { dg-error "explicit" "" { target hosted } } + std::try_to_lock_t v11 = {}; // { dg-error "explicit" "" { target hosted } } + std::try_to_lock_t v12 = {}; // { dg-error "explicit" "" { target hosted } } +#endif f1(std::nothrow_t{}); f2(std::piecewise_construct_t{}); f3(std::allocator_arg_t{}); - f4(std::defer_lock_t{}); - f5(std::try_to_lock_t{}); - f6(std::adopt_lock_t{}); f1({}); // { dg-error "explicit" } f2({}); // { dg-error "explicit" } f3({}); // { dg-error "explicit" } - f4({}); // { dg-error "explicit" } - f5({}); // { dg-error "explicit" } - f6({}); // { dg-error "explicit" } +#if __STDC_HOSTED__ + f4(std::defer_lock_t{}); + f5(std::try_to_lock_t{}); + f6(std::adopt_lock_t{}); + f4({}); // { dg-error "explicit" "" { target hosted } } + f5({}); // { dg-error "explicit" "" { target hosted } } + f6({}); // { dg-error "explicit" "" { target hosted } } +#endif } diff --git a/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc b/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc index cdec24e9f7f..9fadafdbccf 100644 --- a/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc +++ b/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc @@ -20,42 +20,45 @@ #include #include #include -#include -#include #include -#include #include -#include -#include -#include -#include -#include #include #include -#include -#include -#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include -#include -#include #include -#include -#include + +#if __STDC_HOSTED__ +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif namespace gnu { diff --git a/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc b/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc index 31c2589da4f..4d08cc5bc91 100644 --- a/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc +++ b/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc @@ -23,42 +23,45 @@ #include #include #include -#include -#include #include -#include #include -#include -#include -#include -#include -#include #include #include -#include -#include -#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include -#include -#include #include -#include -#include + +#if __STDC_HOSTED__ +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif namespace gnu { diff --git a/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc b/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc index e7738899ea0..af1ed6a8652 100644 --- a/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc +++ b/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc @@ -25,6 +25,8 @@ namespace gnu using std::atexit; using std::exit; +#if __STDC_HOSTED__ using std::getenv; using std::system; +#endif } diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc index 32caf53c988..ca2a8044665 100644 --- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc +++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc @@ -24,6 +24,7 @@ using std::is_same; template using Rebind = typename std::allocator_traits::template rebind_alloc; +#if __STDC_HOSTED__ template struct HasRebind { using value_type = T; @@ -33,6 +34,7 @@ template static_assert(is_same, long>, std::allocator>::value, "nested alias template is used"); +#endif template struct NoRebind0 { diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc index 42a2091cf47..8f7c191e94a 100644 --- a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc +++ b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc @@ -36,6 +36,8 @@ template namespace std { +#if __STDC_HOSTED__ template struct allocator_traits>; +#endif template struct allocator_traits>; } diff --git a/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc b/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc index ed5604b6b22..094f0f268b3 100644 --- a/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc +++ b/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc @@ -49,6 +49,7 @@ namespace std { CONSTEXPR bitset operator^(const bitset&, const bitset&) NOTHROW; +#if __STDC_HOSTED__ template basic_istream& operator>>(basic_istream& is, bitset& x); @@ -56,4 +57,5 @@ namespace std { template basic_ostream& operator<<(basic_ostream& os, const bitset& x); +#endif } diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc index 9eebbc400b0..ff98cc42ef7 100644 --- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc +++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc @@ -20,9 +20,9 @@ // . #include -#include enum test_enum { first_selection }; +struct pod_class { }; void test01() { @@ -31,7 +31,7 @@ void test01() // Negative tests. typedef make_unsigned::type test1_type; - typedef make_unsigned<__gnu_test::pod_uint>::type test2_type; + typedef make_unsigned::type test2_type; typedef make_unsigned::type test3_type; diff --git a/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc index 93c8a369c25..a88372c4d3a 100644 --- a/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc +++ b/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc @@ -37,8 +37,10 @@ int main() { test01(); test01(); +#if __STDC_HOSTED__ test01>(); test01>(); +#endif test01>(); test01>(); } diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc index 8b9393dd334..c4b5a5c1eaf 100644 --- a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc +++ b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc @@ -145,6 +145,7 @@ test04() void test05() { +#if __STDC_HOSTED__ std::allocator a; std::tuple x{std::allocator_arg, a, 1}; check_type>(x); @@ -161,4 +162,5 @@ test05() check_type(x5); std::tuple x6{std::allocator_arg, a, std::move(x)}; check_type(x6); +#endif } diff --git a/libstdc++-v3/testsuite/25_algorithms/move/93872.cc b/libstdc++-v3/testsuite/25_algorithms/move/93872.cc index 4b0c8105171..8496a221063 100644 --- a/libstdc++-v3/testsuite/25_algorithms/move/93872.cc +++ b/libstdc++-v3/testsuite/25_algorithms/move/93872.cc @@ -18,6 +18,7 @@ // { dg-options "-std=gnu++2a" } // { dg-do compile { target c++2a } } +#include #include #include diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc index 97401dae39c..c900553743b 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc @@ -22,6 +22,9 @@ #include #include +#if __STDC_HOSTED__ +#include +#endif namespace ranges = std::ranges; namespace views = std::ranges::views; @@ -38,9 +41,11 @@ test01() static_assert(__adaptor_has_simple_extra_args); static_assert(__adaptor_has_simple_extra_args); static_assert(__adaptor_has_simple_extra_args); - static_assert(__adaptor_has_simple_extra_args); static_assert(__adaptor_has_simple_extra_args); +#if __STDC_HOSTED__ + static_assert(__adaptor_has_simple_extra_args); static_assert(!__adaptor_has_simple_extra_args); +#endif using views::__adaptor::__closure_has_simple_call_op; __closure_has_simple_call_op auto a00 = views::all; @@ -60,6 +65,7 @@ test01() __closure_has_simple_call_op auto b = (a00 | a01) | (a02 | a03) | (a04 | a05 | a06) | (a07 | a08 | a09 | a10) | a11; +#if __STDC_HOSTED__ // Verify views::lazy_split(non_view_range) is an exception. extern std::string s; auto a12 = views::lazy_split(s); @@ -72,6 +78,7 @@ test01() static_assert(!__closure_has_simple_call_op); static_assert(!__closure_has_simple_call_op); static_assert(!__closure_has_simple_call_op); +#endif } void @@ -129,6 +136,7 @@ test03() void test04() { +#if __STDC_HOSTED__ // Non-trivially-copyable extra arguments make a closure not simple. using F = std::function; static_assert(!std::is_trivially_copyable_v); @@ -137,6 +145,7 @@ test04() static_assert(!__closure_has_simple_call_op()))>); static_assert(!__closure_has_simple_call_op()))>); static_assert(!__closure_has_simple_call_op()))>); +#endif } // { dg-prune-output "in requirements" } -- 2.37.3