<html>
<head>
  <title>Precompiled Headers (PCH)</title>
  <link type="text/css" rel="stylesheet" href="../menu.css" />
  <link type="text/css" rel="stylesheet" href="../content.css" />
  <style type="text/css">
    td {
    vertical-align: top;
    }
  </style>
</head>

<body>

<!--#include virtual="../menu.html.incl"-->

<div id="content">

<h1>Precompiled Headers</h1>

  <p>This document describes the design and implementation of Clang's
  precompiled headers (PCH). If you are interested in the end-user
  view, please see the <a
   href="UsersManual.html#precompiledheaders">User's Manual</a>.</p>

  <p><b>Table of Contents</b></p>
  <ul>
    <li><a href="#usage">Using Precompiled Headers with
    <tt>clang</tt></a></li>
    <li><a href="#philosophy">Design Philosophy</a></li>
    <li><a href="#contents">Precompiled Header Contents</a>
      <ul>
        <li><a href="#metadata">Metadata Block</a></li>
        <li><a href="#sourcemgr">Source Manager Block</a></li>
        <li><a href="#preprocessor">Preprocessor Block</a></li>
        <li><a href="#types">Types Block</a></li>
        <li><a href="#decls">Declarations Block</a></li>
        <li><a href="#stmt">Statements and Expressions</a></li>
        <li><a href="#idtable">Identifier Table Block</a></li>
        <li><a href="#method-pool">Method Pool Block</a></li>
      </ul>
    </li>
    <li><a href="#tendrils">Precompiled Header Integration
    Points</a></li>
</ul>
    
<h2 id="usage">Using Precompiled Headers with <tt>clang</tt></h2>

<p>The Clang compiler frontend, <tt>clang -cc1</tt>, supports two command line
options for generating and using PCH files.<p>

<p>To generate PCH files using <tt>clang -cc1</tt>, use the option
<b><tt>-emit-pch</tt></b>:

<pre> $ clang -cc1 test.h -emit-pch -o test.h.pch </pre>

<p>This option is transparently used by <tt>clang</tt> when generating
PCH files. The resulting PCH file contains the serialized form of the
compiler's internal representation after it has completed parsing and
semantic analysis. The PCH file can then be used as a prefix header
with the <b><tt>-include-pch</tt></b> option:</p>

<pre>
  $ clang -cc1 -include-pch test.h.pch test.c -o test.s
</pre>

<h2 id="philosophy">Design Philosophy</h2>
  
<p>Precompiled headers are meant to improve overall compile times for
  projects, so the design of precompiled headers is entirely driven by
  performance concerns. The use case for precompiled headers is
  relatively simple: when there is a common set of headers that is
  included in nearly every source file in the project, we
  <i>precompile</i> that bundle of headers into a single precompiled
  header (PCH file). Then, when compiling the source files in the
  project, we load the PCH file first (as a prefix header), which acts
  as a stand-in for that bundle of headers.</p>

<p>A precompiled header implementation improves performance when:</p>
<ul>
  <li>Loading the PCH file is significantly faster than re-parsing the
  bundle of headers stored within the PCH file. Thus, a precompiled
  header design attempts to minimize the cost of reading the PCH
  file. Ideally, this cost should not vary with the size of the
  precompiled header file.</li>
  
  <li>The cost of generating the PCH file initially is not so large
  that it counters the per-source-file performance improvement due to
  eliminating the need to parse the bundled headers in the first
  place. This is particularly important on multi-core systems, because
  PCH file generation serializes the build when all compilations
  require the PCH file to be up-to-date.</li>
</ul>

<p>Clang's precompiled headers are designed with a compact on-disk
representation, which minimizes both PCH creation time and the time
required to initially load the PCH file. The PCH file itself contains
a serialized representation of Clang's abstract syntax trees and
supporting data structures, stored using the same compressed bitstream
as <a href="http://llvm.org/docs/BitCodeFormat.html">LLVM's bitcode
file format</a>.</p>

<p>Clang's precompiled headers are loaded "lazily" from disk. When a
PCH file is initially loaded, Clang reads only a small amount of data
from the PCH file to establish where certain important data structures
are stored. The amount of data read in this initial load is
independent of the size of the PCH file, such that a larger PCH file
does not lead to longer PCH load times. The actual header data in the
PCH file--macros, functions, variables, types, etc.--is loaded only
when it is referenced from the user's code, at which point only that
entity (and those entities it depends on) are deserialized from the
PCH file. With this approach, the cost of using a precompiled header
for a translation unit is proportional to the amount of code actually
used from the header, rather than being proportional to the size of
the header itself.</p> 

<p>When given the <code>-print-stats</code> option, Clang produces
statistics describing how much of the precompiled header was actually
loaded from disk. For a simple "Hello, World!" program that includes
the Apple <code>Cocoa.h</code> header (which is built as a precompiled
header), this option illustrates how little of the actual precompiled
header is required:</p>

<pre>
*** PCH Statistics:
  933 stat cache hits
  4 stat cache misses
  895/39981 source location entries read (2.238563%)
  19/15315 types read (0.124061%)
  20/82685 declarations read (0.024188%)
  154/58070 identifiers read (0.265197%)
  0/7260 selectors read (0.000000%)
  0/30842 statements read (0.000000%)
  4/8400 macros read (0.047619%)
  1/4995 lexical declcontexts read (0.020020%)
  0/4413 visible declcontexts read (0.000000%)
  0/7230 method pool entries read (0.000000%)
  0 method pool misses
</pre>

<p>For this small program, only a tiny fraction of the source
locations, types, declarations, identifiers, and macros were actually
deserialized from the precompiled header. These statistics can be
useful to determine whether the precompiled header implementation can
be improved by making more of the implementation lazy.</p>

<p>Precompiled headers can be chained. When you create a PCH while
including an existing PCH, Clang can create the new PCH by referencing
the original file and only writing the new data to the new file. For
example, you could create a PCH out of all the headers that are very
commonly used throughout your project, and then create a PCH for every
single source file in the project that includes the code that is
specific to that file, so that recompiling the file itself is very fast,
without duplicating the data from the common headers for every file.</p>

<h2 id="contents">Precompiled Header Contents</h2>

<img src="PCHLayout.png" align="right" alt="Precompiled header layout">

<p>Clang's precompiled headers are organized into several different
blocks, each of which contains the serialized representation of a part
of Clang's internal representation. Each of the blocks corresponds to
either a block or a record within <a
 href="http://llvm.org/docs/BitCodeFormat.html">LLVM's bitstream
format</a>. The contents of each of these logical blocks are described
below.</p>

<p>For a given precompiled header, the <a
href="http://llvm.org/cmds/llvm-bcanalyzer.html"><code>llvm-bcanalyzer</code></a>
utility can be used to examine the actual structure of the bitstream
for the precompiled header. This information can be used both to help
understand the structure of the precompiled header and to isolate
areas where precompiled headers can still be optimized, e.g., through
the introduction of abbreviations.</p>

<h3 id="metadata">Metadata Block</h3>

<p>The metadata block contains several records that provide
information about how the precompiled header was built. This metadata
is primarily used to validate the use of a precompiled header. For
example, a precompiled header built for a 32-bit x86 target cannot be used
when compiling for a 64-bit x86 target. The metadata block contains
information about:</p>

<dl>
  <dt>Language options</dt>
  <dd>Describes the particular language dialect used to compile the
PCH file, including major options (e.g., Objective-C support) and more
minor options (e.g., support for "//" comments). The contents of this
record correspond to the <code>LangOptions</code> class.</dd>
  
  <dt>Target architecture</dt>
  <dd>The target triple that describes the architecture, platform, and
ABI for which the PCH file was generated, e.g.,
<code>i386-apple-darwin9</code>.</dd>
  
  <dt>PCH version</dt>
  <dd>The major and minor version numbers of the precompiled header
format. Changes in the minor version number should not affect backward
compatibility, while changes in the major version number imply that a
newer compiler cannot read an older precompiled header (and
vice-versa).</dd>

  <dt>Original file name</dt>
  <dd>The full path of the header that was used to generate the
precompiled header.</dd>

  <dt>Predefines buffer</dt>
  <dd>Although not explicitly stored as part of the metadata, the
predefines buffer is used in the validation of the precompiled header.
The predefines buffer itself contains code generated by the compiler
to initialize the preprocessor state according to the current target,
platform, and command-line options. For example, the predefines buffer
will contain "<code>#define __STDC__ 1</code>" when we are compiling C
without Microsoft extensions. The predefines buffer itself is stored
within the <a href="#sourcemgr">source manager block</a>, but its
contents are verified along with the rest of the metadata.</dd>

</dl>

<p>A chained PCH file (that is, one that references another PCH) has
a slightly different metadata block, which contains the following
information:</p>

<dl>
  <dt>Referenced file</dt>
  <dd>The name of the referenced PCH file. It is looked up like a file
specified using -include-pch.</dd>

  <dt>PCH version</dt>
  <dd>This is the same as in normal PCH files.</dd>

  <dt>Original file name</dt>
  <dd>The full path of the header that was used to generate this
precompiled header.</dd>

</dl>

<p>The language options, target architecture and predefines buffer data
is taken from the end of the chain, since they have to match anyway.</p>

<h3 id="sourcemgr">Source Manager Block</h3>

<p>The source manager block contains the serialized representation of
Clang's <a
 href="InternalsManual.html#SourceLocation">SourceManager</a> class,
which handles the mapping from source locations (as represented in
Clang's abstract syntax tree) into actual column/line positions within
a source file or macro instantiation. The precompiled header's
representation of the source manager also includes information about
all of the headers that were (transitively) included when building the
precompiled header.</p>

<p>The bulk of the source manager block is dedicated to information
about the various files, buffers, and macro instantiations into which
a source location can refer. Each of these is referenced by a numeric
"file ID", which is a unique number (allocated starting at 1) stored
in the source location. Clang serializes the information for each kind
of file ID, along with an index that maps file IDs to the position
within the PCH file where the information about that file ID is
stored. The data associated with a file ID is loaded only when
required by the front end, e.g., to emit a diagnostic that includes a
macro instantiation history inside the header itself.</p>

<p>The source manager block also contains information about all of the
headers that were included when building the precompiled header. This
includes information about the controlling macro for the header (e.g.,
when the preprocessor identified that the contents of the header
dependent on a macro like <code>LLVM_CLANG_SOURCEMANAGER_H</code>)
along with a cached version of the results of the <code>stat()</code>
system calls performed when building the precompiled header. The
latter is particularly useful in reducing system time when searching
for include files.</p>

<h3 id="preprocessor">Preprocessor Block</h3>

<p>The preprocessor block contains the serialized representation of
the preprocessor. Specifically, it contains all of the macros that
have been defined by the end of the header used to build the
precompiled header, along with the token sequences that comprise each
macro. The macro definitions are only read from the PCH file when the
name of the macro first occurs in the program. This lazy loading of
macro definitions is triggered by lookups into the <a
 href="#idtable">identifier table</a>.</p>

<h3 id="types">Types Block</h3>

<p>The types block contains the serialized representation of all of
the types referenced in the translation unit. Each Clang type node
(<code>PointerType</code>, <code>FunctionProtoType</code>, etc.) has a
corresponding record type in the PCH file. When types are deserialized
from the precompiled header, the data within the record is used to
reconstruct the appropriate type node using the AST context.</p>

<p>Each type has a unique type ID, which is an integer that uniquely
identifies that type. Type ID 0 represents the NULL type, type IDs
less than <code>NUM_PREDEF_TYPE_IDS</code> represent predefined types
(<code>void</code>, <code>float</code>, etc.), while other
"user-defined" type IDs are assigned consecutively from
<code>NUM_PREDEF_TYPE_IDS</code> upward as the types are encountered.
The PCH file has an associated mapping from the user-defined types
block to the location within the types block where the serialized
representation of that type resides, enabling lazy deserialization of
types. When a type is referenced from within the PCH file, that
reference is encoded using the type ID shifted left by 3 bits. The
lower three bits are used to represent the <code>const</code>,
<code>volatile</code>, and <code>restrict</code> qualifiers, as in
Clang's <a
 href="http://clang.llvm.org/docs/InternalsManual.html#Type">QualType</a>
class.</p>

<h3 id="decls">Declarations Block</h3>

<p>The declarations block contains the serialized representation of
all of the declarations referenced in the translation unit. Each Clang
declaration node (<code>VarDecl</code>, <code>FunctionDecl</code>,
etc.) has a corresponding record type in the PCH file. When
declarations are deserialized from the precompiled header, the data
within the record is used to build and populate a new instance of the
corresponding <code>Decl</code> node. As with types, each declaration
node has a numeric ID that is used to refer to that declaration within
the PCH file. In addition, a lookup table provides a mapping from that
numeric ID to the offset within the precompiled header where that
declaration is described.</p>

<p>Declarations in Clang's abstract syntax trees are stored
hierarchically. At the top of the hierarchy is the translation unit
(<code>TranslationUnitDecl</code>), which contains all of the
declarations in the translation unit. These declarations (such as
functions or struct types) may also contain other declarations inside
them, and so on. Within Clang, each declaration is stored within a <a
href="http://clang.llvm.org/docs/InternalsManual.html#DeclContext">declaration
context</a>, as represented by the <code>DeclContext</code> class.
Declaration contexts provide the mechanism to perform name lookup
within a given declaration (e.g., find the member named <code>x</code>
in a structure) and iterate over the declarations stored within a
context (e.g., iterate over all of the fields of a structure for
structure layout).</p>

<p>In Clang's precompiled header format, deserializing a declaration
that is a <code>DeclContext</code> is a separate operation from
deserializing all of the declarations stored within that declaration
context. Therefore, Clang will deserialize the translation unit
declaration without deserializing the declarations within that
translation unit. When required, the declarations stored within a
declaration context will be deserialized. There are two representations
of the declarations within a declaration context, which correspond to
the name-lookup and iteration behavior described above:</p>

<ul>
  <li>When the front end performs name lookup to find a name
  <code>x</code> within a given declaration context (for example,
  during semantic analysis of the expression <code>p-&gt;x</code>,
  where <code>p</code>'s type is defined in the precompiled header),
  Clang deserializes a hash table mapping from the names within that
  declaration context to the declaration IDs that represent each
  visible declaration with that name. The entire hash table is
  deserialized at this point (into the <code>llvm::DenseMap</code>
  stored within each <code>DeclContext</code> object), but the actual
  declarations are not yet deserialized. In a second step, those
  declarations with the name <code>x</code> will be deserialized and
  will be used as the result of name lookup.</li>

  <li>When the front end performs iteration over all of the
  declarations within a declaration context, all of those declarations
  are immediately de-serialized. For large declaration contexts (e.g.,
  the translation unit), this operation is expensive; however, large
  declaration contexts are not traversed in normal compilation, since
  such a traversal is unnecessary. However, it is common for the code
  generator and semantic analysis to traverse declaration contexts for
  structs, classes, unions, and enumerations, although those contexts
  contain relatively few declarations in the common case.</li>
</ul>

<h3 id="stmt">Statements and Expressions</h3>

<p>Statements and expressions are stored in the precompiled header in
both the <a href="#types">types</a> and the <a
 href="#decls">declarations</a> blocks, because every statement or
expression will be associated with either a type or declaration. The
actual statement and expression records are stored immediately
following the declaration or type that owns the statement or
expression. For example, the statement representing the body of a
function will be stored directly following the declaration of the
function.</p>

<p>As with types and declarations, each statement and expression kind
in Clang's abstract syntax tree (<code>ForStmt</code>,
<code>CallExpr</code>, etc.) has a corresponding record type in the
precompiled header, which contains the serialized representation of
that statement or expression. Each substatement or subexpression
within an expression is stored as a separate record (which keeps most
records to a fixed size). Within the precompiled header, the
subexpressions of an expression are stored prior to the expression
that owns those expression, using a form of <a
href="http://en.wikipedia.org/wiki/Reverse_Polish_notation">Reverse
Polish Notation</a>. For example, an expression <code>3 - 4 + 5</code>
would be represented as follows:</p>

<table border="1">
  <tr><td><code>IntegerLiteral(3)</code></td></tr>
  <tr><td><code>IntegerLiteral(4)</code></td></tr>
  <tr><td><code>BinaryOperator(-)</code></td></tr>
  <tr><td><code>IntegerLiteral(5)</code></td></tr>
  <tr><td><code>BinaryOperator(+)</code></td></tr>
  <tr><td>STOP</td></tr>
</table>

<p>When reading this representation, Clang evaluates each expression
record it encounters, builds the appropriate abstract synax tree node,
and then pushes that expression on to a stack. When a record contains <i>N</i>
subexpressions--<code>BinaryOperator</code> has two of them--those
expressions are popped from the top of the stack. The special STOP
code indicates that we have reached the end of a serialized expression
or statement; other expression or statement records may follow, but
they are part of a different expression.</p>

<h3 id="idtable">Identifier Table Block</h3>

<p>The identifier table block contains an on-disk hash table that maps
each identifier mentioned within the precompiled header to the
serialized representation of the identifier's information (e.g, the
<code>IdentifierInfo</code> structure). The serialized representation
contains:</p>

<ul>
  <li>The actual identifier string.</li>
  <li>Flags that describe whether this identifier is the name of a
  built-in, a poisoned identifier, an extension token, or a
  macro.</li>
  <li>If the identifier names a macro, the offset of the macro
  definition within the <a href="#preprocessor">preprocessor
  block</a>.</li>
  <li>If the identifier names one or more declarations visible from
  translation unit scope, the <a href="#decls">declaration IDs</a> of these
  declarations.</li>
</ul>

<p>When a precompiled header is loaded, the precompiled header
mechanism introduces itself into the identifier table as an external
lookup source. Thus, when the user program refers to an identifier
that has not yet been seen, Clang will perform a lookup into the
identifier table. If an identifier is found, its contents (macro 
definitions, flags, top-level declarations, etc.) will be deserialized, at which point the corresponding <code>IdentifierInfo</code> structure will have the same contents it would have after parsing the headers in the precompiled header.</p>

<p>Within the PCH file, the identifiers used to name declarations are represented with an integral value. A separate table provides a mapping from this integral value (the identifier ID) to the location within the on-disk
hash table where that identifier is stored. This mapping is used when
deserializing the name of a declaration, the identifier of a token, or
any other construct in the PCH file that refers to a name.</p>

<h3 id="method-pool">Method Pool Block</h3>

<p>The method pool block is represented as an on-disk hash table that
serves two purposes: it provides a mapping from the names of
Objective-C selectors to the set of Objective-C instance and class
methods that have that particular selector (which is required for
semantic analysis in Objective-C) and also stores all of the selectors
used by entities within the precompiled header. The design of the
method pool is similar to that of the <a href="#idtable">identifier
table</a>: the first time a particular selector is formed during the
compilation of the program, Clang will search in the on-disk hash
table of selectors; if found, Clang will read the Objective-C methods
associated with that selector into the appropriate front-end data
structure (<code>Sema::InstanceMethodPool</code> and
<code>Sema::FactoryMethodPool</code> for instance and class methods,
respectively).</p>

<p>As with identifiers, selectors are represented by numeric values
within the PCH file. A separate index maps these numeric selector
values to the offset of the selector within the on-disk hash table,
and will be used when de-serializing an Objective-C method declaration
(or other Objective-C construct) that refers to the selector.</p>

<h2 id="tendrils">Precompiled Header Integration Points</h2>

<p>The "lazy" deserialization behavior of precompiled headers requires
their integration into several completely different submodules of
Clang. For example, lazily deserializing the declarations during name
lookup requires that the name-lookup routines be able to query the
precompiled header to find entities within the PCH file.</p>

<p>For each Clang data structure that requires direct interaction with
the precompiled header logic, there is an abstract class that provides
the interface between the two modules. The <code>PCHReader</code>
class, which handles the loading of a precompiled header, inherits
from all of these abstract classes to provide lazy deserialization of
Clang's data structures. <code>PCHReader</code> implements the
following abstract classes:</p>

<dl>
  <dt><code>StatSysCallCache</code></dt>
  <dd>This abstract interface is associated with the
    <code>FileManager</code> class, and is used whenever the file
    manager is going to perform a <code>stat()</code> system call.</dd>
    
  <dt><code>ExternalSLocEntrySource</code></dt>
  <dd>This abstract interface is associated with the
    <code>SourceManager</code> class, and is used whenever the
    <a href="#sourcemgr">source manager</a> needs to load the details
    of a file, buffer, or macro instantiation.</dd>

  <dt><code>IdentifierInfoLookup</code></dt>
  <dd>This abstract interface is associated with the
    <code>IdentifierTable</code> class, and is used whenever the
    program source refers to an identifier that has not yet been seen.
    In this case, the precompiled header implementation searches for
    this identifier within its <a href="#idtable">identifier table</a>
    to load any top-level declarations or macros associated with that
    identifier.</dd>

  <dt><code>ExternalASTSource</code></dt>
  <dd>This abstract interface is associated with the
    <code>ASTContext</code> class, and is used whenever the abstract
    syntax tree nodes need to loaded from the precompiled header. It
    provides the ability to de-serialize declarations and types
    identified by their numeric values, read the bodies of functions
    when required, and read the declarations stored within a
    declaration context (either for iteration or for name lookup).</dd>
    
  <dt><code>ExternalSemaSource</code></dt>
  <dd>This abstract interface is associated with the <code>Sema</code>
    class, and is used whenever semantic analysis needs to read
    information from the <a href="#methodpool">global method
    pool</a>.</dd>
</dl>

</div>

</body>
</html>
