]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Define effective-target for net::ip features [PR 100351]
authorJonathan Wakely <jwakely@redhat.com>
Fri, 30 Apr 2021 10:45:07 +0000 (11:45 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 30 Apr 2021 13:25:08 +0000 (14:25 +0100)
Define a new effective-target keyword so that tests for the Networking
TS <experimental/internet> header can be skipped on targets where none
of it can be usefully defined.

libstdc++-v3/ChangeLog:

PR libstdc++/100180
PR libstdc++/100286
PR libstdc++/100351
* testsuite/experimental/net/internet/address/v4/comparisons.cc:
Use new effective-target keyword.
* testsuite/experimental/net/internet/address/v4/cons.cc:
Likewise.
* testsuite/experimental/net/internet/address/v4/creation.cc:
Likewise.
* testsuite/experimental/net/internet/address/v4/members.cc:
Likewise.
* testsuite/experimental/net/internet/address/v6/members.cc:
Likewise.
* testsuite/experimental/net/internet/resolver/base.cc:
Likewise.
* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
Likewise.
* testsuite/experimental/net/internet/resolver/ops/reverse.cc:
Likewise.
* testsuite/experimental/net/internet/socket/opt.cc:
Likewise.
* testsuite/experimental/net/internet/tcp.cc:
Likewise.
* testsuite/experimental/net/internet/udp.cc:
Likewise.
* testsuite/lib/libstdc++.exp (check_effective_target_net_ts_ip):
New proc to check net_ts_ip et.

12 files changed:
libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc
libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc
libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc
libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc
libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc
libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc
libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc
libstdc++-v3/testsuite/experimental/net/internet/socket/opt.cc
libstdc++-v3/testsuite/experimental/net/internet/tcp.cc
libstdc++-v3/testsuite/experimental/net/internet/udp.cc
libstdc++-v3/testsuite/lib/libstdc++.exp

index 82cc966b00db307720b4e8fca68551c5a74d6100..88c56a8eaee3e01c8c1f3d9b7403dc16d9929a5e 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
@@ -26,8 +27,6 @@ using std::experimental::net::ip::address_v4;
 void
 test01()
 {
-  bool test __attribute__((unused)) = false;
-
   address_v4 addrs[] = {
     address_v4::any(), address_v4::loopback(), address_v4::broadcast(),
     address_v4{0x11001100}, address_v4{0xEFEFEFEF}
index 28bf3bd989c70d892a55e933ac972fc4a0d67eb2..848839f7c61f25441a108ef5b193e38fa012f013 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
index 81c087faaf2ffbca3da26746afa291eef9fabf61..bf233065c7dcb86c1294f70897dbc1bedbbffb3f 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
@@ -27,8 +28,6 @@ using net::ip::address_v4;
 void
 test01()
 {
-  bool test __attribute__((unused)) = false;
-
   auto a0 = make_address_v4( address_v4::bytes_type{} );
   VERIFY( a0.to_uint() == 0 );
   VERIFY( a0.to_bytes() == address_v4::bytes_type{} );
@@ -42,8 +41,6 @@ test01()
 void
 test02()
 {
-  bool test __attribute__((unused)) = false;
-
   auto a0 = net::ip::make_address_v4(0u);
   VERIFY( a0.to_uint() == 0 );
   VERIFY( a0.to_bytes() == address_v4::bytes_type{} );
@@ -57,8 +54,6 @@ test02()
 void
 test03()
 {
-  bool test __attribute__((unused)) = false;
-
   auto a1 = net::ip::make_address_v4("127.0.0.1");
   VERIFY( a1.is_loopback() );
   auto a2 = net::ip::make_address_v4(std::string{"127.0.0.2"});
index f644c0847ab3128c6a3f2b946421b5f44937b54c..ac66f864ca5a66900018decb2821dae9805480cc 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
index b77d6a29e3d6c9b70c5da2a0daa409fa1ecfad0d..3d9d653f45723c0004ae6c339eeeb6116caa3664 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
index 23af4464b7230da789a1fc31bb216b869942588a..4c36b03ebcc6b1943359d78a3e3effa29ea8f654 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
index 321f96fb37fbbfdc8b48c9bf1486905444cbf788..ca8f0899ccd258e05dc71975dff3afb5c3b9338a 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
@@ -26,8 +27,6 @@ using namespace std::experimental::net;
 void
 test01()
 {
-  bool test __attribute__((unused)) = false;
-
   std::error_code ec;
   io_context ctx;
   ip::tcp::resolver resolv(ctx);
@@ -44,8 +43,6 @@ test01()
 void
 test02()
 {
-  bool test __attribute__((unused)) = false;
-
   std::error_code ec;
   io_context ctx;
   ip::tcp::resolver resolv(ctx);
@@ -83,8 +80,6 @@ test02()
 void
 test03()
 {
-  bool test __attribute__((unused)) = false;
-
   std::error_code ec;
   io_context ctx;
   ip::tcp::resolver resolv(ctx);
index fce04d4fe2f16cc2a386fddfcc2423855579f5f1..b50b2ee36a4524c23bb492c25249678801831c7a 100644 (file)
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 // { dg-add-options net_ts }
 
 #include <experimental/internet>
@@ -26,8 +27,6 @@ using namespace std::experimental::net;
 void
 test01()
 {
-  bool test __attribute__((unused)) = false;
-
   std::error_code ec;
   io_context ctx;
   ip::tcp::resolver resolv(ctx);
index cfbc00f9da8e50a461768915dda53dbe89332d3a..a4efeb4e233e3dfa4c534cf882a8f0388cd59a2e 100644 (file)
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 
 #include <experimental/internet>
 #include <testsuite_common_types.h>
index 87d042377a087895cc12718574eb1f10a5585c8d..d583f22f5084bcdc786cbe37e07d50b8ed54799e 100644 (file)
@@ -1,9 +1,9 @@
 // { dg-do compile { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 
 #include <experimental/internet>
 #include <type_traits>
 
-#if __has_include(<netinet/in.h>)
 using namespace std;
 using std::experimental::net::ip::tcp;
 using std::experimental::net::ip::basic_endpoint;
@@ -42,4 +42,3 @@ test01()
   static_assert( tcp::v4().protocol() == IPPROTO_TCP, "" );
   static_assert( tcp::v6().protocol() == IPPROTO_TCP, "" );
 }
-#endif
index d5f42c7575e433033dcba3c40f4ee7507fa80b27..300f735d8342c2921f35e14fc121d85aa9d600d1 100644 (file)
@@ -1,9 +1,9 @@
 // { dg-do compile { target c++14 } }
+// { dg-require-effective-target net_ts_ip }
 
 #include <experimental/internet>
 #include <type_traits>
 
-#if __has_include(<netinet/in.h>)
 using namespace std;
 using std::experimental::net::ip::udp;
 using std::experimental::net::ip::basic_endpoint;
@@ -40,4 +40,3 @@ test01()
   static_assert( udp::v4().protocol() == IPPROTO_UDP, "" );
   static_assert( udp::v6().protocol() == IPPROTO_UDP, "" );
 }
-#endif
index 7f9580db8eda2bfd6e8e7fb0b87059cfe864ab70..73b202ce21269d1c25e3717510e5863305ef035a 100644 (file)
@@ -1331,6 +1331,14 @@ proc check_effective_target_ieee-floats { } {
     }]
 }
 
+# Return 1 if Networking TS net::ip features are available.
+proc check_effective_target_net_ts_ip { } {
+    return [check_v3_target_prop_cached et_net_ts_ip {
+       set cond "__has_include(<netinet/in.h>)"
+       return [v3_check_preprocessor_condition net_ts_ip $cond]
+    }]
+}
+
 set additional_prunes ""
 
 if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \