[libcxx] Implement P1956 rename low-level bit functions
Implements P1956: On the names of low-level bit manipulation functions.
Users may use older versions of libc++ or other standard libraries with the old names. In order to keep compatibility the old functions are kept, but marked as deprecated.
The patch also adds a new config macro `_LIBCPP_DEPRECATED_MSG`. Do you prefer a this is a separate patch?
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D90551
GitOrigin-RevId: 1a036e9cc82a7f6d6f4675d631fa5eecd8748784
diff --git a/docs/FeatureTestMacroTable.rst b/docs/FeatureTestMacroTable.rst
index 8d7bfd4..637a484 100644
--- a/docs/FeatureTestMacroTable.rst
+++ b/docs/FeatureTestMacroTable.rst
@@ -208,6 +208,8 @@
------------------------------------------------- -----------------
``__cpp_lib_generic_unordered_lookup`` ``201811L``
------------------------------------------------- -----------------
+ ``__cpp_lib_int_pow2`` ``202002L``
+ ------------------------------------------------- -----------------
``__cpp_lib_interpolate`` ``201902L``
------------------------------------------------- -----------------
``__cpp_lib_is_constant_evaluated`` ``201811L``
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 6079b6f..719115f 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -49,3 +49,10 @@
in both libc++ and libc++abi, which is technically an ODR violation. Also
note that we couldn't decide to put the operators in libc++ only, because
they are needed from libc++abi (which would create a circular dependency).
+- During the C++20 standardization process some new low-level bit functions
+ have been renamed. Libc++ has renamed these functions to match the C++20
+ Standard.
+ - ``ispow2`` has been renamed to ``has_single_bit``
+ - ``ceil2`` has been renamed to ``bit_ceil``
+ - ``floor2`` has been renamed to ``bit_floor``
+ - ``log2p1`` has been renamed to ``bit_width``