11 This document describes coding standards that are used in the LLVM project.
12 Although no coding standards should be regarded as absolute requirements to be
13 followed in all instances, coding standards are
14 particularly important for large-scale code bases that follow a library-based
17 While this document may provide guidance for some mechanical formatting issues,
18 whitespace, or other "microscopic details", these are not fixed standards.
19 Always follow the golden rule:
23 **If you are extending, enhancing, or bug fixing already implemented code,
24 use the style that is already being used so that the source is uniform and
27 Note that some code bases (e.g. ``libc++``) have special reasons to deviate
28 from the coding standards. For example, in the case of ``libc++``, this is
29 because the naming and other conventions are dictated by the C++ standard.
31 There are some conventions that are not uniformly followed in the code base
32 (e.g. the naming convention). This is because they are relatively new, and a
33 lot of code was written before they were put in place. Our long term goal is
34 for the entire codebase to follow the convention, but we explicitly *do not*
35 want patches that do large-scale reformatting of existing code. On the other
36 hand, it is reasonable to rename the methods of a class if you're about to
37 change it in some other way. Please commit such changes separately to
38 make code review easier.
40 The ultimate goal of these guidelines is to increase the readability and
41 maintainability of our common source base.
43 Languages, Libraries, and Standards
44 ===================================
46 Most source code in LLVM and other LLVM projects using these coding standards
47 is C++ code. There are some places where C code is used either due to
48 environment restrictions, historical restrictions, or due to third-party source
49 code imported into the tree. Generally, our preference is for standards
50 conforming, modern, and portable C++ code as the implementation language of
53 For automation, build-systems and utility scripts Python is preferred and
54 is widely used in the LLVM repository already.
59 Unless otherwise documented, LLVM subprojects are written using standard C++17
60 code and avoid unnecessary vendor-specific extensions.
62 Nevertheless, we restrict ourselves to features which are available in the
63 major toolchains supported as host compilers (see :doc:`GettingStarted` page,
66 Each toolchain provides a good reference for what it accepts:
68 * Clang: https://clang.llvm.org/cxx_status.html
70 * libc++: https://libcxx.llvm.org/Status/Cxx17.html
72 * GCC: https://gcc.gnu.org/projects/cxx-status.html#cxx17
74 * libstdc++: https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2017
76 * MSVC: https://learn.microsoft.com/cpp/overview/visual-cpp-language-conformance
78 Additionally, there are compiler comparison tables of supported C++ features on
79 `cppreference.com <https://en.cppreference.com/w/cpp/compiler_support/17>`_.
85 Instead of implementing custom data structures, we encourage the use of C++
86 standard library facilities or LLVM support libraries whenever they are
87 available for a particular task. LLVM and related projects emphasize and rely
88 on the standard library facilities and the LLVM support libraries as much as
91 LLVM support libraries (for example, `ADT
92 <https://github.com/llvm/llvm-project/tree/main/llvm/include/llvm/ADT>`_)
93 implement specialized data structures or functionality missing in the standard
94 library. Such libraries are usually implemented in the ``llvm`` namespace and
95 follow the expected standard interface, when there is one.
97 When both C++ and the LLVM support libraries provide similar functionality, and
98 there isn't a specific reason to favor the C++ implementation, it is generally
99 preferable to use the LLVM library. For example, ``llvm::DenseMap`` should
100 almost always be used instead of ``std::map`` or ``std::unordered_map``, and
101 ``llvm::SmallVector`` should usually be used instead of ``std::vector``.
103 We explicitly avoid some standard facilities, like the I/O streams, and instead
104 use LLVM's streams library (raw_ostream_). More detailed information on these
105 subjects is available in the :doc:`ProgrammersManual`.
107 For more information about LLVM's data structures and the tradeoffs they make,
108 please consult `that section of the programmer's manual
109 <https://llvm.org/docs/ProgrammersManual.html#picking-the-right-data-structure-for-a-task>`_.
111 Python version and Source Code Formatting
112 -----------------------------------------
114 The current minimum version of Python required is documented in the :doc:`GettingStarted`
115 section. Python code in the LLVM repository should only use language features
116 available in this version of Python.
118 The Python code within the LLVM repository should adhere to the formatting guidelines
119 outlined in `PEP 8 <https://peps.python.org/pep-0008/>`_.
121 For consistency and to limit churn, code should be automatically formatted with
122 the `black <https://github.com/psf/black>`_ utility, which is PEP 8 compliant.
123 Use its default rules. For example, avoid specifying ``--line-length`` even
124 though it does not default to 80. The default rules can change between major
125 versions of black. In order to avoid unnecessary churn in the formatting rules,
126 we currently use black version 23.x in LLVM.
128 When contributing a patch unrelated to formatting, you should format only the
129 Python code that the patch modifies. For this purpose, use the `darker
130 <https://pypi.org/project/darker/>`_ utility, which runs default black rules
131 over only the modified Python code. Doing so should ensure the patch will pass
132 the Python format checks in LLVM's pre-commit CI, which also uses darker. When
133 contributing a patch specifically for reformatting Python files, use black,
134 which currently only supports formatting entire files.
136 Here are some quick examples, but see the black and darker documentation for
141 $ pip install black=='23.*' darker # install black 23.x and darker
142 $ darker test.py # format uncommitted changes
143 $ darker -r HEAD^ test.py # also format changes from last commit
144 $ black test.py # format entire file
146 Instead of individual file names, you can specify directories to
147 darker, and it will find the changed files. However, if a directory is
148 large, like a clone of the LLVM repository, darker can be painfully
149 slow. In that case, you might wish to use git to list changed files.
154 $ darker -r HEAD^ $(git diff --name-only --diff-filter=d HEAD^)
156 Mechanical Source Issues
157 ========================
159 Source Code Formatting
160 ----------------------
165 Comments are important for readability and maintainability. When writing comments,
166 write them as English prose, using proper capitalization, punctuation, etc.
167 Aim to describe what the code is trying to do and why, not *how* it does it at
168 a micro level. Here are a few important things to document:
170 .. _header file comment:
175 Every source file should have a header on it that describes the basic purpose of
176 the file. The standard header looks like this:
180 //===----------------------------------------------------------------------===//
182 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
183 // See https://llvm.org/LICENSE.txt for license information.
184 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
186 //===----------------------------------------------------------------------===//
189 /// This file contains the declaration of the Instruction class, which is the
190 /// base class for all of the VM instructions.
192 //===----------------------------------------------------------------------===//
194 The first section in the file is a concise note that defines the license that the
195 file is released under. This makes it perfectly clear what terms the source
196 code can be distributed under and should not be modified in any way.
198 The main body is a `Doxygen <http://www.doxygen.nl/>`_ comment (identified by
199 the ``///`` comment marker instead of the usual ``//``) describing the purpose
200 of the file. The first sentence (or a passage beginning with ``\brief``) is
201 used as an abstract. Any additional information should be separated by a blank
202 line. If an algorithm is based on a paper or is described in another source,
208 The header file's guard should be the all-caps path that a user of this header
209 would #include, using '_' instead of path separator and extension marker.
210 For example, the header file
211 ``llvm/include/llvm/Analysis/Utils/Local.h`` would be ``#include``-ed as
212 ``#include "llvm/Analysis/Utils/Local.h"``, so its guard is
213 ``LLVM_ANALYSIS_UTILS_LOCAL_H``.
218 Classes are a fundamental part of an object-oriented design. As such, a
219 class definition should have a comment block that explains what the class is
220 used for and how it works. Every non-trivial class is expected to have a
221 ``doxygen`` comment block.
226 Methods and global functions should also be documented. A quick note about
227 what it does and a description of the edge cases is all that is necessary here.
228 The reader should be able to understand how to use interfaces without reading
231 Good things to talk about here are what happens when something unexpected
232 happens, for instance, does the method return null?
237 In general, prefer C++-style comments (``//`` for normal comments, ``///`` for
238 ``doxygen`` documentation comments). There are a few cases when it is
239 useful to use C-style (``/* */``) comments however:
241 #. When writing C code to be compatible with C89.
243 #. When writing a header file that may be ``#include``\d by a C source file.
245 #. When writing a source file that is used by a tool that only accepts C-style
248 #. When documenting the significance of constants used as actual parameters in
249 a call. This is most helpful for ``bool`` parameters, or passing ``0`` or
250 ``nullptr``. The comment should contain the parameter name, which ought to be
251 meaningful. For example, it's not clear what the parameter means in this call:
255 Object.emitName(nullptr);
257 An in-line C-style comment makes the intent obvious:
261 Object.emitName(/*Prefix=*/nullptr);
263 Commenting out large blocks of code is discouraged, but if you really have to do
264 this (for documentation purposes or as a suggestion for debug printing), use
265 ``#if 0`` and ``#endif``. These nest properly and are better behaved in general
266 than C style comments.
268 Doxygen Use in Documentation Comments
269 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
271 Use the ``\file`` command to turn the standard file header into a file-level
274 Include descriptive paragraphs for all public interfaces (public classes,
275 member and non-member functions). Avoid restating the information that can
276 be inferred from the API name. The first sentence (or a paragraph beginning
277 with ``\brief``) is used as an abstract. Try to use a single sentence as the
278 ``\brief`` adds visual clutter. Put detailed discussion into separate
281 To refer to parameter names inside a paragraph, use the ``\p name`` command.
282 Don't use the ``\arg name`` command since it starts a new paragraph that
283 contains documentation for the parameter.
285 Wrap non-inline code examples in ``\code ... \endcode``.
287 To document a function parameter, start a new paragraph with the
288 ``\param name`` command. If the parameter is used as an out or an in/out
289 parameter, use the ``\param [out] name`` or ``\param [in,out] name`` command,
292 To describe function return value, start a new paragraph with the ``\returns``
295 A minimal documentation comment:
299 /// Sets the xyzzy property to \p Baz.
300 void setXyzzy(bool Baz);
302 A documentation comment that uses all Doxygen features in a preferred way:
306 /// Does foo and bar.
308 /// Does not do foo the usual way if \p Baz is true.
312 /// fooBar(false, "quux", Res);
315 /// \param Quux kind of foo to do.
316 /// \param [out] Result filled with bar sequence on foo success.
318 /// \returns true on success.
319 bool fooBar(bool Baz, StringRef Quux, std::vector<int> &Result);
321 Don't duplicate the documentation comment in the header file and in the
322 implementation file. Put the documentation comments for public APIs into the
323 header file. Documentation comments for private APIs can go to the
324 implementation file. In any case, implementation files can include additional
325 comments (not necessarily in Doxygen markup) to explain implementation details
328 Don't duplicate function or class name at the beginning of the comment.
329 For humans it is obvious which function or class is being documented;
330 automatic documentation processing tools are smart enough to bind the comment
331 to the correct declaration.
339 // example - Does something important.
344 // example - Does something important.
345 void example() { ... }
353 /// Does something important.
358 /// Builds a B-tree in order to do foo. See paper by...
359 void example() { ... }
361 Error and Warning Messages
362 ^^^^^^^^^^^^^^^^^^^^^^^^^^
364 Clear diagnostic messages are important to help users identify and fix issues in
365 their inputs. Use succinct but correct English prose that gives the user the
366 context needed to understand what went wrong. Also, to match error message
367 styles commonly produced by other tools, start the first sentence with a
368 lower-case letter, and finish the last sentence without a period, if it would
369 end in one otherwise. Sentences which end with different punctuation, such as
370 "did you forget ';'?", should still do so.
372 For example this is a good error message:
376 error: file.o: section header 3 is corrupt. Size is 10 when it should be 20
378 This is a bad message, since it does not provide useful information and uses the
383 error: file.o: Corrupt section header.
385 As with other coding standards, individual projects, such as the Clang Static
386 Analyzer, may have preexisting styles that do not conform to this. If a
387 different formatting scheme is used consistently throughout the project, use
388 that style instead. Otherwise, this standard applies to all LLVM tools,
389 including clang, clang-tidy, and so on.
391 If the tool or project does not have existing functions to emit warnings or
392 errors, use the error and warning handlers provided in ``Support/WithColor.h``
393 to ensure they are printed in the appropriate style, rather than printing to
396 When using ``report_fatal_error``, follow the same standards for the message as
397 regular error messages. Assertion messages and ``llvm_unreachable`` calls do not
398 necessarily need to follow these same styles as they are automatically
399 formatted, and thus these guidelines may not be suitable.
404 Immediately after the `header file comment`_ (and include guards if working on a
405 header file), the `minimal list of #includes`_ required by the file should be
406 listed. We prefer these ``#include``\s to be listed in this order:
408 .. _Main Module Header:
409 .. _Local/Private Headers:
411 #. Main Module Header
412 #. Local/Private Headers
413 #. LLVM project/subproject headers (``clang/...``, ``lldb/...``, ``llvm/...``, etc)
414 #. System ``#include``\s
416 and each category should be sorted lexicographically by the full path.
418 The `Main Module Header`_ file applies to ``.cpp`` files which implement an
419 interface defined by a ``.h`` file. This ``#include`` should always be included
420 **first** regardless of where it lives on the file system. By including a
421 header file first in the ``.cpp`` files that implement the interfaces, we ensure
422 that the header does not have any hidden dependencies which are not explicitly
423 ``#include``\d in the header, but should be. It is also a form of documentation
424 in the ``.cpp`` file to indicate where the interfaces it implements are defined.
426 LLVM project and subproject headers should be grouped from most specific to least
427 specific, for the same reasons described above. For example, LLDB depends on
428 both clang and LLVM, and clang depends on LLVM. So an LLDB source file should
429 include ``lldb`` headers first, followed by ``clang`` headers, followed by
430 ``llvm`` headers, to reduce the possibility (for example) of an LLDB header
431 accidentally picking up a missing include due to the previous inclusion of that
432 header in the main source file or some earlier header file. clang should
433 similarly include its own headers before including llvm headers. This rule
434 applies to all LLVM subprojects.
436 .. _fit into 80 columns:
441 Write your code to fit within 80 columns.
443 There must be some limit to the width of the code in
444 order to allow developers to have multiple files side-by-side in
445 windows on a modest display. If you are going to pick a width limit, it is
446 somewhat arbitrary but you might as well pick something standard. Going with 90
447 columns (for example) instead of 80 columns wouldn't add any significant value
448 and would be detrimental to printing out code. Also many other projects have
449 standardized on 80 columns, so some people have already configured their editors
450 for it (vs something else, like 90 columns).
455 In all cases, prefer spaces to tabs in source files. People have different
456 preferred indentation levels, and different styles of indentation that they
457 like; this is fine. What isn't fine is that different editors/viewers expand
458 tabs out to different tab stops. This can cause your code to look completely
459 unreadable, and it is not worth dealing with.
461 As always, follow the `Golden Rule`_ above: follow the style of existing code
462 if you are modifying and extending it.
464 Do not add trailing whitespace. Some common editors will automatically remove
465 trailing whitespace when saving a file which causes unrelated changes to appear
466 in diffs and commits.
468 Format Lambdas Like Blocks Of Code
469 """"""""""""""""""""""""""""""""""
471 When formatting a multi-line lambda, format it like a block of code. If there
472 is only one multi-line lambda in a statement, and there are no expressions
473 lexically after it in the statement, drop the indent to the standard two space
474 indent for a block of code, as if it were an if-block opened by the preceding
475 part of the statement:
479 std::sort(foo.begin(), foo.end(), [&](Foo a, Foo b) -> bool {
484 return a.bam < b.bam;
487 To take best advantage of this formatting, if you are designing an API which
488 accepts a continuation or single callable argument (be it a function object, or
489 a ``std::function``), it should be the last argument if at all possible.
491 If there are multiple multi-line lambdas in a statement, or additional
492 parameters after the lambda, indent the block two spaces from the indent of the
497 dyn_switch(V->stripPointerCasts(),
501 [] (SelectInst *SI) {
502 // process selects...
507 [] (AllocaInst *AI) {
508 // process allocas...
511 Braced Initializer Lists
512 """"""""""""""""""""""""
514 Starting from C++11, there are significantly more uses of braced lists to
515 perform initialization. For example, they can be used to construct aggregate
516 temporaries in expressions. They now have a natural way of ending up nested
517 within each other and within function calls in order to build up aggregates
518 (such as option structs) from local variables.
520 The historically common formatting of braced initialization of aggregate
521 variables does not mix cleanly with deep nesting, general expression contexts,
522 function arguments, and lambdas. We suggest new code use a simple rule for
523 formatting braced initialization lists: act as-if the braces were parentheses
524 in a function call. The formatting rules exactly match those already well
525 understood for formatting nested function calls. Examples:
529 foo({a, b, c}, {1, 2, 3});
531 llvm::Constant *Mask[] = {
532 llvm::ConstantInt::get(llvm::Type::getInt32Ty(getLLVMContext()), 0),
533 llvm::ConstantInt::get(llvm::Type::getInt32Ty(getLLVMContext()), 1),
534 llvm::ConstantInt::get(llvm::Type::getInt32Ty(getLLVMContext()), 2)};
536 This formatting scheme also makes it particularly easy to get predictable,
537 consistent, and automatic formatting with tools like `Clang Format`_.
539 .. _Clang Format: https://clang.llvm.org/docs/ClangFormat.html
541 Language and Compiler Issues
542 ----------------------------
544 Treat Compiler Warnings Like Errors
545 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
547 Compiler warnings are often useful and help improve the code. Those that are
548 not useful, can be often suppressed with a small code change. For example, an
549 assignment in the ``if`` condition is often a typo:
553 if (V = getValue()) {
557 Several compilers will print a warning for the code above. It can be suppressed
558 by adding parentheses:
562 if ((V = getValue())) {
569 In almost all cases, it is possible to write completely portable code. When
570 you need to rely on non-portable code, put it behind a well-defined and
571 well-documented interface.
573 Do not use RTTI or Exceptions
574 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
576 In an effort to reduce code and executable size, LLVM does not use exceptions
577 or RTTI (`runtime type information
578 <https://en.wikipedia.org/wiki/Run-time_type_information>`_, for example,
581 That said, LLVM does make extensive use of a hand-rolled form of RTTI that use
582 templates like :ref:`isa\<>, cast\<>, and dyn_cast\<> <isa>`.
583 This form of RTTI is opt-in and can be
584 :doc:`added to any class <HowToSetUpLLVMStyleRTTI>`.
586 Prefer C++-style casts
587 ^^^^^^^^^^^^^^^^^^^^^^
589 When casting, use ``static_cast``, ``reinterpret_cast``, and ``const_cast``,
590 rather than C-style casts. There are two exceptions to this:
592 * When casting to ``void`` to suppress warnings about unused variables (as an
593 alternative to ``[[maybe_unused]]``). Prefer C-style casts in this instance.
595 * When casting between integral types (including enums that are not strongly-
596 typed), functional-style casts are permitted as an alternative to
599 .. _static constructor:
601 Do not use Static Constructors
602 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
604 Static constructors and destructors (e.g., global variables whose types have a
605 constructor or destructor) should not be added to the code base, and should be
606 removed wherever possible.
608 Globals in different source files are initialized in `arbitrary order
609 <https://yosefk.com/c++fqa/ctors.html#fqa-10.12>`_, making the code more
610 difficult to reason about.
612 Static constructors have negative impact on launch time of programs that use
613 LLVM as a library. We would really like for there to be zero cost for linking
614 in an additional LLVM target or other library into an application, but static
615 constructors undermine this goal.
617 Use of ``class`` and ``struct`` Keywords
618 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
620 In C++, the ``class`` and ``struct`` keywords can be used almost
621 interchangeably. The only difference is when they are used to declare a class:
622 ``class`` makes all members private by default while ``struct`` makes all
623 members public by default.
625 * All declarations and definitions of a given ``class`` or ``struct`` must use
626 the same keyword. For example:
630 // Avoid if `Example` is defined as a struct.
636 struct Example { ... };
638 * ``struct`` should be used when *all* members are declared public.
642 // Avoid using `struct` here, use `class` instead.
648 int getData() const { return Data; }
649 void setData(int D) { Data = D; }
652 // OK to use `struct`: all members are public.
658 Do not use Braced Initializer Lists to Call a Constructor
659 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
661 Starting from C++11 there is a "generalized initialization syntax" which allows
662 calling constructors using braced initializer lists. Do not use these to call
663 constructors with non-trivial logic or if you care that you're calling some
664 *particular* constructor. Those should look like function calls using
665 parentheses rather than like aggregate initialization. Similarly, if you need
666 to explicitly name the type and call its constructor to create a temporary,
667 don't use a braced initializer list. Instead, use a braced initializer list
668 (without any type for temporaries) when doing aggregate initialization or
669 something notionally equivalent. Examples:
675 // Construct a Foo by reading data from the disk in the whizbang format, ...
676 Foo(std::string filename);
678 // Construct a Foo by looking up the Nth element of some global data ...
684 // The Foo constructor call is reading a file, don't use braces to call it.
685 std::fill(foo.begin(), foo.end(), Foo("name"));
687 // The pair is being constructed like an aggregate, use braces.
688 bar_map.insert({my_key, my_value});
690 If you use a braced initializer list when initializing a variable, use an equals before the open curly brace:
694 int data[] = {0, 1, 2, 3};
696 Use ``auto`` Type Deduction to Make Code More Readable
697 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
699 Some are advocating a policy of "almost always ``auto``" in C++11, however LLVM
700 uses a more moderate stance. Use ``auto`` if and only if it makes the code more
701 readable or easier to maintain. Don't "almost always" use ``auto``, but do use
702 ``auto`` with initializers like ``cast<Foo>(...)`` or other places where the
703 type is already obvious from the context. Another time when ``auto`` works well
704 for these purposes is when the type would have been abstracted away anyways,
705 often behind a container's typedef such as ``std::vector<T>::iterator``.
707 Similarly, C++14 adds generic lambda expressions where parameter types can be
708 ``auto``. Use these where you would have used a template.
710 Beware unnecessary copies with ``auto``
711 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
713 The convenience of ``auto`` makes it easy to forget that its default behavior
714 is a copy. Particularly in range-based ``for`` loops, careless copies are
717 Use ``auto &`` for values and ``auto *`` for pointers unless you need to make a
722 // Typically there's no reason to copy.
723 for (const auto &Val : Container) observe(Val);
724 for (auto &Val : Container) Val.change();
726 // Remove the reference if you really want a new copy.
727 for (auto Val : Container) { Val.change(); saveSomewhere(Val); }
729 // Copy pointers, but make it clear that they're pointers.
730 for (const auto *Ptr : Container) observe(*Ptr);
731 for (auto *Ptr : Container) Ptr->change();
733 Beware of non-determinism due to ordering of pointers
734 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
736 In general, there is no relative ordering among pointers. As a result,
737 when unordered containers like sets and maps are used with pointer keys
738 the iteration order is undefined. Hence, iterating such containers may
739 result in non-deterministic code generation. While the generated code
740 might work correctly, non-determinism can make it harder to reproduce bugs and
743 In case an ordered result is expected, remember to
744 sort an unordered container before iteration. Or use ordered containers
745 like ``vector``/``MapVector``/``SetVector`` if you want to iterate pointer
748 Beware of non-deterministic sorting order of equal elements
749 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
751 ``std::sort`` uses a non-stable sorting algorithm in which the order of equal
752 elements is not guaranteed to be preserved. Thus using ``std::sort`` for a
753 container having equal elements may result in non-deterministic behavior.
754 To uncover such instances of non-determinism, LLVM has introduced a new
755 llvm::sort wrapper function. For an EXPENSIVE_CHECKS build this will randomly
756 shuffle the container before sorting. Default to using ``llvm::sort`` instead
762 The High-Level Issues
763 ---------------------
765 Self-contained Headers
766 ^^^^^^^^^^^^^^^^^^^^^^
768 Header files should be self-contained (compile on their own) and end in ``.h``.
769 Non-header files that are meant for inclusion should end in ``.inc`` and be
772 All header files should be self-contained. Users and refactoring tools should
773 not have to adhere to special conditions to include the header. Specifically, a
774 header should have header guards and include all other headers it needs.
776 There are rare cases where a file designed to be included is not
777 self-contained. These are typically intended to be included at unusual
778 locations, such as the middle of another file. They might not use header
779 guards, and might not include their prerequisites. Name such files with the
780 .inc extension. Use sparingly, and prefer self-contained headers when possible.
782 In general, a header should be implemented by one or more ``.cpp`` files. Each
783 of these ``.cpp`` files should include the header that defines their interface
784 first. This ensures that all of the dependences of the header have been
785 properly added to the header itself, and are not implicit. System headers
786 should be included after user headers for a translation unit.
791 A directory of header files (for example ``include/llvm/Foo``) defines a
792 library (``Foo``). One library (both
793 its headers and implementation) should only use things from the libraries
794 listed in its dependencies.
796 Some of this constraint can be enforced by classic Unix linkers (Mac & Windows
797 linkers, as well as lld, do not enforce this constraint). A Unix linker
798 searches left to right through the libraries specified on its command line and
799 never revisits a library. In this way, no circular dependencies between
802 This doesn't fully enforce all inter-library dependencies, and importantly
803 doesn't enforce header file circular dependencies created by inline functions.
804 A good way to answer the "is this layered correctly" would be to consider
805 whether a Unix linker would succeed at linking the program if all inline
806 functions were defined out-of-line. (& for all valid orderings of dependencies
807 - since linking resolution is linear, it's possible that some implicit
808 dependencies can sneak through: A depends on B and C, so valid orderings are
809 "C B A" or "B C A", in both cases the explicit dependencies come before their
810 use. But in the first case, B could still link successfully if it implicitly
811 depended on C, or the opposite in the second case)
813 .. _minimal list of #includes:
815 ``#include`` as Little as Possible
816 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
818 ``#include`` hurts compile time performance. Don't do it unless you have to,
819 especially in header files.
821 But wait! Sometimes you need to have the definition of a class to use it, or to
822 inherit from it. In these cases go ahead and ``#include`` that header file. Be
823 aware however that there are many cases where you don't need to have the full
824 definition of a class. If you are using a pointer or reference to a class, you
825 don't need the header file. If you are simply returning a class instance from a
826 prototyped function or method, you don't need it. In fact, for most cases, you
827 simply don't need the definition of a class. And not ``#include``\ing speeds up
830 It is easy to try to go too overboard on this recommendation, however. You
831 **must** include all of the header files that you are using --- you can include
832 them either directly or indirectly through another header file. To make sure
833 that you don't accidentally forget to include a header file in your module
834 header, make sure to include your module header **first** in the implementation
835 file (as mentioned above). This way there won't be any hidden dependencies that
836 you'll find out about later.
838 Keep "Internal" Headers Private
839 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
841 Many modules have a complex implementation that causes them to use more than one
842 implementation (``.cpp``) file. It is often tempting to put the internal
843 communication interface (helper classes, extra functions, etc) in the public
844 module header file. Don't do this!
846 If you really need to do something like this, put a private header file in the
847 same directory as the source files, and include it locally. This ensures that
848 your private interface remains private and undisturbed by outsiders.
852 It's okay to put extra implementation methods in a public class itself. Just
853 make them private (or protected) and all is well.
855 Use Namespace Qualifiers to Implement Previously Declared Functions
856 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
858 When providing an out of line implementation of a function in a source file, do
859 not open namespace blocks in the source file. Instead, use namespace qualifiers
860 to help ensure that your definition matches an existing declaration. Do this:
866 int foo(const char *s);
871 using namespace llvm;
872 int llvm::foo(const char *s) {
876 Doing this helps to avoid bugs where the definition does not match the
877 declaration from the header. For example, the following C++ code defines a new
878 overload of ``llvm::foo`` instead of providing a definition for the existing
879 function declared in the header:
886 int foo(char *s) { // Mismatch between "const char *" and "char *"
890 This error will not be caught until the build is nearly complete, when the
891 linker fails to find a definition for any uses of the original function. If the
892 function were instead defined with a namespace qualifier, the error would have
893 been caught immediately when the definition was compiled.
895 Class method implementations must already name the class and new overloads
896 cannot be introduced out of line, so this recommendation does not apply to them.
900 Use Early Exits and ``continue`` to Simplify Code
901 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
903 When reading code, keep in mind how much state and how many previous decisions
904 have to be remembered by the reader to understand a block of code. Aim to
905 reduce indentation where possible when it doesn't make it more difficult to
906 understand the code. One great way to do this is by making use of early exits
907 and the ``continue`` keyword in long loops. Consider this code that does not
912 Value *doSomething(Instruction *I) {
913 if (!I->isTerminator() &&
914 I->hasOneUse() && doOtherThing(I)) {
915 ... some long code ....
921 This code has several problems if the body of the ``'if'`` is large. When
922 you're looking at the top of the function, it isn't immediately clear that this
923 *only* does interesting things with non-terminator instructions, and only
924 applies to things with the other predicates. Second, it is relatively difficult
925 to describe (in comments) why these predicates are important because the ``if``
926 statement makes it difficult to lay out the comments. Third, when you're deep
927 within the body of the code, it is indented an extra level. Finally, when
928 reading the top of the function, it isn't clear what the result is if the
929 predicate isn't true; you have to read to the end of the function to know that
932 It is much preferred to format the code like this:
936 Value *doSomething(Instruction *I) {
937 // Terminators never need 'something' done to them because ...
938 if (I->isTerminator())
941 // We conservatively avoid transforming instructions with multiple uses
942 // because goats like cheese.
946 // This is really just here for example.
947 if (!doOtherThing(I))
950 ... some long code ....
953 This fixes these problems. A similar problem frequently happens in ``for``
954 loops. A silly example is something like this:
958 for (Instruction &I : BB) {
959 if (auto *BO = dyn_cast<BinaryOperator>(&I)) {
960 Value *LHS = BO->getOperand(0);
961 Value *RHS = BO->getOperand(1);
968 When you have very, very small loops, this sort of structure is fine. But if it
969 exceeds more than 10-15 lines, it becomes difficult for people to read and
970 understand at a glance. The problem with this sort of code is that it gets very
971 nested very quickly. Meaning that the reader of the code has to keep a lot of
972 context in their brain to remember what is going immediately on in the loop,
973 because they don't know if/when the ``if`` conditions will have ``else``\s etc.
974 It is strongly preferred to structure the loop like this:
978 for (Instruction &I : BB) {
979 auto *BO = dyn_cast<BinaryOperator>(&I);
982 Value *LHS = BO->getOperand(0);
983 Value *RHS = BO->getOperand(1);
984 if (LHS == RHS) continue;
989 This has all the benefits of using early exits for functions: it reduces nesting
990 of the loop, it makes it easier to describe why the conditions are true, and it
991 makes it obvious to the reader that there is no ``else`` coming up that they
992 have to push context into their brain for. If a loop is large, this can be a
993 big understandability win.
995 Don't use ``else`` after a ``return``
996 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
998 For similar reasons as above (reduction of indentation and easier reading), please
999 do not use ``'else'`` or ``'else if'`` after something that interrupts control
1000 flow --- like ``return``, ``break``, ``continue``, ``goto``, etc. For example:
1006 Type = Context.getsigjmp_bufType();
1007 if (Type.isNull()) {
1008 Error = ASTContext::GE_Missing_sigjmp_buf;
1011 break; // Unnecessary.
1014 Type = Context.getjmp_bufType();
1015 if (Type.isNull()) {
1016 Error = ASTContext::GE_Missing_jmp_buf;
1019 break; // Unnecessary.
1024 It is better to write it like this:
1030 Type = Context.getsigjmp_bufType();
1031 if (Type.isNull()) {
1032 Error = ASTContext::GE_Missing_sigjmp_buf;
1036 Type = Context.getjmp_bufType();
1037 if (Type.isNull()) {
1038 Error = ASTContext::GE_Missing_jmp_buf;
1044 Or better yet (in this case) as:
1050 Type = Context.getsigjmp_bufType();
1052 Type = Context.getjmp_bufType();
1054 if (Type.isNull()) {
1055 Error = Signed ? ASTContext::GE_Missing_sigjmp_buf :
1056 ASTContext::GE_Missing_jmp_buf;
1061 The idea is to reduce indentation and the amount of code you have to keep track
1062 of when reading the code.
1064 Note: this advice does not apply to a ``constexpr if`` statement. The
1065 substatement of the ``else`` clause may be a discarded statement, so removing
1066 the ``else`` can cause unexpected template instantiations. Thus, the following
1071 template<typename T>
1072 static constexpr bool VarTempl = true;
1074 template<typename T>
1076 if constexpr (VarTempl<T>)
1079 static_assert(!VarTempl<T>);
1082 Turn Predicate Loops into Predicate Functions
1083 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1085 It is very common to write small loops that just compute a boolean value. There
1086 are a number of ways that people commonly write these, but an example of this
1091 bool FoundFoo = false;
1092 for (unsigned I = 0, E = BarList.size(); I != E; ++I)
1093 if (BarList[I]->isFoo()) {
1102 Instead of this sort of loop, we prefer to use a predicate function (which may
1103 be `static`_) that uses `early exits`_:
1107 /// \returns true if the specified list has an element that is a foo.
1108 static bool containsFoo(const std::vector<Bar*> &List) {
1109 for (unsigned I = 0, E = List.size(); I != E; ++I)
1110 if (List[I]->isFoo())
1116 if (containsFoo(BarList)) {
1120 There are many reasons for doing this: it reduces indentation and factors out
1121 code which can often be shared by other code that checks for the same predicate.
1122 More importantly, it *forces you to pick a name* for the function, and forces
1123 you to write a comment for it. In this silly example, this doesn't add much
1124 value. However, if the condition is complex, this can make it a lot easier for
1125 the reader to understand the code that queries for this predicate. Instead of
1126 being faced with the in-line details of how we check to see if the BarList
1127 contains a foo, we can trust the function name and continue reading with better
1130 The Low-Level Issues
1131 --------------------
1133 Name Types, Functions, Variables, and Enumerators Properly
1134 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1136 Poorly-chosen names can mislead the reader and cause bugs. We cannot stress
1137 enough how important it is to use *descriptive* names. Pick names that match
1138 the semantics and role of the underlying entities, within reason. Avoid
1139 abbreviations unless they are well known. After picking a good name, make sure
1140 to use consistent capitalization for the name, as inconsistency requires clients
1141 to either memorize the APIs or to look it up to find the exact spelling.
1143 In general, names should be in camel case (e.g. ``TextFileReader`` and
1144 ``isLValue()``). Different kinds of declarations have different rules:
1146 * **Type names** (including classes, structs, enums, typedefs, etc) should be
1147 nouns and start with an upper-case letter (e.g. ``TextFileReader``).
1149 * **Variable names** should be nouns (as they represent state). The name should
1150 be camel case, and start with an upper case letter (e.g. ``Leader`` or
1153 * **Function names** should be verb phrases (as they represent actions), and
1154 command-like function should be imperative. The name should be camel case,
1155 and start with a lower case letter (e.g. ``openFile()`` or ``isFoo()``).
1157 * **Enum declarations** (e.g. ``enum Foo {...}``) are types, so they should
1158 follow the naming conventions for types. A common use for enums is as a
1159 discriminator for a union, or an indicator of a subclass. When an enum is
1160 used for something like this, it should have a ``Kind`` suffix
1161 (e.g. ``ValueKind``).
1163 * **Enumerators** (e.g. ``enum { Foo, Bar }``) and **public member variables**
1164 should start with an upper-case letter, just like types. Unless the
1165 enumerators are defined in their own small namespace or inside a class,
1166 enumerators should have a prefix corresponding to the enum declaration name.
1167 For example, ``enum ValueKind { ... };`` may contain enumerators like
1168 ``VK_Argument``, ``VK_BasicBlock``, etc. Enumerators that are just
1169 convenience constants are exempt from the requirement for a prefix. For
1179 As an exception, classes that mimic STL classes can have member names in STL's
1180 style of lower-case words separated by underscores (e.g. ``begin()``,
1181 ``push_back()``, and ``empty()``). Classes that provide multiple
1182 iterators should add a singular prefix to ``begin()`` and ``end()``
1183 (e.g. ``global_begin()`` and ``use_begin()``).
1185 Here are some examples:
1189 class VehicleMaker {
1191 Factory<Tire> F; // Avoid: a non-descriptive abbreviation.
1192 Factory<Tire> Factory; // Better: more descriptive.
1193 Factory<Tire> TireFactory; // Even better: if VehicleMaker has more than one
1194 // kind of factories.
1197 Vehicle makeVehicle(VehicleType Type) {
1198 VehicleMaker M; // Might be OK if scope is small.
1199 Tire Tmp1 = M.makeTire(); // Avoid: 'Tmp1' provides no information.
1200 Light Headlight = M.makeLight("head"); // Good: descriptive.
1207 Use the "``assert``" macro to its fullest. Check all of your preconditions and
1208 assumptions, you never know when a bug (not necessarily even yours) might be
1209 caught early by an assertion, which reduces debugging time dramatically. The
1210 "``<cassert>``" header file is probably already included by the header files you
1211 are using, so it doesn't cost anything to use it.
1213 To further assist with debugging, make sure to put some kind of error message in
1214 the assertion statement, which is printed if the assertion is tripped. This
1215 helps the poor debugger make sense of why an assertion is being made and
1216 enforced, and hopefully what to do about it. Here is one complete example:
1220 inline Value *getOperand(unsigned I) {
1221 assert(I < Operands.size() && "getOperand() out of range!");
1225 Here are more examples:
1229 assert(Ty->isPointerType() && "Can't allocate a non-pointer type!");
1231 assert((Opcode == Shl || Opcode == Shr) && "ShiftInst Opcode invalid!");
1233 assert(idx < getNumSuccessors() && "Successor # out of range!");
1235 assert(V1.getType() == V2.getType() && "Constant types must be identical!");
1237 assert(isa<PHINode>(Succ->front()) && "Only works on PHId BBs!");
1241 In the past, asserts were used to indicate a piece of code that should not be
1242 reached. These were typically of the form:
1246 assert(0 && "Invalid radix for integer literal");
1248 This has a few issues, the main one being that some compilers might not
1249 understand the assertion, or warn about a missing return in builds where
1250 assertions are compiled out.
1252 Today, we have something much better: ``llvm_unreachable``:
1256 llvm_unreachable("Invalid radix for integer literal");
1258 When assertions are enabled, this will print the message if it's ever reached
1259 and then exit the program. When assertions are disabled (i.e. in release
1260 builds), ``llvm_unreachable`` becomes a hint to compilers to skip generating
1261 code for this branch. If the compiler does not support this, it will fall back
1262 to the "abort" implementation.
1264 Use ``llvm_unreachable`` to mark a specific point in code that should never be
1265 reached. This is especially desirable for addressing warnings about unreachable
1266 branches, etc., but can be used whenever reaching a particular code path is
1267 unconditionally a bug (not originating from user input; see below) of some kind.
1268 Use of ``assert`` should always include a testable predicate (as opposed to
1271 If the error condition can be triggered by user input then the
1272 recoverable error mechanism described in :doc:`ProgrammersManual` should be
1273 used instead. In cases where this is not practical, ``report_fatal_error`` may
1276 Another issue is that values used only by assertions will produce an "unused
1277 value" warning when assertions are disabled. For example, this code will warn:
1281 unsigned Size = V.size();
1282 assert(Size > 42 && "Vector smaller than it should be");
1284 bool NewToSet = Myset.insert(Value);
1285 assert(NewToSet && "The value shouldn't be in the set yet");
1287 These are two interesting different cases. In the first case, the call to
1288 ``V.size()`` is only useful for the assert, and we don't want it executed when
1289 assertions are disabled. Code like this should move the call into the assert
1290 itself. In the second case, the side effects of the call must happen whether
1291 the assert is enabled or not. In this case, the value should be cast to void to
1292 disable the warning. To be specific, it is preferred to write the code like
1297 assert(V.size() > 42 && "Vector smaller than it should be");
1299 bool NewToSet = Myset.insert(Value); (void)NewToSet;
1300 assert(NewToSet && "The value shouldn't be in the set yet");
1302 Do Not Use ``using namespace std``
1303 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1305 In LLVM, we prefer to explicitly prefix all identifiers from the standard
1306 namespace with an "``std::``" prefix, rather than rely on "``using namespace
1309 In header files, adding a ``'using namespace XXX'`` directive pollutes the
1310 namespace of any source file that ``#include``\s the header, creating
1313 In implementation files (e.g. ``.cpp`` files), the rule is more of a stylistic
1314 rule, but is still important. Basically, using explicit namespace prefixes
1315 makes the code **clearer**, because it is immediately obvious what facilities
1316 are being used and where they are coming from. And **more portable**, because
1317 namespace clashes cannot occur between LLVM code and other namespaces. The
1318 portability rule is important because different standard library implementations
1319 expose different symbols (potentially ones they shouldn't), and future revisions
1320 to the C++ standard will add more symbols to the ``std`` namespace. As such, we
1321 never use ``'using namespace std;'`` in LLVM.
1323 The exception to the general rule (i.e. it's not an exception for the ``std``
1324 namespace) is for implementation files. For example, all of the code in the
1325 LLVM project implements code that lives in the 'llvm' namespace. As such, it is
1326 ok, and actually clearer, for the ``.cpp`` files to have a ``'using namespace
1327 llvm;'`` directive at the top, after the ``#include``\s. This reduces
1328 indentation in the body of the file for source editors that indent based on
1329 braces, and keeps the conceptual context cleaner. The general form of this rule
1330 is that any ``.cpp`` file that implements code in any namespace may use that
1331 namespace (and its parents'), but should not use any others.
1333 Provide a Virtual Method Anchor for Classes in Headers
1334 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1336 If a class is defined in a header file and has a vtable (either it has virtual
1337 methods or it derives from classes with virtual methods), it must always have at
1338 least one out-of-line virtual method in the class. Without this, the compiler
1339 will copy the vtable and RTTI into every ``.o`` file that ``#include``\s the
1340 header, bloating ``.o`` file sizes and increasing link times.
1342 Don't use default labels in fully covered switches over enumerations
1343 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1345 ``-Wswitch`` warns if a switch, without a default label, over an enumeration
1346 does not cover every enumeration value. If you write a default label on a fully
1347 covered switch over an enumeration then the ``-Wswitch`` warning won't fire
1348 when new elements are added to that enumeration. To help avoid adding these
1349 kinds of defaults, Clang has the warning ``-Wcovered-switch-default`` which is
1350 off by default but turned on when building LLVM with a version of Clang that
1351 supports the warning.
1353 A knock-on effect of this stylistic requirement is that when building LLVM with
1354 GCC you may get warnings related to "control may reach end of non-void function"
1355 if you return from each case of a covered switch-over-enum because GCC assumes
1356 that the enum expression may take any representable value, not just those of
1357 individual enumerators. To suppress this warning, use ``llvm_unreachable`` after
1360 Use range-based ``for`` loops wherever possible
1361 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1363 The introduction of range-based ``for`` loops in C++11 means that explicit
1364 manipulation of iterators is rarely necessary. We use range-based ``for``
1365 loops wherever possible for all newly added code. For example:
1369 BasicBlock *BB = ...
1370 for (Instruction &I : *BB)
1373 Usage of ``std::for_each()``/``llvm::for_each()`` functions is discouraged,
1374 unless the callable object already exists.
1376 Don't evaluate ``end()`` every time through a loop
1377 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1379 In cases where range-based ``for`` loops can't be used and it is necessary
1380 to write an explicit iterator-based loop, pay close attention to whether
1381 ``end()`` is re-evaluated on each loop iteration. One common mistake is to
1382 write a loop in this style:
1386 BasicBlock *BB = ...
1387 for (auto I = BB->begin(); I != BB->end(); ++I)
1390 The problem with this construct is that it evaluates "``BB->end()``" every time
1391 through the loop. Instead of writing the loop like this, we strongly prefer
1392 loops to be written so that they evaluate it once before the loop starts. A
1393 convenient way to do this is like so:
1397 BasicBlock *BB = ...
1398 for (auto I = BB->begin(), E = BB->end(); I != E; ++I)
1401 The observant may quickly point out that these two loops may have different
1402 semantics: if the container (a basic block in this case) is being mutated, then
1403 "``BB->end()``" may change its value every time through the loop and the second
1404 loop may not in fact be correct. If you actually do depend on this behavior,
1405 please write the loop in the first form and add a comment indicating that you
1406 did it intentionally.
1408 Why do we prefer the second form (when correct)? Writing the loop in the first
1409 form has two problems. First it may be less efficient than evaluating it at the
1410 start of the loop. In this case, the cost is probably minor --- a few extra
1411 loads every time through the loop. However, if the base expression is more
1412 complex, then the cost can rise quickly. I've seen loops where the end
1413 expression was actually something like: "``SomeMap[X]->end()``" and map lookups
1414 really aren't cheap. By writing it in the second form consistently, you
1415 eliminate the issue entirely and don't even have to think about it.
1417 The second (even bigger) issue is that writing the loop in the first form hints
1418 to the reader that the loop is mutating the container (a fact that a comment
1419 would handily confirm!). If you write the loop in the second form, it is
1420 immediately obvious without even looking at the body of the loop that the
1421 container isn't being modified, which makes it easier to read the code and
1422 understand what it does.
1424 While the second form of the loop is a few extra keystrokes, we do strongly
1427 ``#include <iostream>`` is Forbidden
1428 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1430 The use of ``#include <iostream>`` in library files is hereby **forbidden**,
1431 because many common implementations transparently inject a `static constructor`_
1432 into every translation unit that includes it.
1434 Note that using the other stream headers (``<sstream>`` for example) is not
1435 problematic in this regard --- just ``<iostream>``. However, ``raw_ostream``
1436 provides various APIs that are better performing for almost every use than
1437 ``std::ostream`` style APIs.
1441 New code should always use `raw_ostream`_ for writing, or the
1442 ``llvm::MemoryBuffer`` API for reading files.
1449 LLVM includes a lightweight, simple, and efficient stream implementation in
1450 ``llvm/Support/raw_ostream.h``, which provides all of the common features of
1451 ``std::ostream``. All new code should use ``raw_ostream`` instead of
1454 Unlike ``std::ostream``, ``raw_ostream`` is not a template and can be forward
1455 declared as ``class raw_ostream``. Public headers should generally not include
1456 the ``raw_ostream`` header, but use forward declarations and constant references
1457 to ``raw_ostream`` instances.
1462 The ``std::endl`` modifier, when used with ``iostreams`` outputs a newline to
1463 the output stream specified. In addition to doing this, however, it also
1464 flushes the output stream. In other words, these are equivalent:
1468 std::cout << std::endl;
1469 std::cout << '\n' << std::flush;
1471 Most of the time, you probably have no reason to flush the output stream, so
1472 it's better to use a literal ``'\n'``.
1474 Don't use ``inline`` when defining a function in a class definition
1475 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1477 A member function defined in a class definition is implicitly inline, so don't
1478 put the ``inline`` keyword in this case.
1505 This section describes preferred low-level formatting guidelines along with
1506 reasoning on why we prefer them.
1508 Spaces Before Parentheses
1509 ^^^^^^^^^^^^^^^^^^^^^^^^^
1511 Put a space before an open parenthesis only in control flow statements, but not
1512 in normal function call expressions and function-like macros. For example:
1517 for (I = 0; I != 100; ++I) ...
1518 while (LLVMRocks) ...
1521 assert(3 != 4 && "laws of math are failing me");
1523 A = foo(42, 92) + bar(X);
1525 The reason for doing this is not completely arbitrary. This style makes control
1526 flow operators stand out more, and makes expressions flow better.
1531 Hard fast rule: Preincrement (``++X``) may be no slower than postincrement
1532 (``X++``) and could very well be a lot faster than it. Use preincrementation
1535 The semantics of postincrement include making a copy of the value being
1536 incremented, returning it, and then preincrementing the "work value". For
1537 primitive types, this isn't a big deal. But for iterators, it can be a huge
1538 issue (for example, some iterators contains stack and set objects in them...
1539 copying an iterator could invoke the copy ctor's of these as well). In general,
1540 get in the habit of always using preincrement, and you won't have a problem.
1543 Namespace Indentation
1544 ^^^^^^^^^^^^^^^^^^^^^
1546 In general, we strive to reduce indentation wherever possible. This is useful
1547 because we want code to `fit into 80 columns`_ without excessive wrapping, but
1548 also because it makes it easier to understand the code. To facilitate this and
1549 avoid some insanely deep nesting on occasion, don't indent namespaces. If it
1550 helps readability, feel free to add a comment indicating what namespace is
1551 being closed by a ``}``. For example:
1556 namespace knowledge {
1558 /// This class represents things that Smith can have an intimate
1559 /// understanding of and contains the data associated with it.
1563 explicit Grokable() { ... }
1564 virtual ~Grokable() = 0;
1570 } // namespace knowledge
1574 Feel free to skip the closing comment when the namespace being closed is
1575 obvious for any reason. For example, the outer-most namespace in a header file
1576 is rarely a source of confusion. But namespaces both anonymous and named in
1577 source files that are being closed half way through the file probably could use
1582 Anonymous Namespaces
1583 ^^^^^^^^^^^^^^^^^^^^
1585 After talking about namespaces in general, you may be wondering about anonymous
1586 namespaces in particular. Anonymous namespaces are a great language feature
1587 that tells the C++ compiler that the contents of the namespace are only visible
1588 within the current translation unit, allowing more aggressive optimization and
1589 eliminating the possibility of symbol name collisions. Anonymous namespaces are
1590 to C++ as "static" is to C functions and global variables. While "``static``"
1591 is available in C++, anonymous namespaces are more general: they can make entire
1592 classes private to a file.
1594 The problem with anonymous namespaces is that they naturally want to encourage
1595 indentation of their body, and they reduce locality of reference: if you see a
1596 random function definition in a C++ file, it is easy to see if it is marked
1597 static, but seeing if it is in an anonymous namespace requires scanning a big
1600 Because of this, we have a simple guideline: make anonymous namespaces as small
1601 as possible, and only use them for class declarations. For example:
1610 bool operator<(const char *RHS) const;
1614 static void runHelper() {
1618 bool StringSort::operator<(const char *RHS) const {
1622 Avoid putting declarations other than classes into anonymous namespaces:
1628 // ... many declarations ...
1634 // ... many declarations ...
1638 When you are looking at "``runHelper``" in the middle of a large C++ file,
1639 you have no immediate way to tell if this function is local to the file. In
1640 contrast, when the function is marked static, you don't need to cross-reference
1641 faraway places in the file to tell that the function is local.
1643 Don't Use Braces on Simple Single-Statement Bodies of if/else/loop Statements
1644 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1646 When writing the body of an ``if``, ``else``, or for/while loop statement, we
1647 prefer to omit the braces to avoid unnecessary line noise. However, braces
1648 should be used in cases where the omission of braces harm the readability and
1649 maintainability of the code.
1651 We consider that readability is harmed when omitting the brace in the presence
1652 of a single statement that is accompanied by a comment (assuming the comment
1653 can't be hoisted above the ``if`` or loop statement, see below).
1655 Similarly, braces should be used when a single-statement body is complex enough
1656 that it becomes difficult to see where the block containing the following
1657 statement began. An ``if``/``else`` chain or a loop is considered a single
1658 statement for this rule, and this rule applies recursively.
1660 This list is not exhaustive. For example, readability is also harmed if an
1661 ``if``/``else`` chain does not use braced bodies for either all or none of its
1662 members, or has complex conditionals, deep nesting, etc. The examples below
1663 intend to provide some guidelines.
1665 Maintainability is harmed if the body of an ``if`` ends with a (directly or
1666 indirectly) nested ``if`` statement with no ``else``. Braces on the outer ``if``
1667 would help to avoid running into a "dangling else" situation.
1672 // Omit the braces since the body is simple and clearly associated with the
1674 if (isa<FunctionDecl>(D))
1675 handleFunctionDecl(D);
1676 else if (isa<VarDecl>(D))
1679 // Here we document the condition itself and not the body.
1680 if (isa<VarDecl>(D)) {
1681 // It is necessary that we explain the situation with this surprisingly long
1682 // comment, so it would be unclear without the braces whether the following
1683 // statement is in the scope of the `if`.
1684 // Because the condition is documented, we can't really hoist this
1685 // comment that applies to the body above the `if`.
1689 // Use braces on the outer `if` to avoid a potential dangling `else`
1691 if (isa<VarDecl>(D)) {
1692 if (shouldProcessAttr(A))
1696 // Use braces for the `if` block to keep it uniform with the `else` block.
1697 if (isa<FunctionDecl>(D)) {
1698 handleFunctionDecl(D);
1700 // In this `else` case, it is necessary that we explain the situation with
1701 // this surprisingly long comment, so it would be unclear without the braces
1702 // whether the following statement is in the scope of the `if`.
1706 // Use braces for the `else if` and `else` block to keep it uniform with the
1708 if (isa<FunctionDecl>(D)) {
1709 verifyFunctionDecl(D);
1710 handleFunctionDecl(D);
1711 } else if (isa<GlobalVarDecl>(D)) {
1712 handleGlobalVarDecl(D);
1717 // This should also omit braces. The `for` loop contains only a single
1718 // statement, so it shouldn't have braces. The `if` also only contains a
1719 // single simple statement (the `for` loop), so it also should omit braces.
1720 if (isa<FunctionDecl>(D))
1721 for (auto *A : D.attrs())
1724 // Use braces for a `do-while` loop and its enclosing statement.
1725 if (Tok->is(tok::l_brace)) {
1731 // Use braces for the outer `if` since the nested `for` is braced.
1732 if (isa<FunctionDecl>(D)) {
1733 for (auto *A : D.attrs()) {
1734 // In this `for` loop body, it is necessary that we explain the situation
1735 // with this surprisingly long comment, forcing braces on the `for` block.
1740 // Use braces on the outer block because there are more than two levels of
1742 if (isa<FunctionDecl>(D)) {
1743 for (auto *A : D.attrs())
1744 for (ssize_t i : llvm::seq<ssize_t>(count))
1745 handleAttrOnDecl(D, A, i);
1748 // Use braces on the outer block because of a nested `if`; otherwise the
1749 // compiler would warn: `add explicit braces to avoid dangling else`
1750 if (auto *D = dyn_cast<FunctionDecl>(D)) {
1751 if (shouldProcess(D))
1761 A lot of these comments and recommendations have been culled from other sources.
1762 Two particularly important books for our work are:
1765 <https://www.amazon.com/Effective-Specific-Addison-Wesley-Professional-Computing/dp/0321334876>`_
1766 by Scott Meyers. Also interesting and useful are "More Effective C++" and
1767 "Effective STL" by the same author.
1769 #. `Large-Scale C++ Software Design
1770 <https://www.amazon.com/Large-Scale-Software-Design-John-Lakos/dp/0201633620>`_
1773 If you get some free time, and you haven't read them: do so, you might learn