diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-07-26 14:30:42 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-07-26 14:30:42 +0100 |
commit | a5378f9b60d37d9839aea8f9ef50ad9c5a0f738c (patch) | |
tree | cc0475412df1331bf9f4157f6256e7caf113a2cb | |
parent | 3644cadf6a9d5a5cd8e83b0123316cf184fa4e3e (diff) | |
download | gcc-a5378f9b60d37d9839aea8f9ef50ad9c5a0f738c.zip gcc-a5378f9b60d37d9839aea8f9ef50ad9c5a0f738c.tar.gz gcc-a5378f9b60d37d9839aea8f9ef50ad9c5a0f738c.tar.bz2 |
Define __cpp_lib_endian feature test macro
This macro was added as part of moving std::endian from <type_traits> to
<bit>.
* 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
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/bit | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/std/version | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/26_numerics/endian/2.cc | 27 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/26_numerics/endian/3.cc | 27 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/26_numerics/endian/4.cc | 25 |
6 files changed, 90 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c9c338f..98807d8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2019-07-26 Jonathan Wakely <jwakely@redhat.com> + + * 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 <fdumont@gcc.gnu.org> * testsuite/util/testsuite_iterators.h diff --git a/libstdc++-v3/include/std/bit b/libstdc++-v3/include/std/bit index d57433c..f01fcd6 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 d134f7f..6940b44 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 0000000..474bae4 --- /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 +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++2a" } +// { dg-do compile { target c++2a } } + +#include <bit> + +#ifndef __cpp_lib_endian +# error "Feature-test macro for endian missing in <bit>" +#elif __cpp_lib_endian != 201907L +# error "Feature-test macro for endian has wrong value in <bit>" +#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 0000000..a7af53d --- /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 +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++2a" } +// { dg-do compile { target c++2a } } + +#include <version> + +#ifndef __cpp_lib_endian +# error "Feature-test macro for endian missing in <version>" +#elif __cpp_lib_endian != 201907L +# error "Feature-test macro for endian has wrong value in <version>" +#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 0000000..93bed38 --- /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 +// <http://www.gnu.org/licenses/>. + +// { dg-do compile { target c++17_down } } + +#include <bit> +#include <version> + +#ifdef __cpp_lib_endian +# error "Feature-test macro for endian defined before C++20" +#endif |