[libc++] Implement P0154R1 (Hardware inference size)
`__GCC_CONSTRUCTIVE_SIZE` and `__GCC_DESTRUCTIVE_SIZE` are available since GCC 12. I'm assuming clang will also implement these for compatability with libstdc++.
Reviewed By: ldionne, #libc
Spies: h-vetinari, libcxx-commits, arichardson
Differential Revision: https://reviews.llvm.org/D122276
NOKEYCHECK=True
GitOrigin-RevId: 56a33ba3dd2bfd411e77946871814e98d92ec2fa
diff --git a/docs/FeatureTestMacroTable.rst b/docs/FeatureTestMacroTable.rst
index 020ef2a..f615b40 100644
--- a/docs/FeatureTestMacroTable.rst
+++ b/docs/FeatureTestMacroTable.rst
@@ -100,7 +100,7 @@
------------------------------------------------- -----------------
``__cpp_lib_gcd_lcm`` ``201606L``
------------------------------------------------- -----------------
- ``__cpp_lib_hardware_interference_size`` *unimplemented*
+ ``__cpp_lib_hardware_interference_size`` ``201703L``
------------------------------------------------- -----------------
``__cpp_lib_has_unique_object_representations`` ``201606L``
------------------------------------------------- -----------------
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index c5d1907..c7f9cb3 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -45,6 +45,7 @@
- P2216R3 (std::format improvements)
- P0174R2 (Deprecating Vestigial Library Parts in C++17)
- N4190 (Removing auto_ptr, random_shuffle(), And Old <functional> Stuff)
+- P0154R1 (Hardware inference size)
- Marked the following papers as "Complete" (note that some of those might have
been implemented in a previous release but not marked as such):
diff --git a/docs/Status/Cxx17.rst b/docs/Status/Cxx17.rst
index 26bf0ad..96c010c 100644
--- a/docs/Status/Cxx17.rst
+++ b/docs/Status/Cxx17.rst
@@ -42,7 +42,7 @@
.. [#note-P0067] P0067: ``std::(to|from)_chars`` for integrals has been available since version 7.0. ``std::to_chars`` for ``float`` and ``double`` since version 14.0 ``std::to_chars`` for ``long double`` uses the implementation for ``double``.
.. [#note-P0607] P0607: The parts of P0607 that are not done are the ``<regex>`` bits.
-
+ .. [#note-P0154] P0154: This is currently not implemented for clang because clang does not implement the required macros.
.. _issues-status-cxx17:
diff --git a/docs/Status/Cxx17Papers.csv b/docs/Status/Cxx17Papers.csv
index 2a996ce..84904ac 100644
--- a/docs/Status/Cxx17Papers.csv
+++ b/docs/Status/Cxx17Papers.csv
@@ -35,7 +35,7 @@
"`P0185R1 <https://wg21.link/P0185R1>`__","LWG","Adding [nothrow-]swappable traits","Jacksonville","|Complete|","3.9"
"`P0253R1 <https://wg21.link/P0253R1>`__","LWG","Fixing a design mistake in the searchers interface","Jacksonville","|Complete|","3.9"
"`P0025R0 <https://wg21.link/P0025R0>`__","LWG","An algorithm to ""clamp"" a value between a pair of boundary values","Jacksonville","|Complete|","3.9"
-"`P0154R1 <https://wg21.link/P0154R1>`__","LWG","constexpr std::hardware_{constructive,destructive}_interference_size","Jacksonville","",""
+"`P0154R1 <https://wg21.link/P0154R1>`__","LWG","constexpr std::hardware_{constructive,destructive}_interference_size","Jacksonville","|Partial| [#note-P0154]_","15.0"
"`P0030R1 <https://wg21.link/P0030R1>`__","LWG","Proposal to Introduce a 3-Argument Overload to std::hypot","Jacksonville","|Complete|","3.9"
"`P0031R0 <https://wg21.link/P0031R0>`__","LWG","A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access","Jacksonville","|Complete|","4.0"
"`P0272R1 <https://wg21.link/P0272R1>`__","LWG","Give ``std::string``\ a non-const ``.data()``\ member function","Jacksonville","|Complete|","3.9"