diff --git a/libcxx/docs/CodingGuidelines.rst b/libcxx/docs/CodingGuidelines.rst index 1bb62072e886d..9bf23a4cfe08b 100644 --- a/libcxx/docs/CodingGuidelines.rst +++ b/libcxx/docs/CodingGuidelines.rst @@ -184,3 +184,13 @@ headers (which is sometimes required for ``constexpr`` support). When defining a function at the ABI boundary, it can also be useful to consider which attributes (like ``[[gnu::pure]]`` and ``[[clang::noescape]]``) can be added to the function to improve the compiler's ability to optimize. + +Library-internal type aliases should be annotated with ``_LIBCPP_NODEBUG`` +========================================================================== + +Libc++ has lots of internal type aliases. Accumulated, these can result in significant amounts of debug information that +users generally don't care about, since users don't try to debug standard library facilities in most cases. For that +reason, all library-internal type aliases that aren't function-local should be annotated with ``_LIBCPP_NODEBUG`` to +prevent compilers from generating said debug information. + +This is enforced by the clang-tidy check ``libcpp-nodebug-on-aliases``.