<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On May 19, 2009, at 5:19 PM, Eli Friedman wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">On Tue, May 19, 2009 at 5:16 PM, Douglas Gregor <<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>> wrote:<br><blockquote type="cite">-<p>Clang's current implementation of precompiled headers, known as PTH, is<br></blockquote><blockquote type="cite">-documented <a href="PTHInternals.html">here</a>.</p><br></blockquote><blockquote type="cite">+<p>Clang supports two implementations of precompiled headers. The<br></blockquote><blockquote type="cite">+   default implementation, precompiled headers (<a<br></blockquote><blockquote type="cite">+    href="PCHInternals.html">PCH</a>) uses a serialized representation<br></blockquote><blockquote type="cite">+   of Clang's internal data structures, encoded with the <a<br></blockquote><blockquote type="cite">+    href="<a href="http://llvm.org/docs/BitCodeFormat.html">http://llvm.org/docs/BitCodeFormat.html</a>">LLVM bitstream<br></blockquote><blockquote type="cite">+   format</a>. Pretokenized headers (<a<br></blockquote><blockquote type="cite">+    href="PTHInternals.html">PTH</a>), on the other hand, contain a<br></blockquote><blockquote type="cite">+   serialized representation of the tokens encountered when<br></blockquote><blockquote type="cite">+   preprocessing a header (and anything that header includes).</p><br></blockquote><br>Long-term, are we planning to keep around PTH, or discard it as a<br>failed experiment?  Or has it not been discussed yet?<br></span></blockquote></div><br><div>The offline discussion that we have had so far is that there is potential value in their coexistence.  For example, PTH can be used to cache the headers for an entire system in an architecture-independent. language-independent way (i.e., same PTH headers for C, Objective-C, and C++), which can be leveraged when generating PCH files specific to a given project.</div></body></html>