From eb846114ed7c49e426fccb826a3f81b7abbc84be Mon Sep 17 00:00:00 2001 From: Jonathan Wakely <jwakely@redhat.com> Date: Mon, 8 Jan 2024 11:46:56 +0000 Subject: [PATCH] libstdc++: Remove std::__unicode::__null_sentinel The name __null_sentinel is defined as a macro by newlib, so we can't use it as an identifier. That variable is not actually used by libstdc++, it was added because P2728R6 proposes std::uc::null_sentinel. Since we don't need it and it breaks bootstrap for newlib targets, just remove it. A null sentinel can still be used by constructing a _Null_sentinel_t object as needed, rather than having a named object of that type predefined. libstdc++-v3/ChangeLog: * include/bits/unicode.h (__null_sentinel): Remove. * testsuite/17_intro/names.cc: Add __null_sentinel. --- libstdc++-v3/include/bits/unicode.h | 2 -- libstdc++-v3/testsuite/17_intro/names.cc | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/libstdc++-v3/include/bits/unicode.h b/libstdc++-v3/include/bits/unicode.h index 66f8399fdfb0..e49498a0531e 100644 --- a/libstdc++-v3/include/bits/unicode.h +++ b/libstdc++-v3/include/bits/unicode.h @@ -83,8 +83,6 @@ namespace __unicode { return *__it == iter_value_t<_It>{}; } }; - inline constexpr _Null_sentinel_t __null_sentinel; - template<typename _FromFmt, typename _ToFmt, input_iterator _Iter, sentinel_for<_Iter> _Sent = _Iter, typename _ErrorHandler = _Repl> diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc index 5e77e9f2ab00..53c5aff219d3 100644 --- a/libstdc++-v3/testsuite/17_intro/names.cc +++ b/libstdc++-v3/testsuite/17_intro/names.cc @@ -140,6 +140,7 @@ // These clash with newlib so don't use them. # define __lockable cannot be used as an identifier +# define __null_sentinel cannot be used as an identifier # define __packed cannot be used as an identifier # define __unused cannot be used as an identifier # define __used cannot be used as an identifier -- GitLab