From a00bbcbe7c7b1d5fb437d530555a6940c0b8d06a Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Wed, 1 May 2024 10:26:38 -0600 Subject: [libc++] Remove _LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS (#90512) I strongly suspect nobody ever used that macro since it wasn't very well known. Furthermore, it only affects a handful of diagnostics and I think it makes sense to either provide them unconditionally, or to not provided them at all. --- libcxx/docs/ReleaseNotes/19.rst | 3 +++ libcxx/docs/UsingLibcxx.rst | 9 --------- libcxx/include/__config | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/libcxx/docs/ReleaseNotes/19.rst b/libcxx/docs/ReleaseNotes/19.rst index ac4fd0e..5a07b11 100644 --- a/libcxx/docs/ReleaseNotes/19.rst +++ b/libcxx/docs/ReleaseNotes/19.rst @@ -118,6 +118,9 @@ Deprecations and Removals a ``std::basic_*fstream`` from a ``std::basic_string_view``, a input-iterator or a C-string, instead you can construct a temporary ``std::basic_string``. This change has been applied to C++17 and later. +- The ``_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS`` macro has been removed and is not honored anymore. Additional + warnings provided by libc++ as a matter of QoI will now be provided unconditionally. + Upcoming Deprecations and Removals ---------------------------------- diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst index e7aaf4e..0fdaeb4 100644 --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -167,15 +167,6 @@ safety annotations. build of libc++ which does not export any symbols, which can be useful when building statically for inclusion into another library. -**_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS**: - This macro disables the additional diagnostics generated by libc++ using the - `diagnose_if` attribute. These additional diagnostics include checks for: - - * Giving `set`, `map`, `multiset`, `multimap` and their `unordered_` - counterparts a comparator which is not const callable. - * Giving an unordered associative container a hasher that is not const - callable. - **_LIBCPP_NO_VCRUNTIME**: Microsoft's C and C++ headers are fairly entangled, and some of their C++ headers are fairly hard to avoid. In particular, `vcruntime_new.h` gets pulled diff --git a/libcxx/include/__config b/libcxx/include/__config index 97cdd02..e4c5c68 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -1390,7 +1390,7 @@ typedef __char32_t char32_t; # define _LIBCPP_NO_DESTROY # endif -# if __has_attribute(__diagnose_if__) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) +# if __has_attribute(__diagnose_if__) # define _LIBCPP_DIAGNOSE_WARNING(...) __attribute__((__diagnose_if__(__VA_ARGS__, "warning"))) # else # define _LIBCPP_DIAGNOSE_WARNING(...) -- cgit v1.1