[libc-commits] [PATCH] D143413: [libc][doc] Add macros guidelines

Guillaume Chatelet via Phabricator via libc-commits libc-commits at lists.llvm.org
Mon Feb 6 08:48:33 PST 2023


gchatelet created this revision.
gchatelet added a reviewer: sivachandra.
Herald added subscribers: libc-commits, ecnelises, tschuett.
Herald added projects: libc-project, All.
gchatelet requested review of this revision.

This is a first follow up on the libc tuning RFC
https://discourse.llvm.org/t/rfc-llvm-libc-tuning/67980

Once we agree on the format. I'll land a couple of patches to match the guidelines.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D143413

Files:
  libc/docs/code_style.rst


Index: libc/docs/code_style.rst
===================================================================
--- libc/docs/code_style.rst
+++ libc/docs/code_style.rst
@@ -24,6 +24,27 @@
 #. **Public names** - These are the names as prescribed by the standards and
    will follow the style as prescribed by the standards.
 
+Macro style
+===========
+
+We define two kinds of macros: **code defined** and **build defined** macros.
+
+#. **Build defined** macros are generated by `CMake` or `Bazel` and are passed
+   down to the compiler with the ``-D`` command line flag. They start with the
+   ``LIBC_COPT_`` prefix. They are used to tune the behavior of the libc.
+   They either denote an action or define a constant.
+
+#. **Code defined** macros are defined within the ``src/__support/macros``
+   folder. They all start with the ``LIBC_`` prefix. They are of two kinds
+
+   * **Properties** - Build related properties like used compiler, target
+     architecture or enabled CPU features defined by introspecting compiler
+     defined preprocessor defininitions. e.g., ``LIBC_TARGET_IS_ARM``,
+     ``LIBC_TARGET_HAS_AVX2``, ``LIBC_COMPILER_IS_CLANG``, ...
+   * **Attributes** - Compiler agnostic attributes or functions to handle
+     specific operations. e.g., ``LIBC_INLINE``, ``LIBC_NO_LOOP_UNROLL``,
+     ``LIBC_LIKELY``, ``LIBC_INLINE_ASM``.
+
 Inline functions defined in header files
 ========================================
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143413.495154.patch
Type: text/x-patch
Size: 1440 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libc-commits/attachments/20230206/d7792c57/attachment.bin>


More information about the libc-commits mailing list