public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r15-6695] libstdc++: Use preprocessor conditions in std module [PR118177]
@ 2025-01-08 13:01 Jonathan Wakely
0 siblings, 0 replies; only message in thread
From: Jonathan Wakely @ 2025-01-08 13:01 UTC (permalink / raw)
To: gcc-cvs, libstdc++-cvs
https://gcc.gnu.org/g:a37cd4f9064fdf574461bcab2e1f4578b7f411db
commit r15-6695-ga37cd4f9064fdf574461bcab2e1f4578b7f411db
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Dec 23 21:51:24 2024 +0000
libstdc++: Use preprocessor conditions in std module [PR118177]
The std-clib.cc module definition file assumes that all names are
available unconditionally, but that's not true for all targets. Use the
same preprocessor conditions as are present in the <cxxx> headers.
A similar change is needed in std.cc.in for the <chrono> features that
depend on the SSO std::string, guarded with a __cpp_lib_chrono value
indicating full C++20 support.
The conditions for <cmath> are omitted from this change, as there are a
large number of them. That probably needs to be fixed.
libstdc++-v3/ChangeLog:
PR libstdc++/118177
* src/c++23/std-clib.cc.in: Use preprocessor conditions for
names which are not always defined.
* src/c++23/std.cc.in: Likewise.
Diff:
---
libstdc++-v3/src/c++23/std-clib.cc.in | 46 +++++++++++++++++++++++++++++++++++
libstdc++-v3/src/c++23/std.cc.in | 2 ++
2 files changed, 48 insertions(+)
diff --git a/libstdc++-v3/src/c++23/std-clib.cc.in b/libstdc++-v3/src/c++23/std-clib.cc.in
index 9d175b4bb4d1..6809ad229d7c 100644
--- a/libstdc++-v3/src/c++23/std-clib.cc.in
+++ b/libstdc++-v3/src/c++23/std-clib.cc.in
@@ -17,7 +17,9 @@ export C_LIB_NAMESPACE
{
using std::isalnum;
using std::isalpha;
+#ifdef _GLIBCXX_USE_C99_CTYPE
using std::isblank;
+#endif
using std::iscntrl;
using std::isdigit;
using std::isgraph;
@@ -37,6 +39,7 @@ export C_LIB_NAMESPACE
// 28.3 <cfenv>
export C_LIB_NAMESPACE
{
+#ifdef _GLIBCXX_USE_C99_FENV
using std::feclearexcept;
using std::fegetenv;
using std::fegetexceptflag;
@@ -50,6 +53,7 @@ export C_LIB_NAMESPACE
using std::fetestexcept;
using std::feupdateenv;
using std::fexcept_t;
+#endif
}
// 17.3.7 <cfloat> [cfloat.syn]
@@ -58,13 +62,17 @@ export C_LIB_NAMESPACE
// 31.13.2 <cinttypes>
export C_LIB_NAMESPACE
{
+#ifdef _GLIBCXX_USE_C99_INTTYPES
using std::imaxabs;
using std::imaxdiv;
using std::imaxdiv_t;
using std::strtoimax;
using std::strtoumax;
+#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T
using std::wcstoimax;
using std::wcstoumax;
+#endif
+#endif
}
// 17.3.6 <climits> [climits.syn]
@@ -463,7 +471,9 @@ export C_LIB_NAMESPACE
using std::sprintf;
using std::sscanf;
using std::tmpfile;
+#if _GLIBCXX_USE_TMPNAM
using std::tmpnam;
+#endif
using std::ungetc;
using std::vfprintf;
using std::vfscanf;
@@ -480,8 +490,12 @@ export C_LIB_NAMESPACE
using std::_Exit;
using std::abort;
using std::abs;
+#ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC
using std::aligned_alloc;
+#endif
+#ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
using std::at_quick_exit;
+#endif
using std::atexit;
using std::atof;
using std::atoi;
@@ -501,11 +515,15 @@ export C_LIB_NAMESPACE
using std::lldiv;
using std::lldiv_t;
using std::malloc;
+#ifdef _GLIBCXX_HAVE_MBSTATE_T
using std::mblen;
using std::mbstowcs;
using std::mbtowc;
+#endif
using std::qsort;
+#ifdef _GLIBCXX_HAVE_QUICK_EXIT
using std::quick_exit;
+#endif
using std::rand;
using std::realloc;
using std::size_t;
@@ -518,8 +536,10 @@ export C_LIB_NAMESPACE
using std::strtoul;
using std::strtoull;
using std::system;
+#ifdef _GLIBCXX_USE_WCHAR_T
using std::wcstombs;
using std::wctomb;
+#endif
}
// 23.5.3 <cstring>
@@ -567,20 +587,27 @@ export C_LIB_NAMESPACE
using std::time_t;
using std::timespec;
using std::tm;
+#ifdef _GLIBCXX_HAVE_TIMESPEC_GET
using std::timespec_get;
+#endif
}
// 23.5.5 <cuchar>
export C_LIB_NAMESPACE
{
+#if _GLIBCXX_USE_UCHAR_C8RTOMB_MBRTOC8_CXX20
using std::mbrtoc8;
using std::c8rtomb;
+#endif
+#if _GLIBCXX_USE_C11_UCHAR_CXX11
using std::mbrtoc16;
using std::c16rtomb;
using std::mbrtoc32;
using std::c32rtomb;
+#endif
}
+#if _GLIBCXX_USE_WCHAR_T
// 23.5.4 <cwchar>
export C_LIB_NAMESPACE
{
@@ -607,11 +634,19 @@ export C_LIB_NAMESPACE
using std::tm;
using std::ungetwc;
using std::vfwprintf;
+# if _GLIBCXX_HAVE_VFWSCANF
using std::vfwscanf;
+#endif
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
using std::vswprintf;
+#endif
+# if _GLIBCXX_HAVE_VSWSCANF
using std::vswscanf;
+#endif
using std::vwprintf;
+# if _GLIBCXX_HAVE_VWSCANF
using std::vwscanf;
+#endif
using std::wcrtomb;
using std::wcscat;
using std::wcschr;
@@ -630,13 +665,19 @@ export C_LIB_NAMESPACE
using std::wcsspn;
using std::wcsstr;
using std::wcstod;
+#if _GLIBCXX_HAVE_WCSTOF
using std::wcstof;
+#endif
using std::wcstok;
using std::wcstol;
+#if _GLIBCXX_USE_C99_WCHAR
using std::wcstold;
using std::wcstoll;
+#endif
using std::wcstoul;
+#if _GLIBCXX_USE_C99_WCHAR
using std::wcstoull;
+#endif
using std::wcsxfrm;
using std::wctob;
using std::wint_t;
@@ -648,13 +689,17 @@ export C_LIB_NAMESPACE
using std::wprintf;
using std::wscanf;
}
+#endif
+#if _GLIBCXX_USE_WCHAR_T
// 23.5.2 <cwctype>
export C_LIB_NAMESPACE
{
using std::iswalnum;
using std::iswalpha;
+#if _GLIBCXX_HAVE_ISWBLANK
using std::iswblank;
+#endif
using std::iswcntrl;
using std::iswctype;
using std::iswdigit;
@@ -674,3 +719,4 @@ export C_LIB_NAMESPACE
using std::wctype_t;
using std::wint_t;
}
+#endif
diff --git a/libstdc++-v3/src/c++23/std.cc.in b/libstdc++-v3/src/c++23/std.cc.in
index 0e5b41c5b3b8..dcba343426c6 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -806,6 +806,7 @@ export namespace std
using chrono::parse;
using chrono::from_stream;
using chrono::clock_time_conversion;
+#if __cpp_lib_chrono >= 201907L
using chrono::tzdb;
using chrono::tzdb_list;
using chrono::get_tzdb;
@@ -828,6 +829,7 @@ export namespace std
using chrono::get_leap_second_info;
using chrono::time_zone_link;
using chrono::local_time_format;
+#endif
using chrono::is_clock;
using chrono::is_clock_v;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-01-08 13:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-08 13:01 [gcc r15-6695] libstdc++: Use preprocessor conditions in std module [PR118177] Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).