From: Jonathan Wakely Date: Fri, 26 Jul 2019 13:30:42 +0000 (+0100) Subject: Define __cpp_lib_endian feature test macro X-Git-Tag: misc/cutover-git~3782 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5378f9b60d37d9839aea8f9ef50ad9c5a0f738c;p=thirdparty%2Fgcc.git Define __cpp_lib_endian feature test macro This macro was added as part of moving std::endian from to . * include/std/bit (__cpp_lib_endian): Define. * include/std/version (__cpp_lib_endian): Define. * testsuite/26_numerics/endian/2.cc: New. * testsuite/26_numerics/endian/3.cc: New. * testsuite/26_numerics/endian/4.cc: New. From-SVN: r273828 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c9c338fd47b0..98807d86c1e8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2019-07-26 Jonathan Wakely + + * include/std/bit (__cpp_lib_endian): Define. + * include/std/version (__cpp_lib_endian): Define. + * testsuite/26_numerics/endian/2.cc: New. + * testsuite/26_numerics/endian/3.cc: New. + * testsuite/26_numerics/endian/4.cc: New. + 2019-07-26 François Dumont * testsuite/util/testsuite_iterators.h diff --git a/libstdc++-v3/include/std/bit b/libstdc++-v3/include/std/bit index d57433c093ae..f01fcd621e56 100644 --- a/libstdc++-v3/include/std/bit +++ b/libstdc++-v3/include/std/bit @@ -315,6 +315,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION log2p1(_Tp __x) noexcept { return std::__log2p1(__x); } +#define __cpp_lib_endian 201907L + /// Byte order enum class endian { diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version index d134f7fde01d..6940b4499e69 100644 --- a/libstdc++-v3/include/std/version +++ b/libstdc++-v3/include/std/version @@ -156,6 +156,7 @@ #if __cpp_impl_destroying_delete # define __cpp_lib_destroying_delete 201806L #endif +#define __cpp_lib_endian 201907L #define __cpp_lib_erase_if 201900L #define __cpp_lib_interpolate 201902L #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED diff --git a/libstdc++-v3/testsuite/26_numerics/endian/2.cc b/libstdc++-v3/testsuite/26_numerics/endian/2.cc new file mode 100644 index 000000000000..474bae479e18 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/endian/2.cc @@ -0,0 +1,27 @@ +// Copyright (C) 2019 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++2a" } +// { dg-do compile { target c++2a } } + +#include + +#ifndef __cpp_lib_endian +# error "Feature-test macro for endian missing in " +#elif __cpp_lib_endian != 201907L +# error "Feature-test macro for endian has wrong value in " +#endif diff --git a/libstdc++-v3/testsuite/26_numerics/endian/3.cc b/libstdc++-v3/testsuite/26_numerics/endian/3.cc new file mode 100644 index 000000000000..a7af53d05251 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/endian/3.cc @@ -0,0 +1,27 @@ +// Copyright (C) 2019 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-options "-std=gnu++2a" } +// { dg-do compile { target c++2a } } + +#include + +#ifndef __cpp_lib_endian +# error "Feature-test macro for endian missing in " +#elif __cpp_lib_endian != 201907L +# error "Feature-test macro for endian has wrong value in " +#endif diff --git a/libstdc++-v3/testsuite/26_numerics/endian/4.cc b/libstdc++-v3/testsuite/26_numerics/endian/4.cc new file mode 100644 index 000000000000..93bed38a6311 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/endian/4.cc @@ -0,0 +1,25 @@ +// Copyright (C) 2019 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// { dg-do compile { target c++17_down } } + +#include +#include + +#ifdef __cpp_lib_endian +# error "Feature-test macro for endian defined before C++20" +#endif