Index: llvm/trunk/docs/CodingStandards.rst =================================================================== --- llvm/trunk/docs/CodingStandards.rst +++ llvm/trunk/docs/CodingStandards.rst @@ -453,7 +453,7 @@ #. Main Module Header #. Local/Private Headers -#. ``llvm/...`` +#. LLVM project/subproject headers (``clang/...``, ``lldb/...``, ``llvm/...``, etc) #. System ``#include``\s and each category should be sorted lexicographically by the full path. @@ -466,6 +466,16 @@ ``#include``\d in the header, but should be. It is also a form of documentation in the ``.cpp`` file to indicate where the interfaces it implements are defined. +LLVM project and subproject headers should be grouped from most specific to least +specific, for the same reasons described above. For example, LLDB depends on +both clang and LLVM, and clang depends on LLVM. So an LLDB source file should +include ``lldb`` headers first, followed by ``clang`` headers, followed by +``llvm`` headers, to reduce the possibility (for example) of an LLDB header +accidentally picking up a missing include due to the previous inclusion of that +header in the main source file or some earlier header file. clang should +similarly include its own headers before including llvm headers. This rule +applies to all LLVM subprojects. + .. _fit into 80 columns: Source Code Width