[libcxx-commits] [libcxx] [libc++] Document that internal aliases should be marked _LIBCPP_NODEBUG (PR #122175)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jan 21 01:55:36 PST 2025


https://github.com/philnik777 updated https://github.com/llvm/llvm-project/pull/122175

>From 997393d7b31e7e2e0750056da34ab413638f943c Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Wed, 8 Jan 2025 22:55:34 +0100
Subject: [PATCH] [libc++] Document that internal aliases should be marked
 _LIBCPP_NODEBUG

---
 libcxx/docs/CodingGuidelines.rst | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libcxx/docs/CodingGuidelines.rst b/libcxx/docs/CodingGuidelines.rst
index 1bb62072e886d1..9bf23a4cfe08b8 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``.



More information about the libcxx-commits mailing list