[www-releases] r225843 - Add documentation for 3.5.1

Tom Stellard thomas.stellard at amd.com
Tue Jan 13 14:55:45 PST 2015


Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,262 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: PPConditionalDirectiveRecord.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li><li class="navelem"><a class="el" href="dir_c266f83cbdf5b0cb8b651438a3cfe616.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">PPConditionalDirectiveRecord.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="PPConditionalDirectiveRecord_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/PPConditionalDirectiveRecord.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/PPConditionalDirectiveRecord.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  PPConditionalDirectiveRecord.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPConditionalDirectiveRecord.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/include/llvm/Support/Capacity.h</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPConditionalDirectiveRecord.h:</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h:</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h:</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h:</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h:</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h:</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> /home/tstellar/llvm/include/llvm/Support/Capacity.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:51 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPConditionalDirectiveRecord_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: PPConditionalDirectiveRecord.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_49bfb562b5f2c4dac4f33842ea680dda.html">Lex</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">PPConditionalDirectiveRecord.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="PPConditionalDirectiveRecord_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- PPConditionalDirectiveRecord.h - Preprocessing Directives-*- C++ -*-=//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the PPConditionalDirectiveRecord class, which maintains</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  a record of conditional directive regions.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#ifndef LLVM_CLANG_LEX_PPCONDITIONALDIRECTIVERECORD_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_LEX_PPCONDITIONALDIRECTIVERECORD_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="SourceLocation_8h.html" title="Defines the clang::SourceLocation class and associated facilities.">clang/Basic/SourceLocation.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="PPCallbacks_8h.html" title="Defines the PPCallbacks interface.">clang/Lex/PPCallbacks.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "llvm/ADT/SmallVector.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">/// \brief Records preprocessor conditional directive regions and allows</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/// querying in which region source locations belong to.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html">   26</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html" title="Records preprocessor conditional directive regions and allows querying in which region source locatio...">PPConditionalDirectiveRecord</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1PPCallbacks.html" title="This interface provides a way to observe the actions of the preprocessor as it does its thing...">PPCallbacks</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SourceMgr;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SourceLocation, 6></a> CondDirectiveStack;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">class </span>CondDirectiveLoc {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> RegionLoc;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     CondDirectiveLoc(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> RegionLoc)</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>       : Loc(Loc), RegionLoc(RegionLoc) {}</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> getLoc()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> getRegionLoc()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RegionLoc; }</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html">   42</a></span>     <span class="keyword">class </span><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html">Comp</a> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>       <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SM;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a53bf43fe8f95ef58a3f760881f919ab5">   45</a></span>       <span class="keyword">explicit</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a53bf43fe8f95ef58a3f760881f919ab5">Comp</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SM) : SM(SM) {}</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a1b4f523f45cb9a2266f30c890ec97aae">   46</a></span>       <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a1b4f523f45cb9a2266f30c890ec97aae">operator()</a>(<span class="keyword">const</span> CondDirectiveLoc &LHS,</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>                       <span class="keyword">const</span> CondDirectiveLoc &RHS) {</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>         <span class="keywordflow">return</span> SM.<a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnit</a>(LHS.getLoc(), RHS.getLoc());</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>       }</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a2fbffd51d80837d114fa14085bc9bcca">   50</a></span>       <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a2fbffd51d80837d114fa14085bc9bcca">operator()</a>(<span class="keyword">const</span> CondDirectiveLoc &LHS, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> RHS) {</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>         <span class="keywordflow">return</span> SM.<a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnit</a>(LHS.getLoc(), RHS);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>       }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a469370d006a43a1e262b5e8e4167efea">   53</a></span>       <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord_1_1CondDirectiveLoc_1_1Comp.html#a469370d006a43a1e262b5e8e4167efea">operator()</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LHS, <span class="keyword">const</span> CondDirectiveLoc &RHS) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>         <span class="keywordflow">return</span> SM.<a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnit</a>(LHS, RHS.getLoc());</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>       }</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     };</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   };</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keyword">typedef</span> std::vector<CondDirectiveLoc> CondDirectiveLocsTy;<span class="comment"></span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">  /// \brief The locations of conditional directives in source order.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"></span>  CondDirectiveLocsTy CondDirectiveLocs;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">void</span> addCondDirectiveLoc(CondDirectiveLoc DirLoc);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">  /// \brief Construct a new preprocessing record.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#aa68ba9a58c161fb70e1d63988d6b21a7" title="Construct a new preprocessing record.">PPConditionalDirectiveRecord</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a>);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">size_t</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#ae02015f7407dd606f6a063f986e1f345">getTotalMemory</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a704a05b2e71d6048642c454946663154">   71</a></span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a704a05b2e71d6048642c454946663154">getSourceManager</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> SourceMgr; }</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment"></span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// \brief Returns true if the given range intersects with a conditional</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// directive. if a \#if/\#endif block is fully contained within the range,</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// this function will return false.</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a84a74a54dc4f5b2268c0cdc1ea66705f" title="Returns true if the given range intersects with a conditional directive. if a #if/#endif block is ful...">rangeIntersectsConditionalDirective</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> Range) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// \brief Returns true if the given locations are in different regions,</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  /// separated by conditional directive blocks.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a42928090c136cc34c534ca278b042f54">   80</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a42928090c136cc34c534ca278b042f54" title="Returns true if the given locations are in different regions, separated by conditional directive bloc...">areInDifferentConditionalDirectiveRegion</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LHS,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a4e94ef0cfec0cba34e97ebcda9905155">findConditionalDirectiveRegionLoc</a>(LHS) !=</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>         <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a4e94ef0cfec0cba34e97ebcda9905155">findConditionalDirectiveRegionLoc</a>(RHS);</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   }</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1PPConditionalDirectiveRecord.html#a4e94ef0cfec0cba34e97ebcda9905155">findConditionalDirectiveRegionLoc</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> If(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> ConditionRange,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                   <span class="keywordtype">bool</span> ConditionValue);</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Elif(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> ConditionRange,</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>                     <span class="keywordtype">bool</span> ConditionValue, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IfLoc);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Ifdef(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <span class="keyword">const</span> <a class="code" href="classclang_1_1Token.html">Token</a> &MacroNameTok,</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                      <span class="keyword">const</span> <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Ifndef(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <span class="keyword">const</span> <a class="code" href="classclang_1_1Token.html">Token</a> &MacroNameTok,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                       <span class="keyword">const</span> <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Else(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IfLoc);</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> Endif(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IfLoc);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> };</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="preprocessor">#endif // LLVM_CLANG_LEX_PPCONDITIONALDIRECTIVERECORD_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:51 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2444 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: PPDirectives.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">PPDirectives.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="PPDirectives_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- PPDirectives.cpp - Directive Handling for Preprocessor -----------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span><span class="comment"></span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">/// \file</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">/// \brief Implements # directive processing for the Preprocessor.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment"></span><span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="FileManager_8h.html" title="Defines the clang::FileManager interface and associated types.">clang/Basic/FileManager.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CodeCompletionHandler_8h.html">clang/Lex/CodeCompletionHandler.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="HeaderSearch_8h.html">clang/Lex/HeaderSearch.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="HeaderSearchOptions_8h.html">clang/Lex/HeaderSearchOptions.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="LexDiagnostic_8h.html">clang/Lex/LexDiagnostic.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="LiteralSupport_8h.html">clang/Lex/LiteralSupport.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="MacroInfo_8h.html" title="Defines the clang::MacroInfo and clang::MacroDirective classes.">clang/Lex/MacroInfo.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="ModuleLoader_8h.html">clang/Lex/ModuleLoader.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="Pragma_8h.html">clang/Lex/Pragma.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/ADT/APInt.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/ErrorHandling.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/Support/SaveAndRestore.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">// Utility Methods for Preprocessor Directive Handling.</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *Preprocessor::AllocateMacroInfo() {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   MacroInfoChain *MIChain;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordflow">if</span> (MICache) {</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     MIChain = MICache;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     MICache = MICache->Next;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   }</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     MIChain = BP.Allocate<MacroInfoChain>();</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   }</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   MIChain->Next = MIChainHead;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   MIChain->Prev = 0;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordflow">if</span> (MIChainHead)</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     MIChainHead->Prev = MIChain;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   MIChainHead = MIChain;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">return</span> &(MIChain->MI);</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> }</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#aa61d27c61e53b8c69549fedcd8baa5ef">   55</a></span> <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *Preprocessor::AllocateMacroInfo(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> L) {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI = <a class="code" href="classclang_1_1Preprocessor.html#aa61d27c61e53b8c69549fedcd8baa5ef" title="Allocate a new MacroInfo object with the provided SourceLocation.">AllocateMacroInfo</a>();</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">new</span> (MI) <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a>(L);</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">return</span> MI;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> }</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#a6bc82cc7f8f29757abd0476a2fba7ed9">   61</a></span> <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *<a class="code" href="classclang_1_1Preprocessor.html#a6bc82cc7f8f29757abd0476a2fba7ed9" title="Allocate a new MacroInfo object loaded from an AST file.">Preprocessor::AllocateDeserializedMacroInfo</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> L,</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>                                                        <span class="keywordtype">unsigned</span> SubModuleID) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   LLVM_STATIC_ASSERT(llvm::AlignOf<MacroInfo>::Alignment >= <span class="keyword">sizeof</span>(SubModuleID),</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>                      <span class="stringliteral">"alignment for MacroInfo is less than the ID"</span>);</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   DeserializedMacroInfoChain *MIChain =</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>       BP.Allocate<DeserializedMacroInfoChain>();</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   MIChain->Next = DeserialMIChainHead;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   DeserialMIChainHead = MIChain;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI = &MIChain->MI;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keyword">new</span> (MI) <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a>(L);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   MI->FromASTFile = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   MI->setOwningModuleID(SubModuleID);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">return</span> MI;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> }</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <a class="code" href="classclang_1_1DefMacroDirective.html" title="A directive for a defined macro or a macro imported from a module.">DefMacroDirective</a> *</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> Preprocessor::AllocateDefMacroDirective(<a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>                                         <span class="keywordtype">bool</span> isImported) {</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <a class="code" href="classclang_1_1DefMacroDirective.html" title="A directive for a defined macro or a macro imported from a module.">DefMacroDirective</a> *MD = BP.Allocate<<a class="code" href="classclang_1_1DefMacroDirective.html" title="A directive for a defined macro or a macro imported from a module.">DefMacroDirective</a>>();</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keyword">new</span> (MD) <a class="code" href="classclang_1_1DefMacroDirective.html" title="A directive for a defined macro or a macro imported from a module.">DefMacroDirective</a>(MI, Loc, isImported);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <a class="code" href="classclang_1_1UndefMacroDirective.html" title="A directive for an undefined macro.">UndefMacroDirective</a> *</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> Preprocessor::AllocateUndefMacroDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> UndefLoc) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <a class="code" href="classclang_1_1UndefMacroDirective.html" title="A directive for an undefined macro.">UndefMacroDirective</a> *MD = BP.Allocate<<a class="code" href="classclang_1_1UndefMacroDirective.html" title="A directive for an undefined macro.">UndefMacroDirective</a>>();</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keyword">new</span> (MD) <a class="code" href="classclang_1_1UndefMacroDirective.html" title="A directive for an undefined macro.">UndefMacroDirective</a>(UndefLoc);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> }</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <a class="code" href="classclang_1_1VisibilityMacroDirective.html" title="A directive for setting the module visibility of a macro.">VisibilityMacroDirective</a> *</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> Preprocessor::AllocateVisibilityMacroDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                                                <span class="keywordtype">bool</span> isPublic) {</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classclang_1_1VisibilityMacroDirective.html" title="A directive for setting the module visibility of a macro.">VisibilityMacroDirective</a> *MD = BP.Allocate<<a class="code" href="classclang_1_1VisibilityMacroDirective.html" title="A directive for setting the module visibility of a macro.">VisibilityMacroDirective</a>>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keyword">new</span> (MD) <a class="code" href="classclang_1_1VisibilityMacroDirective.html" title="A directive for setting the module visibility of a macro.">VisibilityMacroDirective</a>(Loc, isPublic);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">/// \brief Release the specified MacroInfo to be reused for allocating</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">/// new MacroInfo objects.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::ReleaseMacroInfo(<a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI) {</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   MacroInfoChain *MIChain = (MacroInfoChain*) MI;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">if</span> (MacroInfoChain *Prev = MIChain->Prev) {</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     MacroInfoChain *Next = MIChain->Next;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     Prev->Next = Next;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordflow">if</span> (Next)</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       Next->Prev = Prev;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   }</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     assert(MIChainHead == MIChain);</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     MIChainHead = MIChain->Next;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     MIChainHead->Prev = 0;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   }</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   MIChain->Next = MICache;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   MICache = MIChain;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   MI-><a class="code" href="classclang_1_1MacroInfo.html#a2a5e19e708ca81f3c7a0e3538e5594c6" title="Destroy this MacroInfo object.">Destroy</a>();</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">/// \brief Read and discard all tokens remaining on the current line until</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">/// the tok::eod token is found.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70">  123</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">Preprocessor::DiscardUntilEndOfDirective</a>() {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classclang_1_1Token.html">Token</a> Tmp;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tmp);</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     assert(Tmp.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(<a class="code" href="namespaceclang_1_1comments_1_1tok.html#af269e1299a7e813dd4471ab24630e01aac4904dc9309fe9cf0fe76ff45d54f265">tok::eof</a>) && <span class="stringliteral">"EOF seen while discarding directive tokens"</span>);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   } <span class="keywordflow">while</span> (Tmp.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::eod));</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> }</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">/// \brief Lex and validate a macro name, which occurs after a</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">/// \#define or \#undef.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">/// This sets the token kind to eod and discards the rest</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">/// of the macro line if the macro name is invalid.  \p isDefineUndef is 1 if</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">/// this is due to a a \#define, 2 if \#undef directive, 0 if it is something</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">/// else (e.g. \#ifdef).</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::ReadMacroName(<a class="code" href="classclang_1_1Token.html">Token</a> &MacroNameTok, <span class="keywordtype">char</span> isDefineUndef) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="comment">// Read the token, don't allow macro expansion on it.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(MacroNameTok);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::code_completion)) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">if</span> (CodeComplete)</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       CodeComplete-><a class="code" href="classclang_1_1CodeCompletionHandler.html#aa7e7742cdcea9f572c46ac4667aad5d9" title="Callback invoked when performing code completion in a context where the name of a macro is expected...">CodeCompleteMacroName</a>(isDefineUndef == 1);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(MacroNameTok);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   }</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="comment">// Missing macro name?</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_pp_missing_macro_name);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="keywordflow">if</span> (II == 0) {</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     std::string Spelling = <a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(MacroNameTok, &Invalid);</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> &Info = Identifiers.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(Spelling);</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="comment">// Allow #defining |and| and friends in microsoft mode.</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">if</span> (Info.<a class="code" href="classclang_1_1IdentifierInfo.html#ae199dd77b39e59429e1a05407f3be741">isCPlusPlusOperatorKeyword</a>() && <a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().MicrosoftMode) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       MacroNameTok.<a class="code" href="classclang_1_1Token.html#ae603a1243f89a7aeeabcb4d467c474ff">setIdentifierInfo</a>(<a class="code" href="classclang_1_1Preprocessor.html#acbacad0c69321bd63102c7697a95b67d">getIdentifierInfo</a>(Spelling));</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">if</span> (Info.<a class="code" href="classclang_1_1IdentifierInfo.html#ae199dd77b39e59429e1a05407f3be741">isCPlusPlusOperatorKeyword</a>())</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       <span class="comment">// C++ 2.5p2: Alternative tokens behave the same as its primary token</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       <span class="comment">// except for their spellings.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_pp_operator_used_as_macro_name) << Spelling;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_pp_macro_not_identifier);</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="comment">// Fall through on error.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isDefineUndef && II-><a class="code" href="classclang_1_1IdentifierInfo.html#ae11e3e149e73feb580d57400c96154c5" title="Return the preprocessor keyword ID for this identifier.">getPPKeywordID</a>() == tok::pp_defined) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="comment">// Error if defining "defined": C99 6.10.8/4, C++ [cpp.predefined]p4.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_defined_macro_name);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isDefineUndef == 2 && II-><a class="code" href="classclang_1_1IdentifierInfo.html#a34cb7627ed0055795b041425667ee8a8" title="Return true if this identifier is #defined to some other value.">hasMacroDefinition</a>() &&</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>              <a class="code" href="classclang_1_1Preprocessor.html#aae0ad9f63f31eda09f5c5c2eac0cb307">getMacroInfo</a>(II)-><a class="code" href="classclang_1_1MacroInfo.html#ad3b0718985553acaa6ffde8700fc759c" title="Return true if this macro requires processing before expansion.">isBuiltinMacro</a>()) {</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="comment">// Warn if undefining "__LINE__" and other builtins, per C99 6.10.8/4</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     <span class="comment">// and C++ [cpp.predefined]p4], but allow it as an extension.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::ext_pp_undef_builtin_macro);</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="comment">// Okay, we got a good identifier node.  Return it.</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   }</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">// Invalid macro name, read and discard the rest of the line.  Then set the</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="comment">// token kind to tok::eod.</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   MacroNameTok.<a class="code" href="classclang_1_1Token.html#a44b757baba649ad00b79f78671a8a2aa">setKind</a>(tok::eod);</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> }</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment"></span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">/// \brief Ensure that the next token is a tok::eod token.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">/// If not, emit a diagnostic and consume up until the eod.  If EnableMacros is</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">/// true, then we consider macros that expand to zero tokens as being ok.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49">  201</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">Preprocessor::CheckEndOfDirective</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *DirType, <span class="keywordtype">bool</span> EnableMacros) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <a class="code" href="classclang_1_1Token.html">Token</a> Tmp;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="comment">// Lex unexpanded tokens for most directives: macros might expand to zero</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="comment">// tokens, causing us to miss diagnosing invalid lines.  Some directives (like</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="comment">// #line) allow empty macros.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">if</span> (EnableMacros)</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(Tmp);</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tmp);</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="comment">// There should be no tokens after the directive, but we allow them as an</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="comment">// extension.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordflow">while</span> (Tmp.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::comment))  <span class="comment">// Skip comments in -C mode.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tmp);</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">if</span> (Tmp.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::eod)) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="comment">// Add a fixit in GNU/C99/C++ mode.  Don't offer a fixit for strict-C89,</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="comment">// or if this is a macro-style preprocessing directive, because it is more</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="comment">// trouble than it is worth to insert /**/ and check that there is no /**/</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="comment">// in the range also.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     <a class="code" href="classclang_1_1FixItHint.html" title="Annotates a diagnostic with some code that should be inserted, removed, or replaced to fix the proble...">FixItHint</a> Hint;</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keywordflow">if</span> ((LangOpts.GNUMode || LangOpts.C99 || LangOpts.CPlusPlus) &&</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>         !CurTokenLexer)</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>       Hint = <a class="code" href="classclang_1_1FixItHint.html#afd481d826e9ddaa39fc82a698a810246" title="Create a code modification hint that inserts the given code string at a specific location.">FixItHint::CreateInsertion</a>(Tmp.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),<span class="stringliteral">"//"</span>);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tmp, diag::ext_pp_extra_tokens_at_eol) << DirType << Hint;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> }</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment"></span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">/// SkipExcludedConditionalBlock - We just read a \#if or related directive and</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">/// decided that the subsequent tokens are in the \#if'd out portion of the</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">/// file.  Lex the rest of the file, until we see an \#endif.  If</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">/// FoundNonSkipPortion is true, then we have already emitted code for part of</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">/// this \#if directive, so \#else/\#elif blocks should never be entered.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">/// If ElseOk is true, then \#else directives are ok, if not, then we have</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">/// already seen one so a \#else directive is a duplicate.  When this returns,</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">/// the caller can lex the first valid token.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::SkipExcludedConditionalBlock(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IfTokenLoc,</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>                                                 <span class="keywordtype">bool</span> FoundNonSkipPortion,</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>                                                 <span class="keywordtype">bool</span> FoundElse,</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ElseLoc) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   ++NumSkipped;</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   assert(!CurTokenLexer && CurPPLexer && <span class="stringliteral">"Lexing a macro, not a file?"</span>);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3968b8c3fa5d9d2541a15d8af2e9414d">pushConditionalLevel</a>(IfTokenLoc, <span class="comment">/*isSkipping*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>                                  FoundNonSkipPortion, FoundElse);</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keywordflow">if</span> (CurPTHLexer) {</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     PTHSkipExcludedConditionalBlock();</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   }</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="comment">// Enter raw mode to disable identifier lookup (and thus macro expansion),</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">// disabling warnings, etc.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <a class="code" href="classclang_1_1Token.html">Token</a> Tok;</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     CurLexer->Lex(Tok);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::code_completion)) {</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="keywordflow">if</span> (CodeComplete)</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         CodeComplete-><a class="code" href="classclang_1_1CodeCompletionHandler.html#aec60160ece211f3bda8c8204deafac55" title="Callback invoked when performing code completion within a block of code that was excluded due to prep...">CodeCompleteInConditionalExclusion</a>();</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       <a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="comment">// If this is the end of the buffer, we have an error.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(<a class="code" href="namespaceclang_1_1comments_1_1tok.html#af269e1299a7e813dd4471ab24630e01aac4904dc9309fe9cf0fe76ff45d54f265">tok::eof</a>)) {</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="comment">// Emit errors for each unterminated conditional on the stack, including</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       <span class="comment">// the current one.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       <span class="keywordflow">while</span> (!CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a61ced6f2bac7be5b564b1329ccc63300" title="Information about the set of #if/#ifdef/#ifndef blocks we are currently in.">ConditionalStack</a>.empty()) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="keywordflow">if</span> (CurLexer->getFileLoc() != CodeCompletionFileLoc)</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a61ced6f2bac7be5b564b1329ccc63300" title="Information about the set of #if/#ifdef/#ifndef blocks we are currently in.">ConditionalStack</a>.back().IfLoc,</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>                diag::err_pp_unterminated_conditional);</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>         CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a61ced6f2bac7be5b564b1329ccc63300" title="Information about the set of #if/#ifdef/#ifndef blocks we are currently in.">ConditionalStack</a>.pop_back();</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       }</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="comment">// Just return and let the caller lex after this #include.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     }</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="comment">// If this token is not a preprocessor directive, just skip it.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::hash) || !Tok.<a class="code" href="classclang_1_1Token.html#a895009ede74790b61cf636fd7e498d44">isAtStartOfLine</a>())</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="comment">// We just parsed a # character at the start of a line, so we're in</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <span class="comment">// directive mode.  Tell the lexer this so any newlines we see will be</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="comment">// converted into an EOD token (this terminates the macro).</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="keywordflow">if</span> (CurLexer) CurLexer->SetKeepWhitespaceMode(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="comment">// Read the next token, the directive flavor.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="comment">// If this isn't an identifier directive (e.g. is "# 1\n" or "#\n", or</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="comment">// something bogus), skip it.</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::raw_identifier)) {</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <span class="comment">// Restore comment saving mode.</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       <span class="keywordflow">if</span> (CurLexer) CurLexer->resetExtendedTokenMode();</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     }</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="comment">// If the first letter isn't i or e, it isn't intesting to us.  We know that</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="comment">// this is safe in the face of spelling differences, because there is no way</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="comment">// to spell an i/e in a strange way that is another letter.  Skipping this</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="comment">// allows us to avoid looking up the identifier info for #define/#undef and</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="comment">// other common directives.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *RawCharData = Tok.<a class="code" href="classclang_1_1Token.html#a63f951b781b7c3cca10b5edd2adfaf11">getRawIdentifierData</a>();</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keywordtype">char</span> FirstChar = RawCharData[0];</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">if</span> (FirstChar >= <span class="charliteral">'a'</span> && FirstChar <= <span class="charliteral">'z'</span> &&</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         FirstChar != <span class="charliteral">'i'</span> && FirstChar != <span class="charliteral">'e'</span>) {</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <span class="comment">// Restore comment saving mode.</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       <span class="keywordflow">if</span> (CurLexer) CurLexer->resetExtendedTokenMode();</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     }</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <span class="comment">// Get the identifier name without trigraphs or embedded newlines.  Note</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="comment">// that we can't use Tok.getIdentifierInfo() because its lookup is disabled</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="comment">// when skipping.</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordtype">char</span> DirectiveBuf[20];</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     StringRef <a class="code" href="VerifyDiagnosticConsumer_8cpp.html#a921b22de3a2e7d65400ea994e3d70c9d">Directive</a>;</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="classclang_1_1Token.html#a892fc9f1e67289184b22e6a9c13a940e" title="Return true if this token has trigraphs or escaped newlines in it.">needsCleaning</a>() && Tok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>() < 20) {</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       Directive = StringRef(RawCharData, Tok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>());</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       std::string DirectiveStr = <a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(Tok);</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordtype">unsigned</span> IdLen = DirectiveStr.size();</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <span class="keywordflow">if</span> (IdLen >= 20) {</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>         CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>         <span class="comment">// Restore comment saving mode.</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         <span class="keywordflow">if</span> (CurLexer) CurLexer->resetExtendedTokenMode();</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       }</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       memcpy(DirectiveBuf, &DirectiveStr[0], IdLen);</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>       Directive = StringRef(DirectiveBuf, IdLen);</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     }</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     <span class="keywordflow">if</span> (Directive.startswith(<span class="stringliteral">"if"</span>)) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>       StringRef Sub = Directive.substr(2);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <span class="keywordflow">if</span> (Sub.empty() ||   <span class="comment">// "if"</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>           Sub == <span class="stringliteral">"def"</span> ||   <span class="comment">// "ifdef"</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>           Sub == <span class="stringliteral">"ndef"</span>) {  <span class="comment">// "ifndef"</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>         <span class="comment">// We know the entire #if/#ifdef/#ifndef block will be skipped, don't</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>         <span class="comment">// bother parsing the condition.</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>         CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3968b8c3fa5d9d2541a15d8af2e9414d">pushConditionalLevel</a>(Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <span class="comment">/*wasskipping*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>                                        <span class="comment">/*foundnonskip*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>                                        <span class="comment">/*foundelse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       }</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Directive[0] == <span class="charliteral">'e'</span>) {</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>       StringRef Sub = Directive.substr(1);</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       <span class="keywordflow">if</span> (Sub == <span class="stringliteral">"ndif"</span>) {  <span class="comment">// "endif"</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>         <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> CondInfo;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>         CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aeb024e3de8d2e6f7e0884348af7413ce" title="True if this was contained in a skipping directive, e.g., in a "\#if 0" block.">WasSkipping</a> = <span class="keyword">true</span>; <span class="comment">// Silence bogus warning.</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         <span class="keywordtype">bool</span> InCond = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a8b08635b456503da08924de9ebb30ed2">popConditionalLevel</a>(CondInfo);</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         (void)InCond;  <span class="comment">// Silence warning in no-asserts mode.</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         assert(!InCond && <span class="stringliteral">"Can't be skipping if not in a conditional!"</span>);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>         <span class="comment">// If we popped the outermost skipping block, we're done skipping!</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>         <span class="keywordflow">if</span> (!CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aeb024e3de8d2e6f7e0884348af7413ce" title="True if this was contained in a skipping directive, e.g., in a "\#if 0" block.">WasSkipping</a>) {</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>           <span class="comment">// Restore the value of LexingRawMode so that trailing comments</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>           <span class="comment">// are handled correctly, if we've reached the outermost block.</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>           <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"endif"</span>);</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>           <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>             Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#afc62ca1401125f516d58b1629a2093ce" title="Hook called whenever an #endif is seen.">Endif</a>(Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>         }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Sub == <span class="stringliteral">"lse"</span>) { <span class="comment">// "else".</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         <span class="comment">// #else directive in a skipping conditional.  If not in some other</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>         <span class="comment">// skipping conditional, and if #else hasn't already been seen, enter it</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         <span class="comment">// as a non-skipping conditional.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>         <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> &CondInfo = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#ac1d2977a512b1bbc8fa802d92564810d" title="Return the top of the conditional stack.">peekConditionalLevel</a>();</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         <span class="comment">// If this is a #else with a #else before it, report the error.</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>         <span class="keywordflow">if</span> (CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>) <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::pp_err_else_after_else);</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>         <span class="comment">// Note that we've seen a #else in this conditional.</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>         CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         <span class="comment">// If the conditional is at the top level, and the #if block wasn't</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>         <span class="comment">// entered, enter the #else block now.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>         <span class="keywordflow">if</span> (!CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aeb024e3de8d2e6f7e0884348af7413ce" title="True if this was contained in a skipping directive, e.g., in a "\#if 0" block.">WasSkipping</a> && !CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a>) {</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>           CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>           <span class="comment">// Restore the value of LexingRawMode so that trailing comments</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>           <span class="comment">// are handled correctly.</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>           <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"else"</span>);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>           <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>             Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#ad57f91b6d9c3cbcca326a2bfb49e0314" title="Hook called whenever an #else is seen.">Else</a>(Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();  <span class="comment">// C99 6.10p4.</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>         }</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Sub == <span class="stringliteral">"lif"</span>) {  <span class="comment">// "elif".</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> &CondInfo = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#ac1d2977a512b1bbc8fa802d92564810d" title="Return the top of the conditional stack.">peekConditionalLevel</a>();</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>         <span class="keywordtype">bool</span> ShouldEnter;</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalBegin = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>         <span class="comment">// If this is in a skipping block or if we're already handled this #if</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         <span class="comment">// block, don't bother parsing the condition.</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         <span class="keywordflow">if</span> (CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aeb024e3de8d2e6f7e0884348af7413ce" title="True if this was contained in a skipping directive, e.g., in a "\#if 0" block.">WasSkipping</a> || CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a>) {</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>           ShouldEnter = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>           <span class="comment">// Restore the value of LexingRawMode so that identifiers are</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>           <span class="comment">// looked up, etc, inside the #elif expression.</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>           assert(CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> && <span class="stringliteral">"We have to be skipping here!"</span>);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>           <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *IfNDefMacro = 0;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>           ShouldEnter = EvaluateDirectiveExpression(IfNDefMacro);</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>           CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>         }</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalEnd = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         <span class="comment">// If this is a #elif with a #else before it, report the error.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>         <span class="keywordflow">if</span> (CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>) <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::pp_err_elif_after_else);</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>         <span class="comment">// If this condition is true, enter it!</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>         <span class="keywordflow">if</span> (ShouldEnter) {</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>           CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>           <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>             Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a180c9e106a28d60a6112e16b1bb8302a" title="Hook called whenever an #elif is seen.">Elif</a>(Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>                             <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(ConditionalBegin, ConditionalEnd),</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>                             ShouldEnter, CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>         }</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>       }</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     }</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="comment">// Restore comment saving mode.</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <span class="keywordflow">if</span> (CurLexer) CurLexer->resetExtendedTokenMode();</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   }</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="comment">// Finally, if we are out of the conditional (saw an #endif or ran off the end</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="comment">// of the file, just stop skipping and return to lexing whatever came after</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="comment">// the #if block.</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> BeginLoc = ElseLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() ? ElseLoc : IfTokenLoc;</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#abdb4ebe11610f079ac33515965794b46" title="Hook called when a source range is skipped.">SourceRangeSkipped</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(BeginLoc, Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()));</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   }</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> }</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="keywordtype">void</span> Preprocessor::PTHSkipExcludedConditionalBlock() {</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     assert(CurPTHLexer);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     assert(CurPTHLexer->LexingRawMode == <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="comment">// Skip to the next '#else', '#elif', or #endif.</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     <span class="keywordflow">if</span> (CurPTHLexer->SkipBlock()) {</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <span class="comment">// We have reached an #endif.  Both the '#' and 'endif' tokens</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       <span class="comment">// have been consumed by the PTHLexer.  Just pop off the condition level.</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> CondInfo;</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       <span class="keywordtype">bool</span> InCond = CurPTHLexer->popConditionalLevel(CondInfo);</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       (void)InCond;  <span class="comment">// Silence warning in no-asserts mode.</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       assert(!InCond && <span class="stringliteral">"Can't be skipping if not in a conditional!"</span>);</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     }</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="comment">// We have reached a '#else' or '#elif'.  Lex the next token to get</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="comment">// the directive flavor.</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     <a class="code" href="classclang_1_1Token.html">Token</a> Tok;</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <span class="comment">// We can actually look up the IdentifierInfo here since we aren't in</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="comment">// raw mode.</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <a class="code" href="namespaceclang_1_1tok.html#add9c2c08b026d30fd8562736083f592a" title="Provides a namespace for preprocessor keywords which start with a '#' at the beginning of the line...">tok::PPKeywordKind</a> K = Tok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#ae11e3e149e73feb580d57400c96154c5" title="Return the preprocessor keyword ID for this identifier.">getPPKeywordID</a>();</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">if</span> (K == tok::pp_else) {</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="comment">// #else: Enter the else condition.  We aren't in a nested condition</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="comment">//  since we skip those. We're always in the one matching the last</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="comment">//  blocked we skipped.</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> &CondInfo = CurPTHLexer->peekConditionalLevel();</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <span class="comment">// Note that we've seen a #else in this conditional.</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       <span class="comment">// If the #if block wasn't entered then enter the #else block now.</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       <span class="keywordflow">if</span> (!CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a>) {</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>         CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>         <span class="comment">// Scan until the eod token.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>         CurPTHLexer->ParsingPreprocessorDirective = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>         CurPTHLexer->ParsingPreprocessorDirective = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> </div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       }</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       <span class="comment">// Otherwise skip this block.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     }</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     assert(K == tok::pp_elif);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> &CondInfo = CurPTHLexer->peekConditionalLevel();</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     <span class="comment">// If this is a #elif with a #else before it, report the error.</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     <span class="keywordflow">if</span> (CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>)</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::pp_err_elif_after_else);</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="comment">// If this is in a skipping block or if we're already handled this #if</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="comment">// block, don't bother parsing the condition.  We just skip this block.</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span> (CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a>)</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     <span class="comment">// Evaluate the condition of the #elif.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *IfNDefMacro = 0;</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     CurPTHLexer->ParsingPreprocessorDirective = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="keywordtype">bool</span> ShouldEnter = EvaluateDirectiveExpression(IfNDefMacro);</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     CurPTHLexer->ParsingPreprocessorDirective = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">// If this condition is true, enter it!</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="keywordflow">if</span> (ShouldEnter) {</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#a714136e4346529961e233fd178432b49" title="True if we have emitted tokens already, and now we're in an #else block or something. Only useful in Skipping blocks.">FoundNonSkip</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     }</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     <span class="comment">// Otherwise, skip this block and go to the next one.</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   }</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> }</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Preprocessor::getModuleForLocation(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> FilenameLoc) {</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   <a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> &ModMap = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>();</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>   <span class="keywordflow">if</span> (SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397" title="Returns whether the PresumedLoc for a given SourceLocation is in the main file.">isInMainFile</a>(FilenameLoc)) {</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *CurMod = <a class="code" href="classclang_1_1Preprocessor.html#a8a8fc5c309076e8a00fa873fd7d001ee" title="Retrieves the module that we're currently building, if any.">getCurrentModule</a>())</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       <span class="keywordflow">return</span> CurMod;                               <span class="comment">// Compiling a module.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">return</span> HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>().<a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">SourceModule</a>; <span class="comment">// Compiling a source.</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   }</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <span class="comment">// Try to determine the module of the include directive.</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>   <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> IDOfIncl = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(FilenameLoc);</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *EntryOfIncl = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(IDOfIncl)) {</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="comment">// The include comes from a file.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="keywordflow">return</span> ModMap.<a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">findModuleForHeader</a>(EntryOfIncl).<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>();</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="comment">// The include does not come from a file,</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="comment">// so it is probably a module compilation.</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a8a8fc5c309076e8a00fa873fd7d001ee" title="Retrieves the module that we're currently building, if any.">getCurrentModule</a>();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   }</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> }</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> <span class="keywordtype">bool</span> Preprocessor::violatesPrivateInclude(</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestingModule,</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *IncFileEnt,</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleMap::ModuleHeaderRole</a> Role,</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestedModule) {</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="preprocessor">  #ifndef NDEBUG</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> <span class="preprocessor"></span>  <span class="comment">// Check for consistency between the module header role</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="comment">// as obtained from the lookup and as obtained from the module.</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="comment">// This check is not cheap, so enable it only for debugging.</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const FileEntry *></a> &PvtHdrs</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       = RequestedModule-><a class="code" href="classclang_1_1Module.html#a03cc716919c98f60df2b1e2ed346f8bb" title="The headers that are private to this module.">PrivateHeaders</a>;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const FileEntry *>::iterator</a> Look</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       = std::find(PvtHdrs.begin(), PvtHdrs.end(), IncFileEnt);</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="keywordtype">bool</span> IsPrivate = Look != PvtHdrs.end();</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   assert((IsPrivate && Role == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">ModuleMap::PrivateHeader</a>)</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>                || (!IsPrivate && Role != <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">ModuleMap::PrivateHeader</a>));</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="preprocessor">  #endif</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="preprocessor"></span>  <span class="keywordflow">return</span> Role == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">ModuleMap::PrivateHeader</a> &&</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>          RequestedModule-><a class="code" href="classclang_1_1Module.html#ab9ac0815c7df4b9466e2a7212fd2d300" title="Retrieve the top-level module for this (sub)module, which may be this module.">getTopLevelModule</a>() != RequestingModule;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> }</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> </div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="keywordtype">bool</span> Preprocessor::violatesUseDeclarations(</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestingModule,</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestedModule) {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> &ModMap = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>();</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   ModMap.<a class="code" href="classclang_1_1ModuleMap.html#aff262a15ac7933edd463953d969e4f6b" title="Resolve all of the unresolved uses in the given module.">resolveUses</a>(RequestingModule, <span class="comment">/*Complain=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Module *></a> &AllowedUses = RequestingModule-><a class="code" href="classclang_1_1Module.html#a95775566d8066cb0ede2cfd01a338c1e" title="The directly used modules.">DirectUses</a>;</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Module *>::const_iterator</a> Declared =</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       std::find(AllowedUses.begin(), AllowedUses.end(), RequestedModule);</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keywordflow">return</span> Declared == AllowedUses.end();</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> }</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> </div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> <span class="keywordtype">void</span> Preprocessor::verifyModuleInclude(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> FilenameLoc,</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>                                        StringRef Filename,</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *IncFileEnt) {</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestingModule = getModuleForLocation(FilenameLoc);</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">if</span> (RequestingModule)</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>().<a class="code" href="classclang_1_1ModuleMap.html#aff262a15ac7933edd463953d969e4f6b" title="Resolve all of the unresolved uses in the given module.">resolveUses</a>(RequestingModule, <span class="comment">/*Complain=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">ModuleMap::KnownHeader</a> RequestedModule =</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>().<a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">findModuleForHeader</a>(IncFileEnt,</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>                                                     RequestingModule);</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> </div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="keywordflow">if</span> (RequestingModule == RequestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>())</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>     <span class="keywordflow">return</span>; <span class="comment">// No faults wihin a module, or between files both not in modules.</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span> </div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">if</span> (RequestingModule != HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ae56afbc5eac06aa39ed7c49a5d6dd717" title="Retrieve the module map.">getModuleMap</a>().<a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">SourceModule</a>)</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">return</span>; <span class="comment">// No errors for indirect modules.</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>             <span class="comment">// This may be a bit of a problem for modules with no source files.</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> </div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="keywordflow">if</span> (RequestedModule && violatesPrivateInclude(RequestingModule, IncFileEnt,</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>                                                 RequestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a615f8b7ad99d67134a8a55d1d3fab994" title="The role of this header within the module.">getRole</a>(),</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>                                                 RequestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>()))</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameLoc, diag::error_use_of_private_header_outside_module)</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         << Filename;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span> </div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   <span class="comment">// FIXME: Add support for FixIts in module map files and offer adding the</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>   <span class="comment">// required use declaration.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">if</span> (RequestingModule && <a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().ModulesDeclUse &&</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       violatesUseDeclarations(RequestingModule, RequestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>()))</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameLoc, diag::error_undeclared_use_of_module)</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         << Filename;</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> }</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> </div>
+<div class="line"><a name="l00617"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#abaaffb22cc7abb1535773930ec1e5cfb">  617</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *<a class="code" href="classclang_1_1Preprocessor.html#abaaffb22cc7abb1535773930ec1e5cfb" title="Given a "foo" or <foo> reference, look up the indicated file.">Preprocessor::LookupFile</a>(</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> FilenameLoc,</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     StringRef Filename,</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordtype">bool</span> isAngled,</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> *FromDir,</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> *&CurDir,</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> *SearchPath,</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> *RelativePath,</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">ModuleMap::KnownHeader</a> *SuggestedModule,</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     <span class="keywordtype">bool</span> SkipCache) {</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="comment">// If the header lookup mechanism may be relative to the current file, pass in</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="comment">// info about where the current file is.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *CurFileEnt = 0;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   <span class="keywordflow">if</span> (!FromDir) {</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = <a class="code" href="classclang_1_1Preprocessor.html#a11a6206e7d47ca4d8509b97e3a0da167">getCurrentFileLexer</a>()-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3c74055525c62d0053fec3c0084abca8">getFileID</a>();</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     CurFileEnt = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(FID);</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span> </div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="comment">// If there is no file entry associated with this file, it must be the</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     <span class="comment">// predefines buffer.  Any other file is not lexed with a normal lexer, so</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="comment">// it won't be scanned for preprocessor directives.   If we have the</span></div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="comment">// predefines buffer, resolve #include references (which come from the</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     <span class="comment">// -include command line argument) as if they came from the main file, this</span></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     <span class="comment">// affects file lookup etc.</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     <span class="keywordflow">if</span> (CurFileEnt == 0) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>       FID = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#ad3ac47ab7380c82d19243a2db765479c" title="Returns the FileID of the main source file.">getMainFileID</a>();</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       CurFileEnt = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(FID);</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     }</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   }</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> </div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="comment">// Do a standard file entry lookup.</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   CurDir = CurDirLookup;</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *FE = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#aa1c602962266d121be3a1f58142abc9d" title="Given a "foo" or <foo> reference, look up the indicated file, return null on failure.">LookupFile</a>(</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       Filename, isAngled, FromDir, CurDir, CurFileEnt,</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       SearchPath, RelativePath, SuggestedModule, SkipCache);</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="keywordflow">if</span> (FE) {</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">if</span> (SuggestedModule)</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       verifyModuleInclude(FilenameLoc, Filename, FE);</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="keywordflow">return</span> FE;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   }</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="comment">// Otherwise, see if this is a subframework header.  If so, this is relative</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="comment">// to one of the headers on the #include stack.  Walk the list of the current</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="comment">// headers on the #include stack and pass them to HeaderInfo.</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">if</span> (IsFileLexer()) {</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="keywordflow">if</span> ((CurFileEnt = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3c74055525c62d0053fec3c0084abca8">getFileID</a>())))</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <span class="keywordflow">if</span> ((FE = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ad1609d2856163bb155dd653560e575af" title="Look up a subframework for the specified #include file.">LookupSubframeworkHeader</a>(Filename, CurFileEnt,</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>                                                     SearchPath, RelativePath,</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>                                                     SuggestedModule)))</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>         <span class="keywordflow">return</span> FE;</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   }</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span> </div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = IncludeMacroStack.size(); i != e; ++i) {</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     IncludeStackInfo &ISEntry = IncludeMacroStack[e-i-1];</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="keywordflow">if</span> (IsFileLexer(ISEntry)) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>       <span class="keywordflow">if</span> ((CurFileEnt =</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>            SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(ISEntry.ThePPLexer->getFileID())))</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>         <span class="keywordflow">if</span> ((FE = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#ad1609d2856163bb155dd653560e575af" title="Look up a subframework for the specified #include file.">LookupSubframeworkHeader</a>(</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>                 Filename, CurFileEnt, SearchPath, RelativePath,</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>                 SuggestedModule)))</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>           <span class="keywordflow">return</span> FE;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     }</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   }</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span> </div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="comment">// Otherwise, we really couldn't find the file.</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span> }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> </div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span> <span class="comment">// Preprocessor Directive Handling.</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span> </div>
+<div class="line"><a name="l00689"></a><span class="lineno"><a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html">  689</a></span> <span class="keyword">class </span><a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html">Preprocessor::ResetMacroExpansionHelper</a> {</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00691"></a><span class="lineno"><a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html#aaa8b527699ea2446bff349126da570aa">  691</a></span>   <a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html#aaa8b527699ea2446bff349126da570aa">ResetMacroExpansionHelper</a>(<a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> *pp)</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     : PP(pp), save(pp->DisableMacroExpansion) {</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     <span class="keywordflow">if</span> (pp->MacroExpansionInDirectivesOverride)</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>       pp->DisableMacroExpansion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   }</div>
+<div class="line"><a name="l00696"></a><span class="lineno"><a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html#add0305218c4d51694c100015e6be3938">  696</a></span>   <a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html#add0305218c4d51694c100015e6be3938">~ResetMacroExpansionHelper</a>() {</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     PP->DisableMacroExpansion = save;</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   }</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> *PP;</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   <span class="keywordtype">bool</span> save;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> };</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span> <span class="comment"></span></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="comment">/// HandleDirective - This callback is invoked when the lexer sees a # token</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="comment">/// at the start of a line.  This consumes the directive, modifies the</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> <span class="comment">/// lexer/preprocessor state, and advances the lexer(s) so that the next token</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="comment">/// read is the correct one.</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#ab6cb207d9606e228aac0ed63d529cfa2">  708</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Preprocessor.html#ab6cb207d9606e228aac0ed63d529cfa2">Preprocessor::HandleDirective</a>(<a class="code" href="classclang_1_1Token.html">Token</a> &Result) {</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="comment">// FIXME: Traditional: # with whitespace before it not recognized by K&R?</span></div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> </div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <span class="comment">// We just parsed a # character at the start of a line, so we're in directive</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="comment">// mode.  Tell the lexer this so any newlines we see will be converted into an</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="comment">// EOD token (which terminates the directive).</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="keywordflow">if</span> (CurLexer) CurLexer->SetKeepWhitespaceMode(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> </div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   <span class="keywordtype">bool</span> ImmediatelyAfterTopLevelIfndef =</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#a685c4d7282424823e67fe1595d0db250">getImmediatelyAfterTopLevelIfndef</a>();</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#adc6998eedbfdd5beb27666d1bd6a8604">resetImmediatelyAfterTopLevelIfndef</a>();</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> </div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   ++NumDirectives;</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> </div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="comment">// We are about to read a token.  For the multiple-include optimization FA to</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   <span class="comment">// work, we have to remember if we had read any tokens *before* this</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <span class="comment">// pp-directive.</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordtype">bool</span> ReadAnyTokensBeforeDirective =CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#a23426d820924a7de712697ac350d1a69">getHasReadAnyTokensVal</a>();</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   <span class="comment">// Save the '#' token in case we need to return it later.</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   <a class="code" href="classclang_1_1Token.html">Token</a> SavedHash = Result;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> </div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="comment">// Read the next token, the directive flavor.  This isn't expanded due to</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="comment">// C99 6.10.3p8.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>   <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Result);</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="comment">// C99 6.10.3p11: Is this preprocessor directive in macro invocation?  e.g.:</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="comment">//   #define A(x) #x</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="comment">//   A(abc</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="comment">//     #warning blah</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   <span class="comment">//   def)</span></div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="comment">// If so, the user is relying on undefined behavior, emit a diagnostic. Do</span></div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="comment">// not support this for #include-like directives, since that can result in</span></div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   <span class="comment">// terrible diagnostics, and does not work in GCC.</span></div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   <span class="keywordflow">if</span> (InMacroArgs) {</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = Result.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()) {</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       <span class="keywordflow">switch</span> (II-><a class="code" href="classclang_1_1IdentifierInfo.html#ae11e3e149e73feb580d57400c96154c5" title="Return the preprocessor keyword ID for this identifier.">getPPKeywordID</a>()) {</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       <span class="keywordflow">case</span> tok::pp_include:</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>       <span class="keywordflow">case</span> tok::pp_import:</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="keywordflow">case</span> tok::pp_include_next:</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>       <span class="keywordflow">case</span> tok::pp___include_macros:</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::err_embedded_include) << II-><a class="code" href="classclang_1_1IdentifierInfo.html#a94caec6a16e508e8ca39eacd278bd2c5" title="Return the actual identifier string.">getName</a>();</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       }</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>     }</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::ext_embedded_directive);</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   }</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> </div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="comment">// Temporarily enable macro expansion if set so</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   <span class="comment">// and reset to previous state when returning from this function.</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <a class="code" href="classPreprocessor_1_1ResetMacroExpansionHelper.html">ResetMacroExpansionHelper</a> helper(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <span class="keywordflow">switch</span> (Result.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   <span class="keywordflow">case</span> tok::eod:</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     <span class="keywordflow">return</span>;   <span class="comment">// null directive.</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="keywordflow">case</span> tok::code_completion:</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">if</span> (CodeComplete)</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>       CodeComplete-><a class="code" href="classclang_1_1CodeCompletionHandler.html#af7708c71e99d0a9da724bdc24d482851" title="Callback invoked when performing code completion for a preprocessor directive.">CodeCompleteDirective</a>(</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>                                     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() > 0);</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     <a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   <span class="keywordflow">case</span> tok::numeric_constant:  <span class="comment">// # 7  GNU line marker directive.</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().AsmPreprocessor)</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>       <span class="keywordflow">break</span>;  <span class="comment">// # 4 is not a preprocessor directive in .S files.</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="keywordflow">return</span> HandleDigitDirective(Result);</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = Result.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordflow">if</span> (II == 0) <span class="keywordflow">break</span>;  <span class="comment">// Not an identifier.</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> </div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     <span class="comment">// Ask what the preprocessor keyword ID is.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     <span class="keywordflow">switch</span> (II-><a class="code" href="classclang_1_1IdentifierInfo.html#ae11e3e149e73feb580d57400c96154c5" title="Return the preprocessor keyword ID for this identifier.">getPPKeywordID</a>()) {</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="comment">// C99 6.10.1 - Conditional Inclusion.</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keywordflow">case</span> tok::pp_if:</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       <span class="keywordflow">return</span> HandleIfDirective(Result, ReadAnyTokensBeforeDirective);</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="keywordflow">case</span> tok::pp_ifdef:</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       <span class="keywordflow">return</span> HandleIfdefDirective(Result, <span class="keyword">false</span>, <span class="keyword">true</span><span class="comment">/*not valid for miopt*/</span>);</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keywordflow">case</span> tok::pp_ifndef:</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>       <span class="keywordflow">return</span> HandleIfdefDirective(Result, <span class="keyword">true</span>, ReadAnyTokensBeforeDirective);</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="keywordflow">case</span> tok::pp_elif:</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       <span class="keywordflow">return</span> HandleElifDirective(Result);</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     <span class="keywordflow">case</span> tok::pp_else:</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>       <span class="keywordflow">return</span> HandleElseDirective(Result);</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">case</span> tok::pp_endif:</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       <span class="keywordflow">return</span> HandleEndifDirective(Result);</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> </div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="comment">// C99 6.10.2 - Source File Inclusion.</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>     <span class="keywordflow">case</span> tok::pp_include:</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       <span class="comment">// Handle #include.</span></div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="keywordflow">return</span> HandleIncludeDirective(SavedHash.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Result);</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordflow">case</span> tok::pp___include_macros:</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       <span class="comment">// Handle -imacros.</span></div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">return</span> HandleIncludeMacrosDirective(SavedHash.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Result); </div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span> </div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     <span class="comment">// C99 6.10.3 - Macro Replacement.</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     <span class="keywordflow">case</span> tok::pp_define:</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       <span class="keywordflow">return</span> HandleDefineDirective(Result, ImmediatelyAfterTopLevelIfndef);</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="keywordflow">case</span> tok::pp_undef:</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       <span class="keywordflow">return</span> HandleUndefDirective(Result);</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     <span class="comment">// C99 6.10.4 - Line Control.</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     <span class="keywordflow">case</span> tok::pp_line:</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       <span class="keywordflow">return</span> HandleLineDirective(Result);</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span> </div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     <span class="comment">// C99 6.10.5 - Error Directive.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <span class="keywordflow">case</span> tok::pp_error:</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>       <span class="keywordflow">return</span> HandleUserDiagnosticDirective(Result, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span> </div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>     <span class="comment">// C99 6.10.6 - Pragma Directive.</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <span class="keywordflow">case</span> tok::pp_pragma:</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       <span class="keywordflow">return</span> HandlePragmaDirective(SavedHash.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <a class="code" href="namespaceclang.html#abad0c9179d409d68fce8917ebd5276eda1c74acb27e5d894c632777b08047781e" title="The pragma was introduced via #pragma.">PIK_HashPragma</a>);</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span> </div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <span class="comment">// GNU Extensions.</span></div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     <span class="keywordflow">case</span> tok::pp_import:</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <span class="keywordflow">return</span> HandleImportDirective(SavedHash.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Result);</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     <span class="keywordflow">case</span> tok::pp_include_next:</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       <span class="keywordflow">return</span> HandleIncludeNextDirective(SavedHash.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Result);</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span> </div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <span class="keywordflow">case</span> tok::pp_warning:</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::ext_pp_warning_directive);</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>       <span class="keywordflow">return</span> HandleUserDiagnosticDirective(Result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <span class="keywordflow">case</span> tok::pp_ident:</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>       <span class="keywordflow">return</span> HandleIdentSCCSDirective(Result);</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     <span class="keywordflow">case</span> tok::pp_sccs:</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       <span class="keywordflow">return</span> HandleIdentSCCSDirective(Result);</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     <span class="keywordflow">case</span> tok::pp_assert:</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       <span class="comment">//isExtension = true;  // FIXME: implement #assert</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <span class="keywordflow">case</span> tok::pp_unassert:</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>       <span class="comment">//isExtension = true;  // FIXME: implement #unassert</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>         </div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <span class="keywordflow">case</span> tok::pp___public_macro:</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().Modules)</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>         <span class="keywordflow">return</span> HandleMacroPublicDirective(Result);</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         </div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="keywordflow">case</span> tok::pp___private_macro:</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().Modules)</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>         <span class="keywordflow">return</span> HandleMacroPrivateDirective(Result);</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     }</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   }</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> </div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   <span class="comment">// If this is a .S file, treat unknown # directives as non-preprocessor</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <span class="comment">// directives.  This is important because # may be a comment or introduce</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   <span class="comment">// various pseudo-ops.  Just return the # token and push back the following</span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>   <span class="comment">// token to be lexed next time.</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().AsmPreprocessor) {</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>     <a class="code" href="classclang_1_1Token.html">Token</a> *Toks = <span class="keyword">new</span> <a class="code" href="classclang_1_1Token.html">Token</a>[2];</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="comment">// Return the # and the token after it.</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     Toks[0] = SavedHash;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     Toks[1] = Result;</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     </div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>     <span class="comment">// If the second token is a hashhash token, then we need to translate it to</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>     <span class="comment">// unknown so the token lexer doesn't try to perform token pasting.</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     <span class="keywordflow">if</span> (Result.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::hashhash))</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>       Toks[1].setKind(tok::unknown);</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     <span class="comment">// Enter this token stream so that we re-lex the tokens.  Make sure to</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     <span class="comment">// enable macro expansion, in case the token after the # is an identifier</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <span class="comment">// that is expanded.</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <a class="code" href="classclang_1_1Preprocessor.html#a4869ffa7c1268e6e7cbd8fd5b7b0364d">EnterTokenStream</a>(Toks, 2, <span class="keyword">false</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>   }</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span> </div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>   <span class="comment">// If we reached here, the preprocessing token is not valid!</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::err_pp_invalid_directive);</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span> </div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>   <span class="comment">// Read the rest of the PP line.</span></div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> </div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>   <span class="comment">// Okay, we're done parsing the directive.</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> }</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> <span class="comment"></span></div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span> <span class="comment">/// GetLineValue - Convert a numeric token into an unsigned value, emitting</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <span class="comment">/// Diagnostic DiagID if it is invalid, and returning the value in Val.</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno"><a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">  890</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(<a class="code" href="classclang_1_1Token.html">Token</a> &DigitTok, <span class="keywordtype">unsigned</span> &Val,</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>                          <span class="keywordtype">unsigned</span> DiagID, <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP,</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>                          <span class="keywordtype">bool</span> IsGNULineDirective=<span class="keyword">false</span>) {</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>   <span class="keywordflow">if</span> (DigitTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::numeric_constant)) {</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok, DiagID);</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span> </div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     <span class="keywordflow">if</span> (DigitTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::eod))</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>   }</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span> </div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<64></a> IntegerBuffer;</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>   IntegerBuffer.resize(DigitTok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>());</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *DigitTokBegin = &IntegerBuffer[0];</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>   <span class="keywordtype">unsigned</span> ActualLength = PP.<a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(DigitTok, DigitTokBegin, &Invalid);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>   </div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>   <span class="comment">// Verify that we have a simple digit-sequence, and compute the value.  This</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>   <span class="comment">// is always a simple digit string computed in decimal, so we do this manually</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>   <span class="comment">// here.</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>   Val = 0;</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != ActualLength; ++i) {</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="comment">// C++1y [lex.fcon]p1:</span></div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     <span class="comment">//   Optional separating single quotes in a digit-sequence are ignored</span></div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="keywordflow">if</span> (DigitTokBegin[i] == <span class="charliteral">'\''</span>)</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span> </div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <span class="keywordflow">if</span> (!<a class="code" href="namespaceclang.html#a8e582a38f36d9c625d3e31bce653befe" title="Return true if this character is an ASCII digit: [0-9].">isDigit</a>(DigitTokBegin[i])) {</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PP.<a class="code" href="classclang_1_1Preprocessor.html#a1c2402f6b2e6d81788d7c8c445f8e62f">AdvanceToTokenCharacter</a>(DigitTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), i),</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>               diag::err_pp_line_digit_sequence) << IsGNULineDirective;</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     }</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> </div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     <span class="keywordtype">unsigned</span> NextVal = Val*10+(DigitTokBegin[i]-<span class="charliteral">'0'</span>);</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">if</span> (NextVal < Val) { <span class="comment">// overflow.</span></div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok, DiagID);</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     }</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     Val = NextVal;</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>   }</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span> </div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   <span class="keywordflow">if</span> (DigitTokBegin[0] == <span class="charliteral">'0'</span> && Val)</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::warn_pp_line_decimal)</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       << IsGNULineDirective;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span> </div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span> }</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span> <span class="comment"></span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span> <span class="comment">/// \brief Handle a \#line directive: C99 6.10.4.</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span> <span class="comment">/// The two acceptable forms are:</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <span class="comment">/// \verbatim</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span> <span class="comment">///   # line digit-sequence</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span> <span class="comment">///   # line digit-sequence "s-char-sequence"</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> <span class="comment">/// \endverbatim</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleLineDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="comment">// Read the line # and string argument.  Per C99 6.10.4p5, these tokens are</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   <span class="comment">// expanded.</span></div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>   <a class="code" href="classclang_1_1Token.html">Token</a> DigitTok;</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>   <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(DigitTok);</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span> </div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>   <span class="comment">// Validate the number and convert it to an unsigned.</span></div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   <span class="keywordtype">unsigned</span> LineNo;</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(DigitTok, LineNo, diag::err_pp_line_requires_integer,*<span class="keyword">this</span>))</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   </div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="keywordflow">if</span> (LineNo == 0)</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok, diag::ext_pp_line_zero);</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span> </div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   <span class="comment">// Enforce C99 6.10.4p3: "The digit sequence shall not specify ... a</span></div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>   <span class="comment">// number greater than 2147483647".  C90 requires that the line # be <= 32767.</span></div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>   <span class="keywordtype">unsigned</span> LineLimit = 32768U;</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>   <span class="keywordflow">if</span> (LangOpts.C99 || LangOpts.CPlusPlus11)</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     LineLimit = 2147483648U;</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>   <span class="keywordflow">if</span> (LineNo >= LineLimit)</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok, diag::ext_pp_line_too_big) << LineLimit;</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LangOpts.CPlusPlus11 && LineNo >= 32768U)</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(DigitTok, diag::warn_cxx98_compat_pp_line_too_big);</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> </div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>   <span class="keywordtype">int</span> FilenameID = -1;</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>   <a class="code" href="classclang_1_1Token.html">Token</a> StrTok;</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(StrTok);</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> </div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <span class="comment">// If the StrTok is "eod", then it wasn't present.  Otherwise, it must be a</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   <span class="comment">// string followed by eod.</span></div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     ; <span class="comment">// ok</span></div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::string_literal)) {</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_pp_line_invalid_filename);</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#a0a2223e4b9c06ce5b651ec8bd830dedd" title="Return true if this token is a string or character literal which has a ud-suffix.">hasUDSuffix</a>()) {</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_invalid_string_udl);</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>     <span class="comment">// Parse and validate the string, converting it into a unique ID.</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     <a class="code" href="classclang_1_1StringLiteralParser.html">StringLiteralParser</a> Literal(&StrTok, 1, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>     assert(Literal.isAscii() && <span class="stringliteral">"Didn't allow wide strings in"</span>);</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     <span class="keywordflow">if</span> (Literal.hadError)</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     <span class="keywordflow">if</span> (Literal.Pascal) {</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_pp_linemarker_invalid_filename);</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     }</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     FilenameID = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec" title="Return the uniqued ID for the specified filename.">getLineTableFilenameID</a>(Literal.GetString());</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span> </div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="comment">// Verify that there is nothing after the string, other than EOD.  Because</span></div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="comment">// of C99 6.10.4p5, macros that expand to empty tokens are ok.</span></div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"line"</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>   }</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e" title="Add a line note to the line table for the FileID and offset specified by Loc.">AddLineNote</a>(DigitTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), LineNo, FilenameID);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a78301b4ade3244c79b9731a58f115934" title="Callback invoked whenever a source file is entered or exited.">FileChanged</a>(CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>(),</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>                            <a class="code" href="classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464eaa8be07d986188367425d046a2cee13ef">PPCallbacks::RenameFile</a>,</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>                            <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>);</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> }</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment"></span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">/// ReadLineMarkerFlags - Parse and validate any flags at the end of a GNU line</span></div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">/// marker directive.</span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"><a class="code" href="PPDirectives_8cpp.html#a75755b5b06864759d076232df28e79f4"> 1014</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPDirectives_8cpp.html#a75755b5b06864759d076232df28e79f4">ReadLineMarkerFlags</a>(<span class="keywordtype">bool</span> &IsFileEntry, <span class="keywordtype">bool</span> &IsFileExit,</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>                                 <span class="keywordtype">bool</span> &IsSystemHeader, <span class="keywordtype">bool</span> &IsExternCHeader,</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>                                 <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP) {</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>   <span class="keywordtype">unsigned</span> FlagVal;</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>   <a class="code" href="classclang_1_1Token.html">Token</a> FlagTok;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(FlagTok);</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>   <span class="keywordflow">if</span> (FlagTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>   <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(FlagTok, FlagVal, diag::err_pp_linemarker_invalid_flag, PP))</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>   <span class="keywordflow">if</span> (FlagVal == 1) {</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     IsFileEntry = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(FlagTok);</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     <span class="keywordflow">if</span> (FlagTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(FlagTok, FlagVal, diag::err_pp_linemarker_invalid_flag,PP))</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FlagVal == 2) {</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     IsFileExit = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a> = PP.<a class="code" href="classclang_1_1Preprocessor.html#afca276c0a87d413e51e8848edf8f911b">getSourceManager</a>();</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     <span class="comment">// If we are leaving the current presumed file, check to make sure the</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>     <span class="comment">// presumed include stack isn't empty!</span></div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> CurFileID =</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       SM.<a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(FlagTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()).first;</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> PLoc = SM.<a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(FlagTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">if</span> (PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c" title="Return true if this object is invalid or uninitialized.">isInvalid</a>())</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>     </div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>     <span class="comment">// If there is no include loc (main file) or if the include loc is in a</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="comment">// different physical file, then we aren't in a "1" line marker flag region.</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IncLoc = PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#a49a829eb782c4ad756c4131fd138b914" title="Return the presumed include location of this location.">getIncludeLoc</a>();</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>     <span class="keywordflow">if</span> (IncLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() ||</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>         SM.<a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(IncLoc).first != CurFileID) {</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FlagTok, diag::err_pp_linemarker_invalid_pop);</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>     }</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(FlagTok);</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     <span class="keywordflow">if</span> (FlagTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(FlagTok, FlagVal, diag::err_pp_linemarker_invalid_flag,PP))</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   }</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>   <span class="comment">// We must have 3 if there are still flags.</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <span class="keywordflow">if</span> (FlagVal != 3) {</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FlagTok, diag::err_pp_linemarker_invalid_flag);</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>   }</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   IsSystemHeader = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(FlagTok);</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>   <span class="keywordflow">if</span> (FlagTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(FlagTok, FlagVal, diag::err_pp_linemarker_invalid_flag, PP))</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   <span class="comment">// We must have 4 if there is yet another flag.</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   <span class="keywordflow">if</span> (FlagVal != 4) {</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FlagTok, diag::err_pp_linemarker_invalid_flag);</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   }</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   IsExternCHeader = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(FlagTok);</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="keywordflow">if</span> (FlagTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="comment">// There are no more valid flags here.</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FlagTok, diag::err_pp_linemarker_invalid_flag);</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> }</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="comment"></span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="comment">/// HandleDigitDirective - Handle a GNU line marker directive, whose syntax is</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="comment">/// one of the following forms:</span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="comment">///     # 42</span></div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="comment">///     # 42 "file" ('1' | '2')?</span></div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="comment">///     # 42 "file" ('1' | '2')? '3' '4'?</span></div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleDigitDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &DigitTok) {</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   <span class="comment">// Validate the number and convert it to an unsigned.  GNU does not have a</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>   <span class="comment">// line # limit other than it fit in 32-bits.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <span class="keywordtype">unsigned</span> LineNo;</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>   <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a864e5ea6da89d06a9603b93beeded5e1">GetLineValue</a>(DigitTok, LineNo, diag::err_pp_linemarker_requires_integer,</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>                    *<span class="keyword">this</span>, <span class="keyword">true</span>))</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   <a class="code" href="classclang_1_1Token.html">Token</a> StrTok;</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>   <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(StrTok);</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>   <span class="keywordtype">bool</span> IsFileEntry = <span class="keyword">false</span>, IsFileExit = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   <span class="keywordtype">bool</span> IsSystemHeader = <span class="keyword">false</span>, IsExternCHeader = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>   <span class="keywordtype">int</span> FilenameID = -1;</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>   <span class="comment">// If the StrTok is "eod", then it wasn't present.  Otherwise, it must be a</span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   <span class="comment">// string followed by eod.</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>     ; <span class="comment">// ok</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::string_literal)) {</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_pp_linemarker_invalid_filename);</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#a0a2223e4b9c06ce5b651ec8bd830dedd" title="Return true if this token is a string or character literal which has a ud-suffix.">hasUDSuffix</a>()) {</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_invalid_string_udl);</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     <span class="comment">// Parse and validate the string, converting it into a unique ID.</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     <a class="code" href="classclang_1_1StringLiteralParser.html">StringLiteralParser</a> Literal(&StrTok, 1, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     assert(Literal.isAscii() && <span class="stringliteral">"Didn't allow wide strings in"</span>);</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>     <span class="keywordflow">if</span> (Literal.hadError)</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>     <span class="keywordflow">if</span> (Literal.Pascal) {</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_pp_linemarker_invalid_filename);</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     }</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     FilenameID = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec" title="Return the uniqued ID for the specified filename.">getLineTableFilenameID</a>(Literal.GetString());</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     <span class="comment">// If a filename was present, read any flags that are present.</span></div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">if</span> (<a class="code" href="PPDirectives_8cpp.html#a75755b5b06864759d076232df28e79f4">ReadLineMarkerFlags</a>(IsFileEntry, IsFileExit,</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>                             IsSystemHeader, IsExternCHeader, *<span class="keyword">this</span>))</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   }</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="comment">// Create a line note with this information.</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e" title="Add a line note to the line table for the FileID and offset specified by Loc.">AddLineNote</a>(DigitTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), LineNo, FilenameID,</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>                         IsFileEntry, IsFileExit,</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>                         IsSystemHeader, IsExternCHeader);</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> </div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   <span class="comment">// If the preprocessor has callbacks installed, notify them of the #line</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>   <span class="comment">// change.  This is used so that the line marker comes out in -E mode for</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>   <span class="comment">// example.</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>     <a class="code" href="classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464e">PPCallbacks::FileChangeReason</a> Reason = <a class="code" href="classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464eaa8be07d986188367425d046a2cee13ef">PPCallbacks::RenameFile</a>;</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>     <span class="keywordflow">if</span> (IsFileEntry)</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>       Reason = <a class="code" href="classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464ea49a706f5a1cf44ae7f0396dc8e5af5dc">PPCallbacks::EnterFile</a>;</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsFileExit)</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>       Reason = <a class="code" href="classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464ea7da6c0bdb4ba52515ca45964da83e7ea">PPCallbacks::ExitFile</a>;</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     <span class="keywordflow">if</span> (IsExternCHeader)</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>       FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35da9023f6ef1ca01526b946dd690e56d951">SrcMgr::C_ExternCSystem</a>;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsSystemHeader)</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>       FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dac3b930a303c855d8864c56fcc992074e">SrcMgr::C_System</a>;</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> </div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a78301b4ade3244c79b9731a58f115934" title="Callback invoked whenever a source file is entered or exited.">FileChanged</a>(CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>(), Reason, FileKind);</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   }</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> }</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="comment"></span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="comment">/// HandleUserDiagnosticDirective - Handle a #warning or #error directive.</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleUserDiagnosticDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok,</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>                                                  <span class="keywordtype">bool</span> isWarning) {</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>   <span class="comment">// PTH doesn't emit #warning or #error directives.</span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   <span class="keywordflow">if</span> (CurPTHLexer)</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     <span class="keywordflow">return</span> CurPTHLexer->DiscardToEndOfLine();</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> </div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <span class="comment">// Read the rest of the line raw.  We do this because we don't want macros</span></div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <span class="comment">// to be expanded and we don't require that the tokens be valid preprocessing</span></div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="comment">// tokens.  For example, this is allowed: "#warning `   'foo".  GCC does</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="comment">// collapse multiple consequtive white space between tokens, but this isn't</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="comment">// specified by the standard.</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> Message;</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   CurLexer->ReadToEndOfLine(&Message);</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> </div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="comment">// Find the first non-whitespace character, so that we can make the</span></div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>   <span class="comment">// diagnostic more succinct.</span></div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   StringRef Msg = Message.str().ltrim(<span class="stringliteral">" "</span>);</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   <span class="keywordflow">if</span> (isWarning)</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::pp_hash_warning) << Msg;</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_hash_error) << Msg;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> }</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> <span class="comment"></span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">/// HandleIdentSCCSDirective - Handle a #ident/#sccs directive.</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIdentSCCSDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>   <span class="comment">// Yes, this directive is an extension.</span></div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::ext_pp_ident_directive);</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> </div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   <span class="comment">// Read the string argument.</span></div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   <a class="code" href="classclang_1_1Token.html">Token</a> StrTok;</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>   <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(StrTok);</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>   <span class="comment">// If the token kind isn't a string, it's a malformed directive.</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::string_literal) &&</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>       StrTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::wide_string_literal)) {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_pp_malformed_ident);</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::eod))</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   }</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="keywordflow">if</span> (StrTok.<a class="code" href="classclang_1_1Token.html#a0a2223e4b9c06ce5b651ec8bd830dedd" title="Return true if this token is a string or character literal which has a ud-suffix.">hasUDSuffix</a>()) {</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(StrTok, diag::err_invalid_string_udl);</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   }</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="comment">// Verify that there is nothing after the string, other than EOD.</span></div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"ident"</span>);</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>     std::string Str = <a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(StrTok, &Invalid);</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordflow">if</span> (!Invalid)</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a3683f1d1fa513e9b6193d446a5cc2b66" title="Callback invoked when a #ident or #sccs directive is read.">Ident</a>(Tok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Str);</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   }</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> }</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> <span class="comment"></span></div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> <span class="comment">/// \brief Handle a #public directive.</span></div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleMacroPublicDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   <a class="code" href="classclang_1_1Token.html">Token</a> MacroNameTok;</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>   ReadMacroName(MacroNameTok, 2);</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   </div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="comment">// Error reading macro name?  If so, diagnostic already issued.</span></div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> </div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   <span class="comment">// Check to see if this is the last token on the #__public_macro line.</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"__public_macro"</span>);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <span class="comment">// Okay, we finally have a valid identifier to undef.</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD = <a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(II);</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   </div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   <span class="comment">// If the macro is not defined, this is an error.</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>   <span class="keywordflow">if</span> (MD == 0) {</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_pp_visibility_non_macro) << II;</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>   }</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>   </div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <span class="comment">// Note that this macro has now been exported.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <a class="code" href="classclang_1_1Preprocessor.html#aff92a28cdfbaae74c5669b8eb5af7004" title="Add a directive to the macro directive history for this identifier.">appendMacroDirective</a>(II, AllocateVisibilityMacroDirective(</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>                                 MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <span class="comment">/*IsPublic=*/</span><span class="keyword">true</span>));</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> }</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="comment"></span></div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="comment">/// \brief Handle a #private directive.</span></div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleMacroPrivateDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <a class="code" href="classclang_1_1Token.html">Token</a> MacroNameTok;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   ReadMacroName(MacroNameTok, 2);</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   </div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>   <span class="comment">// Error reading macro name?  If so, diagnostic already issued.</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   </div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   <span class="comment">// Check to see if this is the last token on the #__private_macro line.</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"__private_macro"</span>);</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>   </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>   <span class="comment">// Okay, we finally have a valid identifier to undef.</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>   <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD = <a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(II);</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>   </div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>   <span class="comment">// If the macro is not defined, this is an error.</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="keywordflow">if</span> (MD == 0) {</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::err_pp_visibility_non_macro) << II;</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   }</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>   </div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   <span class="comment">// Note that this macro has now been marked private.</span></div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>   <a class="code" href="classclang_1_1Preprocessor.html#aff92a28cdfbaae74c5669b8eb5af7004" title="Add a directive to the macro directive history for this identifier.">appendMacroDirective</a>(II, AllocateVisibilityMacroDirective(</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>                                MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <span class="comment">/*IsPublic=*/</span><span class="keyword">false</span>));</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> }</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> <span class="comment">// Preprocessor Include Directive Handling.</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="comment"></span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="comment">/// GetIncludeFilenameSpelling - Turn the specified lexer token into a fully</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="comment">/// checked and spelled filename, e.g. as an operand of \#include. This returns</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="comment">/// true if the input filename was in <>'s or false if it were in ""'s.  The</span></div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> <span class="comment">/// caller is expected to provide a buffer that is large enough to hold the</span></div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> <span class="comment">/// spelling of the filename, but is also expected to handle the case when</span></div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="comment">/// this method decides to use a different buffer.</span></div>
+<div class="line"><a name="l01291"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#a231c406d19ba3f00b27fec221dc23932"> 1291</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Preprocessor.html#a231c406d19ba3f00b27fec221dc23932" title="Turn the specified lexer token into a fully checked and spelled filename, e.g. as an operand of #incl...">Preprocessor::GetIncludeFilenameSpelling</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc,</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>                                               StringRef &Buffer) {</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>   <span class="comment">// Get the text form of the filename.</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>   assert(!Buffer.empty() && <span class="stringliteral">"Can't have tokens with empty spellings!"</span>);</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>   <span class="comment">// Make sure the filename is <x> or "x".</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   <span class="keywordtype">bool</span> isAngled;</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   <span class="keywordflow">if</span> (Buffer[0] == <span class="charliteral">'<'</span>) {</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>     <span class="keywordflow">if</span> (Buffer.back() != <span class="charliteral">'>'</span>) {</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Loc, diag::err_pp_expects_filename);</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>       Buffer = StringRef();</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>     }</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>     isAngled = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Buffer[0] == <span class="charliteral">'"'</span>) {</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     <span class="keywordflow">if</span> (Buffer.back() != <span class="charliteral">'"'</span>) {</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Loc, diag::err_pp_expects_filename);</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>       Buffer = StringRef();</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>     }</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     isAngled = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Loc, diag::err_pp_expects_filename);</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     Buffer = StringRef();</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   }</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> </div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>   <span class="comment">// Diagnose #include "" as invalid.</span></div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   <span class="keywordflow">if</span> (Buffer.size() <= 2) {</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Loc, diag::err_pp_empty_filename);</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     Buffer = StringRef();</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>   }</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>   <span class="comment">// Skip the brackets.</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>   Buffer = Buffer.substr(1, Buffer.size()-2);</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>   <span class="keywordflow">return</span> isAngled;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> }</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> <span class="comment"></span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> <span class="comment">/// \brief Handle cases where the \#include name is expanded from a macro</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> <span class="comment">/// as multiple tokens, which need to be glued together.</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="comment">/// This occurs for code like:</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> <span class="comment">/// \code</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> <span class="comment">///    \#define FOO <a/b.h></span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="comment">///    \#include FOO</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="comment">/// \endcode</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> <span class="comment">/// because in this case, "<a/b.h>" is returned as 7 tokens, not one.</span></div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="comment">/// This code concatenates and consumes tokens up to the '>' token.  It returns</span></div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> <span class="comment">/// false if the > was found, otherwise it returns true if it finds and consumes</span></div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> <span class="comment">/// the EOD marker.</span></div>
+<div class="line"><a name="l01343"></a><span class="lineno"><a class="code" href="classclang_1_1Preprocessor.html#a0d02b408c3b83f24306e3ef44a1f798b"> 1343</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Preprocessor.html#a0d02b408c3b83f24306e3ef44a1f798b" title="Handle cases where the #include name is expanded from a macro as multiple tokens, which need to be gl...">Preprocessor::ConcatenateIncludeName</a>(</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>                                         <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> &FilenameBuffer,</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>                                           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> &End) {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   <a class="code" href="classclang_1_1Token.html">Token</a> CurTok;</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> </div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>   <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(CurTok);</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   <span class="keywordflow">while</span> (CurTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::eod)) {</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>     End = CurTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     </div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     <span class="comment">// FIXME: Provide code completion for #includes.</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     <span class="keywordflow">if</span> (CurTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::code_completion)) {</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>       <a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>       <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(CurTok);</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     }</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> </div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>     <span class="comment">// Append the spelling of this token to the buffer. If there was a space</span></div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     <span class="comment">// before it, add it now.</span></div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <span class="keywordflow">if</span> (CurTok.<a class="code" href="classclang_1_1Token.html#aa83b4bb0309d617e936a122e85958b22" title="Return true if this token has whitespace before it.">hasLeadingSpace</a>())</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>       FilenameBuffer.push_back(<span class="charliteral">' '</span>);</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> </div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>     <span class="comment">// Get the spelling of the token, directly into FilenameBuffer if possible.</span></div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <span class="keywordtype">unsigned</span> PreAppendSize = FilenameBuffer.size();</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>     FilenameBuffer.resize(PreAppendSize+CurTok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>());</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *BufPtr = &FilenameBuffer[PreAppendSize];</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     <span class="keywordtype">unsigned</span> ActualLen = <a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(CurTok, BufPtr);</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="comment">// If the token was spelled somewhere else, copy it into FilenameBuffer.</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="keywordflow">if</span> (BufPtr != &FilenameBuffer[PreAppendSize])</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>       memcpy(&FilenameBuffer[PreAppendSize], BufPtr, ActualLen);</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> </div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     <span class="comment">// Resize FilenameBuffer to the correct size.</span></div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     <span class="keywordflow">if</span> (CurTok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>() != ActualLen)</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>       FilenameBuffer.resize(PreAppendSize+ActualLen);</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>     <span class="comment">// If we found the '>' marker, return success.</span></div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <span class="keywordflow">if</span> (CurTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::greater))</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(CurTok);</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   }</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> </div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>   <span class="comment">// If we hit the eod marker, emit an error and return true so that the caller</span></div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>   <span class="comment">// knows the EOD has been read.</span></div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(CurTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_expects_filename);</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> }</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <span class="comment"></span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="comment">/// HandleIncludeDirective - The "\#include" tokens have just been read, read</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="comment">/// the file to be included from the lexer, then include it!  This is a common</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="comment">/// routine with functionality shared between \#include, \#include_next and</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="comment">/// \#import.  LookupFrom is set when this is a \#include_next directive, it</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="comment">/// specifies the file to start searching from.</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIncludeDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> HashLoc, </div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>                                           <a class="code" href="classclang_1_1Token.html">Token</a> &IncludeTok,</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> *LookupFrom,</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>                                           <span class="keywordtype">bool</span> isImport) {</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>   <a class="code" href="classclang_1_1Token.html">Token</a> FilenameTok;</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>   CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a0c0bbb460799347ef2b9a1b92fd8524a" title="After the preprocessor has parsed a #include, lex and (potentially) macro expand the filename...">LexIncludeFilename</a>(FilenameTok);</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> </div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>   <span class="comment">// Reserve a buffer to get the spelling.</span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> FilenameBuffer;</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   StringRef Filename;</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> End;</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> CharEnd; <span class="comment">// the end of this directive, in characters</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>   </div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="keywordflow">switch</span> (FilenameTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>   <span class="keywordflow">case</span> tok::eod:</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <span class="comment">// If the token kind is EOD, the error has already been diagnosed.</span></div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>   <span class="keywordflow">case</span> tok::angle_string_literal:</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   <span class="keywordflow">case</span> tok::string_literal:</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>     Filename = <a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(FilenameTok, FilenameBuffer);</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     End = FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>     CharEnd = End.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(FilenameTok.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>());</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> </div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   <span class="keywordflow">case</span> tok::less:</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>     <span class="comment">// This could be a <foo/bar.h> file coming from a macro expansion.  In this</span></div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     <span class="comment">// case, glue the tokens together into FilenameBuffer and interpret those.</span></div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     FilenameBuffer.push_back(<span class="charliteral">'<'</span>);</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0d02b408c3b83f24306e3ef44a1f798b" title="Handle cases where the #include name is expanded from a macro as multiple tokens, which need to be gl...">ConcatenateIncludeName</a>(FilenameBuffer, End))</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>       <span class="keywordflow">return</span>;   <span class="comment">// Found <eod> but no ">"?  Diagnostic already emitted.</span></div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     Filename = FilenameBuffer.str();</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     CharEnd = End.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(1);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_expects_filename);</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>   }</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>   <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> FilenameRange</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     = <a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">CharSourceRange::getCharRange</a>(FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CharEnd);</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   StringRef OriginalFilename = Filename;</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>   <span class="keywordtype">bool</span> isAngled =</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>     <a class="code" href="classclang_1_1Preprocessor.html#a231c406d19ba3f00b27fec221dc23932" title="Turn the specified lexer token into a fully checked and spelled filename, e.g. as an operand of #incl...">GetIncludeFilenameSpelling</a>(FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Filename);</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>   <span class="comment">// If GetIncludeFilenameSpelling set the start ptr to null, there was an</span></div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>   <span class="comment">// error.</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>   <span class="keywordflow">if</span> (Filename.empty()) {</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>   }</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   <span class="comment">// Verify that there is nothing after the filename, other than EOD.  Note that</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <span class="comment">// we allow macros that expand to nothing after the filename, because this</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="comment">// falls into the category of "#include pp-tokens new-line" specified in</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   <span class="comment">// C99 6.10.2p4.</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(IncludeTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#ae69779507a5e059eecf91dcfcee5d958" title="Return the beginning of the actual null-terminated string for this identifier.">getNameStart</a>(), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   <span class="comment">// Check that we don't have infinite #include recursion.</span></div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   <span class="keywordflow">if</span> (IncludeMacroStack.size() == MaxAllowedIncludeStackDepth-1) {</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameTok, diag::err_pp_include_too_deep);</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   }</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>   <span class="comment">// Complain about attempts to #include files in an audit pragma.</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="keywordflow">if</span> (PragmaARCCFCodeAuditedLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(HashLoc, diag::err_pp_include_in_arc_cf_code_audited);</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PragmaARCCFCodeAuditedLoc, diag::note_pragma_entered_here);</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> </div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>     <span class="comment">// Immediately leave the pragma.</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     PragmaARCCFCodeAuditedLoc = <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>();</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   }</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>   <span class="keywordflow">if</span> (HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a286f7048b35f5af3eeb46f940e563736" title="Checks whether the map exists or not.">HasIncludeAliasMap</a>()) {</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     <span class="comment">// Map the filename with the brackets still attached.  If the name doesn't </span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>     <span class="comment">// map to anything, fall back on the filename we've already gotten the </span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>     <span class="comment">// spelling for.</span></div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>     StringRef NewName = HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#af02f0b6902f59ca0c55659e340754cc6">MapHeaderToIncludeAlias</a>(OriginalFilename);</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>     <span class="keywordflow">if</span> (!NewName.empty())</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>       Filename = NewName;</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   }</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>   <span class="comment">// Search include directories.</span></div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> *CurDir;</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<1024></a> SearchPath;</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<1024></a> RelativePath;</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="comment">// We get the raw path only if we have 'Callbacks' to which we later pass</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="comment">// the path.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">ModuleMap::KnownHeader</a> SuggestedModule;</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> FilenameLoc = FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File = <a class="code" href="classclang_1_1Preprocessor.html#abaaffb22cc7abb1535773930ec1e5cfb" title="Given a "foo" or <foo> reference, look up the indicated file.">LookupFile</a>(</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>       FilenameLoc, Filename, isAngled, LookupFrom, CurDir,</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>       Callbacks ? &SearchPath : <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, Callbacks ? &RelativePath : NULL,</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>       HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a2987826005bf4f311ff97f2a54503010" title="Retrieve the header-search options with which this header search was initialized.">getHeaderSearchOpts</a>().<a class="code" href="classclang_1_1HeaderSearchOptions.html#a345ccf6903b35488958d5a0cc54862bd" title="Interpret module maps. This option is implied by full modules.">ModuleMaps</a> ? &SuggestedModule : 0);</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>   <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     <span class="keywordflow">if</span> (!File) {</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>       <span class="comment">// Give the clients a chance to recover.</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>       <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> RecoveryPath;</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>       <span class="keywordflow">if</span> (Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a3045151545f987256bfa8d978916ef00" title="Callback invoked whenever an inclusion directive results in a file-not-found error.">FileNotFound</a>(Filename, RecoveryPath)) {</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *DE = FileMgr.<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(RecoveryPath)) {</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>           <span class="comment">// Add the recovery path to the list of search paths.</span></div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>           <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> DL(DE, <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>           HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#aff9a70dc2b1e2681fe43b3098d3afddd" title="Add an additional search path.">AddSearchPath</a>(DL, isAngled);</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>           </div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>           <span class="comment">// Try the lookup again, skipping the cache.</span></div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>           File = <a class="code" href="classclang_1_1Preprocessor.html#abaaffb22cc7abb1535773930ec1e5cfb" title="Given a "foo" or <foo> reference, look up the indicated file.">LookupFile</a>(FilenameLoc, Filename, isAngled, LookupFrom, CurDir,</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>                             0, 0, HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a2987826005bf4f311ff97f2a54503010" title="Retrieve the header-search options with which this header search was initialized.">getHeaderSearchOpts</a>().<a class="code" href="classclang_1_1HeaderSearchOptions.html#a345ccf6903b35488958d5a0cc54862bd" title="Interpret module maps. This option is implied by full modules.">ModuleMaps</a></div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>                                       ? &SuggestedModule</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>                                       : 0,</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>                             <span class="comment">/*SkipCache*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>         }</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>       }</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     }</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     </div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     <span class="keywordflow">if</span> (!SuggestedModule || !<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().Modules) {</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>       <span class="comment">// Notify the callback object that we've seen an inclusion directive.</span></div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>       Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a557d9738c329793513a6f57d6b60de52" title="Callback invoked whenever an inclusion directive of any kind (#include, #import, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.">InclusionDirective</a>(HashLoc, IncludeTok, Filename, isAngled,</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>                                     FilenameRange, File,</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>                                     SearchPath, RelativePath,</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>                                     <span class="comment">/*ImportedModule=*/</span>0);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     }</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>   }</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   </div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="keywordflow">if</span> (File == 0) {</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>     <span class="keywordflow">if</span> (!SuppressIncludeNotFoundError) {</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>       <span class="comment">// If the file could not be located and it was included via angle </span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>       <span class="comment">// brackets, we can attempt a lookup as though it were a quoted path to</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>       <span class="comment">// provide the user with a possible fixit.</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>       <span class="keywordflow">if</span> (isAngled) {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>         File = <a class="code" href="classclang_1_1Preprocessor.html#abaaffb22cc7abb1535773930ec1e5cfb" title="Given a "foo" or <foo> reference, look up the indicated file.">LookupFile</a>(</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>             FilenameLoc, Filename, <span class="keyword">false</span>, LookupFrom, CurDir,</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>             Callbacks ? &SearchPath : 0, Callbacks ? &RelativePath : 0,</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>             HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a2987826005bf4f311ff97f2a54503010" title="Retrieve the header-search options with which this header search was initialized.">getHeaderSearchOpts</a>().<a class="code" href="classclang_1_1HeaderSearchOptions.html#a345ccf6903b35488958d5a0cc54862bd" title="Interpret module maps. This option is implied by full modules.">ModuleMaps</a> ? &SuggestedModule : 0);</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>         <span class="keywordflow">if</span> (File) {</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>           <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> Range(FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CharEnd);</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameTok, diag::err_pp_file_not_found_not_fatal) << </div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>             Filename << </div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>             <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(Range, <span class="stringliteral">"\""</span> + Filename.str() + <span class="stringliteral">"\""</span>);</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>         }</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>       }</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>       <span class="comment">// If the file is still not found, just go with the vanilla diagnostic</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>       <span class="keywordflow">if</span> (!File)</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(FilenameTok, diag::err_pp_file_not_found) << Filename;</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>     }</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>     <span class="keywordflow">if</span> (!File)</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>   }</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>   <span class="comment">// If we are supposed to import a module rather than including the header,</span></div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   <span class="comment">// do so now.</span></div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>   <span class="keywordflow">if</span> (SuggestedModule && <a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().Modules) {</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     <span class="comment">// Compute the module access path corresponding to this module.</span></div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>     <span class="comment">// FIXME: Should we have a second loadModule() overload to avoid this</span></div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     <span class="comment">// extra lookup step?</span></div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<IdentifierInfo *, SourceLocation></a>, 2> Path;</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod = SuggestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>(); Mod; Mod = Mod-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>)</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>       Path.push_back(std::make_pair(<a class="code" href="classclang_1_1Preprocessor.html#acbacad0c69321bd63102c7697a95b67d">getIdentifierInfo</a>(Mod->Name),</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>                                     FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()));</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>     std::reverse(Path.begin(), Path.end());</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> </div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>     <span class="comment">// Warn that we're replacing the include/import with a module import.</span></div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> PathString;</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Path.size(); I != N; ++I) {</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>       <span class="keywordflow">if</span> (I)</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>         PathString += <span class="charliteral">'.'</span>;</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>       PathString += Path[I].first->getName();</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>     }</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     <span class="keywordtype">int</span> IncludeKind = 0;</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>     </div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>     <span class="keywordflow">switch</span> (IncludeTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#ae11e3e149e73feb580d57400c96154c5" title="Return the preprocessor keyword ID for this identifier.">getPPKeywordID</a>()) {</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>     <span class="keywordflow">case</span> tok::pp_include:</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>       IncludeKind = 0;</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>       </div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>     <span class="keywordflow">case</span> tok::pp_import:</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>       IncludeKind = 1;</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>       <span class="keywordflow">break</span>;        </div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>         </div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <span class="keywordflow">case</span> tok::pp_include_next:</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>       IncludeKind = 2;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>         </div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     <span class="keywordflow">case</span> tok::pp___include_macros:</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>       IncludeKind = 3;</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         </div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>       llvm_unreachable(<span class="stringliteral">"unknown include directive kind"</span>);</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>     }</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> </div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>     <span class="comment">// Determine whether we are actually building the module that this</span></div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     <span class="comment">// include directive maps to.</span></div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>     <span class="keywordtype">bool</span> BuildingImportedModule</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>       = Path[0].first->getName() == <a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a>;</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>     </div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     <span class="keywordflow">if</span> (!BuildingImportedModule && <a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().ObjC2) {</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>       <span class="comment">// If we're not building the imported module, warn that we're going</span></div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>       <span class="comment">// to automatically turn this inclusion directive into a module import.</span></div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>       <span class="comment">// We only do this in Objective-C, where we have a module-import syntax.</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>       <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> ReplaceRange(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(HashLoc, CharEnd), </div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>                                    <span class="comment">/*IsTokenRange=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(HashLoc, diag::warn_auto_module_import)</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>         << IncludeKind << PathString </div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>         << <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(ReplaceRange,</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>              <span class="stringliteral">"@import "</span> + PathString.str().str() + <span class="stringliteral">";"</span>);</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     }</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     </div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>     <span class="comment">// Load the module. Only make macros visible. We'll make the declarations</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>     <span class="comment">// visible when the parser gets here.</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>     <a class="code" href="classclang_1_1Module.html#a1ca9cf81299c2f40c68d04f44eea8a67" title="Describes the visibility of the various names within a particular module.">Module::NameVisibilityKind</a> <a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a> = <a class="code" href="classclang_1_1Module.html#a1ca9cf81299c2f40c68d04f44eea8a67add78e40d0215633fda3035b44bbc13bb" title="Only the macro names in this module are visible.">Module::MacrosVisible</a>;</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>     <a class="code" href="classclang_1_1ModuleLoadResult.html" title="Describes the result of attempting to load a module.">ModuleLoadResult</a> Imported</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>       = TheModuleLoader.<a class="code" href="classclang_1_1ModuleLoader.html#a5bc95ba1a540213d8befdc42770d3ac8" title="Attempt to load the given module.">loadModule</a>(IncludeTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), Path, <a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>,</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>                                    <span class="comment">/*IsIncludeDirective=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     assert((Imported == 0 || Imported == SuggestedModule.<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>()) &&</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>            <span class="stringliteral">"the imported module is different than the suggested one"</span>);</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>     <span class="keywordflow">if</span> (!Imported && <a class="code" href="classclang_1_1Preprocessor.html#ae1c1e103bc4604974fae1cfb5df84bc8">hadModuleLoaderFatalFailure</a>()) {</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>       <span class="comment">// With a fatal failure in the module loader, we abort parsing.</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>       <a class="code" href="classclang_1_1Token.html">Token</a> &Result = IncludeTok;</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>       <span class="keywordflow">if</span> (CurLexer) {</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>         Result.<a class="code" href="classclang_1_1Token.html#ae1e49685acde6208c1c83f38540832c1" title="Reset all flags to cleared.">startToken</a>();</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>         CurLexer->FormTokenWithChars(Result, CurLexer->BufferEnd, <a class="code" href="namespaceclang_1_1comments_1_1tok.html#af269e1299a7e813dd4471ab24630e01aac4904dc9309fe9cf0fe76ff45d54f265">tok::eof</a>);</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>         CurLexer->cutOffLexing();</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>         assert(CurPTHLexer && <span class="stringliteral">"#include but no current lexer set!"</span>);</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>         CurPTHLexer->getEOF(Result);</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>       }</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>     }</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> </div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>     <span class="comment">// If this header isn't part of the module we're building, we're done.</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>     <span class="keywordflow">if</span> (!BuildingImportedModule && Imported) {</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>       <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>         Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a557d9738c329793513a6f57d6b60de52" title="Callback invoked whenever an inclusion directive of any kind (#include, #import, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.">InclusionDirective</a>(HashLoc, IncludeTok, Filename, isAngled,</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>                                       FilenameRange, File,</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>                                       SearchPath, RelativePath, Imported);</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>       }</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>       <span class="keywordflow">if</span> (IncludeKind != 3) {</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>         <span class="comment">// Let the parser know that we hit a module import, and it should</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>         <span class="comment">// make the module visible.</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>         <span class="comment">// FIXME: Produce this as the current token directly, rather than</span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>         <span class="comment">// allocating a new token for it.</span></div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>         <a class="code" href="classclang_1_1Token.html">Token</a> *Tok = <span class="keyword">new</span> <a class="code" href="classclang_1_1Token.html">Token</a>[1];</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>         Tok[0].<a class="code" href="classclang_1_1Token.html#ae1e49685acde6208c1c83f38540832c1" title="Reset all flags to cleared.">startToken</a>();</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>         Tok[0].<a class="code" href="classclang_1_1Token.html#a44b757baba649ad00b79f78671a8a2aa">setKind</a>(tok::annot_module_include);</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>         Tok[0].<a class="code" href="classclang_1_1Token.html#ab52b4059e1b2e648c78b7c326190d2ce">setLocation</a>(HashLoc);</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>         Tok[0].<a class="code" href="classclang_1_1Token.html#a099e5c28a0dd559fc4483a30976b51af">setAnnotationEndLoc</a>(End);</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>         Tok[0].<a class="code" href="classclang_1_1Token.html#acb46f6c2251512aae2c5772e88cc34b3">setAnnotationValue</a>(Imported);</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>         <a class="code" href="classclang_1_1Preprocessor.html#a4869ffa7c1268e6e7cbd8fd5b7b0364d">EnterTokenStream</a>(Tok, 1, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>       }</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>     }</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> </div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>     <span class="comment">// If we failed to find a submodule that we expected to find, we can</span></div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>     <span class="comment">// continue. Otherwise, there's an error in the included file, so we</span></div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>     <span class="comment">// don't want to include it.</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="keywordflow">if</span> (!BuildingImportedModule && !Imported.<a class="code" href="classclang_1_1ModuleLoadResult.html#af702a9833d82caa47f92d15ea8bbeb73" title="Determines whether the module, which failed to load, was actually a submodule that we expected to see...">isMissingExpected</a>()) {</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>     }</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>   }</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> </div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>   <span class="keywordflow">if</span> (Callbacks && SuggestedModule) {</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>     <span class="comment">// We didn't notify the callback object that we've seen an inclusion</span></div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     <span class="comment">// directive before. Now that we are parsing the include normally and not</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>     <span class="comment">// turning it to a module import, notify the callback object.</span></div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a557d9738c329793513a6f57d6b60de52" title="Callback invoked whenever an inclusion directive of any kind (#include, #import, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.">InclusionDirective</a>(HashLoc, IncludeTok, Filename, isAngled,</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>                                   FilenameRange, File,</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>                                   SearchPath, RelativePath,</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>                                   <span class="comment">/*ImportedModule=*/</span>0);</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>   }</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>   </div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>   <span class="comment">// The #included file will be considered to be a system header if either it is</span></div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>   <span class="comment">// in a system include directory, or if the #includer is a system include</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>   <span class="comment">// header.</span></div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>   <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileCharacter =</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>     std::max(HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a1139cf5a4faa0d4a4235cc09e241f669" title="Return whether the specified file is a normal header, a system header, or a C++ friendly system heade...">getFileDirFlavor</a>(File),</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>              SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a0a6faf535b8f3f23e64be0cb4eac99c3" title="Return the file characteristic of the specified source location, indicating whether this is a normal ...">getFileCharacteristic</a>(FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()));</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> </div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>   <span class="comment">// Ask HeaderInfo if we should enter this #include file.  If not, #including</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>   <span class="comment">// this file will have no effect.</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>   <span class="keywordflow">if</span> (!HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a200f5d2b2401cc74417d0028c69332e6" title="Mark the specified file as a target of of a #include, #include_next, or #import directive.">ShouldEnterIncludeFile</a>(File, isImport)) {</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>     <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>       Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#ab5b338a0670188eb05fa7685bbfb5128" title="Callback invoked whenever a source file is skipped as the result of header guard optimization.">FileSkipped</a>(*File, FilenameTok, FileCharacter);</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>   }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>   <span class="comment">// Look up the file, create a File ID for it.</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IncludePos = End;</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>   <span class="comment">// If the filename string was the result of macro expansions, set the include</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>   <span class="comment">// position on the file where it will be included and after the expansions.</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>   <span class="keywordflow">if</span> (IncludePos.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>())</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>     IncludePos = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a532619980c29dd7590f84a8abc8dcfcc" title="Given a SourceLocation object, return the range of tokens covered by the expansion the ultimate file...">getExpansionRange</a>(IncludePos).second;</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>   <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#acefb5d310242160b1910104bbf4d8b2d" title="Create a new FileID that represents the specified file being #included from the specified IncludePosi...">createFileID</a>(File, IncludePos, FileCharacter);</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>   assert(!FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>() && <span class="stringliteral">"Expected valid file ID"</span>);</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> </div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>   <span class="comment">// Finally, if all is good, enter the new file!</span></div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>   <a class="code" href="classclang_1_1Preprocessor.html#a89fb5fef6b3a02bdf4683761f21983bc">EnterSourceFile</a>(FID, CurDir, FilenameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> }</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> <span class="comment"></span></div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> <span class="comment">/// HandleIncludeNextDirective - Implements \#include_next.</span></div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIncludeNextDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> HashLoc,</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>                                               <a class="code" href="classclang_1_1Token.html">Token</a> &IncludeNextTok) {</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(IncludeNextTok, diag::ext_pp_include_next_directive);</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> </div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>   <span class="comment">// #include_next is like #include, except that we start searching after</span></div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>   <span class="comment">// the current found directory.  If we can't do this, issue a</span></div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>   <span class="comment">// diagnostic.</span></div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryLookup.html">DirectoryLookup</a> *Lookup = CurDirLookup;</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#ab581c0e71888401a14771ca1d5c70612" title="Return true if we're in the top-level file, not in a #include.">isInPrimaryFile</a>()) {</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>     Lookup = 0;</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(IncludeNextTok, diag::pp_include_next_in_primary);</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Lookup == 0) {</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(IncludeNextTok, diag::pp_include_next_absolute_path);</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     <span class="comment">// Start looking up in the next directory.</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>     ++Lookup;</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>   }</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> </div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>   <span class="keywordflow">return</span> HandleIncludeDirective(HashLoc, IncludeNextTok, Lookup);</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> }</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> <span class="comment"></span></div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> <span class="comment">/// HandleMicrosoftImportDirective - Implements \#import for Microsoft Mode</span></div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleMicrosoftImportDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>   <span class="comment">// The Microsoft #import directive takes a type library and generates header</span></div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>   <span class="comment">// files from it, and includes those.  This is beyond the scope of what clang</span></div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>   <span class="comment">// does, so we ignore it and error out.  However, #import can optionally have</span></div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>   <span class="comment">// trailing attributes that span multiple lines.  We're going to eat those</span></div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   <span class="comment">// so we can continue processing from there.</span></div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_import_directive_ms );</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> </div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>   <span class="comment">// Read tokens until we get to the end of the directive.  Note that the </span></div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   <span class="comment">// directive can be split over multiple lines using the backslash character.</span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> }</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="comment"></span></div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> <span class="comment">/// HandleImportDirective - Implements \#import.</span></div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleImportDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> HashLoc,</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>                                          <a class="code" href="classclang_1_1Token.html">Token</a> &ImportTok) {</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>   <span class="keywordflow">if</span> (!LangOpts.ObjC1) {  <span class="comment">// #import is standard for ObjC.</span></div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>     <span class="keywordflow">if</span> (LangOpts.MicrosoftMode)</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>       <span class="keywordflow">return</span> HandleMicrosoftImportDirective(ImportTok);</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(ImportTok, diag::ext_pp_import_directive);</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>   }</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>   <span class="keywordflow">return</span> HandleIncludeDirective(HashLoc, ImportTok, 0, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> }</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="comment"></span></div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="comment">/// HandleIncludeMacrosDirective - The -imacros command line option turns into a</span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="comment">/// pseudo directive in the predefines buffer.  This handles it by sucking all</span></div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> <span class="comment">/// tokens through the preprocessor and discarding them (only keeping the side</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> <span class="comment">/// effects on the preprocessor).</span></div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIncludeMacrosDirective(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> HashLoc,</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>                                                 <a class="code" href="classclang_1_1Token.html">Token</a> &IncludeMacrosTok) {</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <span class="comment">// This directive should only occur in the predefines buffer.  If not, emit an</span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>   <span class="comment">// error and reject it.</span></div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = IncludeMacrosTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>   <span class="keywordflow">if</span> (strcmp(SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#abe4f1b848fbaa9d9ce39c5ceab826965" title="Return the filename or buffer identifier of the buffer the location is in.">getBufferName</a>(Loc), <span class="stringliteral">"<built-in>"</span>) != 0) {</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(IncludeMacrosTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>          diag::pp_include_macros_out_of_predefines);</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   }</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> </div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>   <span class="comment">// Treat this as a normal #include for checking purposes.  If this is</span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>   <span class="comment">// successful, it will push a new lexer onto the include stack.</span></div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>   HandleIncludeDirective(HashLoc, IncludeMacrosTok, 0, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span> </div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>   <a class="code" href="classclang_1_1Token.html">Token</a> TmpTok;</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>     <a class="code" href="classclang_1_1Preprocessor.html#a4c7cf0c496e4a7744bc1731d92a4431e" title="Lex - Lex the next token for this preprocessor.">Lex</a>(TmpTok);</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     assert(TmpTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(<a class="code" href="namespaceclang_1_1comments_1_1tok.html#af269e1299a7e813dd4471ab24630e01aac4904dc9309fe9cf0fe76ff45d54f265">tok::eof</a>) && <span class="stringliteral">"Didn't find end of -imacros!"</span>);</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   } <span class="keywordflow">while</span> (TmpTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::hashhash));</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> }</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> <span class="comment">// Preprocessor Macro Directive Handling.</span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="comment"></span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> <span class="comment">/// ReadMacroDefinitionArgList - The ( starting an argument list of a macro</span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> <span class="comment">/// definition has just been read.  Lex the rest of the arguments and the</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> <span class="comment">/// closing ), updating MI with what we learn.  Return true if an error occurs</span></div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> <span class="comment">/// parsing the arg list.</span></div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <span class="comment"></span><span class="keywordtype">bool</span> Preprocessor::ReadMacroDefinitionArgList(<a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI, <a class="code" href="classclang_1_1Token.html">Token</a> &Tok) {</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<IdentifierInfo*, 32></a> Arguments;</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> </div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>     <span class="keywordflow">switch</span> (Tok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>     <span class="keywordflow">case</span> tok::r_paren:</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>       <span class="comment">// Found the end of the argument list.</span></div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       <span class="keywordflow">if</span> (Arguments.empty())  <span class="comment">// #define FOO()</span></div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>       <span class="comment">// Otherwise we have #define FOO(A,)</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_expected_ident_in_arg_list);</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>     <span class="keywordflow">case</span> tok::ellipsis:  <span class="comment">// #define X(... -> C99 varargs</span></div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>       <span class="keywordflow">if</span> (!LangOpts.C99)</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, LangOpts.CPlusPlus11 ? </div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>              diag::warn_cxx98_compat_variadic_macro :</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>              diag::ext_variadic_macro);</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> </div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>       <span class="comment">// OpenCL v1.2 s6.9.e: variadic macros are not supported.</span></div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>       <span class="keywordflow">if</span> (LangOpts.OpenCL) {</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_opencl_variadic_macros);</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>       }</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>       <span class="comment">// Lex the token after the identifier.</span></div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>       <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::r_paren)) {</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_missing_rparen_in_macro_def);</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>       }</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>       <span class="comment">// Add the __VA_ARGS__ identifier as an argument.</span></div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>       Arguments.push_back(Ident__VA_ARGS__);</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>       MI-><a class="code" href="classclang_1_1MacroInfo.html#ae4fb0938aa11f096a98513bd89337cac" title="Varargs querying methods. This can only be set for function-like macros.">setIsC99Varargs</a>();</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       MI-><a class="code" href="classclang_1_1MacroInfo.html#ab4252f3e07830f901ce6162d4f3cbcd5" title="Set the specified list of identifiers as the argument list for this macro.">setArgumentList</a>(&Arguments[0], Arguments.size(), BP);</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>     <span class="keywordflow">case</span> tok::eod:  <span class="comment">// #define X(</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_missing_rparen_in_macro_def);</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>       <span class="comment">// Handle keywords and identifiers here to accept things like</span></div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>       <span class="comment">// #define Foo(for) for.</span></div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>       <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = Tok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>       <span class="keywordflow">if</span> (II == 0) {</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>         <span class="comment">// #define X(1</span></div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_invalid_tok_in_arg_list);</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>       }</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> </div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>       <span class="comment">// If this is already used as an argument, it is used multiple times (e.g.</span></div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>       <span class="comment">// #define X(A,A.</span></div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>       <span class="keywordflow">if</span> (std::find(Arguments.begin(), Arguments.end(), II) !=</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>           Arguments.end()) {  <span class="comment">// C99 6.10.3p6</span></div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_duplicate_name_in_arg_list) << II;</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>       }</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> </div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>       <span class="comment">// Add the argument to the macro info.</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>       Arguments.push_back(II);</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>       <span class="comment">// Lex the token after the identifier.</span></div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>       <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span> </div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>       <span class="keywordflow">switch</span> (Tok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>       <span class="keywordflow">default</span>:          <span class="comment">// #define X(A B</span></div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_expected_comma_in_arg_list);</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>       <span class="keywordflow">case</span> tok::r_paren: <span class="comment">// #define X(A)</span></div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#ab4252f3e07830f901ce6162d4f3cbcd5" title="Set the specified list of identifiers as the argument list for this macro.">setArgumentList</a>(&Arguments[0], Arguments.size(), BP);</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>       <span class="keywordflow">case</span> tok::comma:  <span class="comment">// #define X(A,</span></div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>       <span class="keywordflow">case</span> tok::ellipsis:  <span class="comment">// #define X(A... -> GCC extension</span></div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>         <span class="comment">// Diagnose extension.</span></div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::ext_named_variadic_macro);</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> </div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>         <span class="comment">// Lex the token after the identifier.</span></div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>         <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>         <span class="keywordflow">if</span> (Tok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::r_paren)) {</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_missing_rparen_in_macro_def);</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>           <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>         }</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> </div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#ab3e05d2cc85832df73945f016a4508d7">setIsGNUVarargs</a>();</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#ab4252f3e07830f901ce6162d4f3cbcd5" title="Set the specified list of identifiers as the argument list for this macro.">setArgumentList</a>(&Arguments[0], Arguments.size(), BP);</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>       }</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>     }</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>   }</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> }</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> <span class="comment"></span></div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> <span class="comment">/// HandleDefineDirective - Implements \#define.  This consumes the entire macro</span></div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> <span class="comment">/// line then lets the caller lex the next real token.</span></div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleDefineDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &DefineTok,</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>                                          <span class="keywordtype">bool</span> ImmediatelyAfterHeaderGuard) {</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>   ++NumDefined;</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> </div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>   <a class="code" href="classclang_1_1Token.html">Token</a> MacroNameTok;</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>   ReadMacroName(MacroNameTok, 1);</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span> </div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>   <span class="comment">// Error reading macro name?  If so, diagnostic already issued.</span></div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span> </div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>   <a class="code" href="classclang_1_1Token.html">Token</a> LastTok = MacroNameTok;</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>   <span class="comment">// If we are supposed to keep comments in #defines, reenable comment saving</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>   <span class="comment">// mode.</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>   <span class="keywordflow">if</span> (CurLexer) CurLexer->SetCommentRetentionState(KeepMacroComments);</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> </div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   <span class="comment">// Create the new macro.</span></div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>   <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI = <a class="code" href="classclang_1_1Preprocessor.html#aa61d27c61e53b8c69549fedcd8baa5ef" title="Allocate a new MacroInfo object with the provided SourceLocation.">AllocateMacroInfo</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> </div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>   <a class="code" href="classclang_1_1Token.html">Token</a> Tok;</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>   <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> </div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>   <span class="comment">// If this is a function-like macro definition, parse the argument list,</span></div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>   <span class="comment">// marking each of the identifiers as being used as macro arguments.  Also,</span></div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>   <span class="comment">// check other constraints on the first token of the macro body.</span></div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>   <span class="keywordflow">if</span> (Tok.is(tok::eod)) {</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>     <span class="keywordflow">if</span> (ImmediatelyAfterHeaderGuard) {</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>       <span class="comment">// Save this macro information since it may part of a header guard.</span></div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#a7d95aa602a7dc413510161ef8d84814b">SetDefinedMacro</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>(),</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>                                         MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     }</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>     <span class="comment">// If there is no body to this macro, we have no special handling here.</span></div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Tok.hasLeadingSpace()) {</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>     <span class="comment">// This is a normal token with leading space.  Clear the leading space</span></div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     <span class="comment">// marker on the first token to get proper expansion.</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     Tok.clearFlag(<a class="code" href="classclang_1_1Token.html#a9757e958209e601e408feda04be60db5ab8a948482f9e8ad5043072f7752768c9">Token::LeadingSpace</a>);</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Tok.is(tok::l_paren)) {</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>     <span class="comment">// This is a function-like macro definition.  Read the argument list.</span></div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     MI-><a class="code" href="classclang_1_1MacroInfo.html#a8ae859f9886c42ee3aa9c87fe254447a">setIsFunctionLike</a>();</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>     <span class="keywordflow">if</span> (ReadMacroDefinitionArgList(MI, LastTok)) {</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>       <span class="comment">// Forget about MI.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>       ReleaseMacroInfo(MI);</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>       <span class="comment">// Throw away the rest of the line.</span></div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a6388ce47d19b9f7d0c703c643ab903a5" title="True when parsing #XXX; turns '\n' into a tok::eod token.">ParsingPreprocessorDirective</a>)</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     }</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span> </div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>     <span class="comment">// If this is a definition of a variadic C99 function-like macro, not using</span></div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>     <span class="comment">// the GNU named varargs extension, enabled __VA_ARGS__.</span></div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> </div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>     <span class="comment">// "Poison" __VA_ARGS__, which can only appear in the expansion of a macro.</span></div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     <span class="comment">// This gets unpoisoned where it is allowed.</span></div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     assert(Ident__VA_ARGS__-><a class="code" href="classclang_1_1IdentifierInfo.html#a01f4ca68b921105e106245db58477858" title="Return true if this token has been poisoned.">isPoisoned</a>() && <span class="stringliteral">"__VA_ARGS__ should be poisoned!"</span>);</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="keywordflow">if</span> (MI-><a class="code" href="classclang_1_1MacroInfo.html#a68e9485c3119dcc54ec2dcc99ca194da">isC99Varargs</a>())</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>       Ident__VA_ARGS__-><a class="code" href="classclang_1_1IdentifierInfo.html#a653348c67e7bac7d9e7308ebf53606ff">setIsPoisoned</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span> </div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>     <span class="comment">// Read the first token after the arg list for down below.</span></div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>     <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LangOpts.C99 || LangOpts.CPlusPlus11) {</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>     <span class="comment">// C99 requires whitespace between the macro definition and the body.  Emit</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>     <span class="comment">// a diagnostic for something like "#define X+".</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::ext_c99_whitespace_required_after_macro_name);</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>     <span class="comment">// C90 6.8 TC1 says: "In the definition of an object-like macro, if the</span></div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>     <span class="comment">// first character of a replacement list is not a character required by</span></div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>     <span class="comment">// subclause 5.2.1, then there shall be white-space separation between the</span></div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>     <span class="comment">// identifier and the replacement list.".  5.2.1 lists this set:</span></div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>     <span class="comment">//   "A-Za-z0-9!"#%&'()*+,_./:;<=>?[\]^_{|}~" as well as whitespace, which</span></div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>     <span class="comment">// is irrelevant here.</span></div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>     <span class="keywordtype">bool</span> <a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>     <span class="keywordflow">if</span> (Tok.is(tok::at)) <span class="comment">// @ is not in the list above.</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>       isInvalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Tok.is(tok::unknown)) {</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>       <span class="comment">// If we have an unknown token, it is something strange like "`".  Since</span></div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>       <span class="comment">// all of valid characters would have lexed into a single character</span></div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>       <span class="comment">// token of some sort, we know this is not a valid case.</span></div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>       isInvalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>     }</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>     <span class="keywordflow">if</span> (isInvalid)</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::ext_missing_whitespace_after_macro_name);</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::warn_missing_whitespace_after_macro_name);</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>   }</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> </div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>   <span class="keywordflow">if</span> (!Tok.is(tok::eod))</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>     LastTok = Tok;</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>   <span class="comment">// Read the rest of the macro body.</span></div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>   <span class="keywordflow">if</span> (MI-><a class="code" href="classclang_1_1MacroInfo.html#acf9efae22d2becd90755c62bad279613">isObjectLike</a>()) {</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>     <span class="comment">// Object-like macros are very simple, just read their body.</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>     <span class="keywordflow">while</span> (Tok.isNot(tok::eod)) {</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>       LastTok = Tok;</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>       MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(Tok);</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>       <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>       <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>     }</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span> </div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>     <span class="comment">// Otherwise, read the body of a function-like macro.  While we are at it,</span></div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     <span class="comment">// check C99 6.10.3.2p1: ensure that # operators are followed by macro</span></div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>     <span class="comment">// parameters in function-like macro expansions.</span></div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     <span class="keywordflow">while</span> (Tok.isNot(tok::eod)) {</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>       LastTok = Tok;</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> </div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>       <span class="keywordflow">if</span> (Tok.isNot(tok::hash) && Tok.isNot(tok::hashhash)) {</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(Tok);</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span> </div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>         <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>         <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>       }</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> </div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>       <span class="comment">// If we're in -traditional mode, then we should ignore stringification</span></div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>       <span class="comment">// and token pasting. Mark the tokens as unknown so as not to confuse</span></div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>       <span class="comment">// things.</span></div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().TraditionalCPP) {</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>         Tok.setKind(tok::unknown);</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(Tok);</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> </div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>         <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>         <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>       }</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span> </div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>       <span class="keywordflow">if</span> (Tok.is(tok::hashhash)) {</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>         </div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>         <span class="comment">// If we see token pasting, check if it looks like the gcc comma</span></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>         <span class="comment">// pasting extension.  We'll use this information to suppress</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>         <span class="comment">// diagnostics later on.</span></div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>         </div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>         <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>         <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> </div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>         <span class="keywordflow">if</span> (Tok.is(tok::eod)) {</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>           MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(LastTok);</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>         }</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> </div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>         <span class="keywordtype">unsigned</span> NumTokens = MI-><a class="code" href="classclang_1_1MacroInfo.html#ab512ca1f6fb1c116d6e0e79c71999770" title="Return the number of tokens that this macro expands to.">getNumTokens</a>();</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>         <span class="keywordflow">if</span> (NumTokens && Tok.getIdentifierInfo() == Ident__VA_ARGS__ &&</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>             MI-><a class="code" href="classclang_1_1MacroInfo.html#a3a7a58bd12a2c8a9dc2f7574a07f5133">getReplacementToken</a>(NumTokens-1).<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::comma))</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>           MI-><a class="code" href="classclang_1_1MacroInfo.html#a26eb12518561bac5d555b559aac8ed7b">setHasCommaPasting</a>();</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span> </div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>         <span class="comment">// Things look ok, add the '##' token to the macro.</span></div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>         MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(LastTok);</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>       }</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span> </div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>       <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>       <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> </div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>       <span class="comment">// Check for a valid macro arg identifier.</span></div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>       <span class="keywordflow">if</span> (Tok.getIdentifierInfo() == 0 ||</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>           MI-><a class="code" href="classclang_1_1MacroInfo.html#a36b7257750030c12410367b489fbb0d4" title="Return the argument number of the specified identifier, or -1 if the identifier is not a formal argum...">getArgumentNum</a>(Tok.getIdentifierInfo()) == -1) {</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span> </div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>         <span class="comment">// If this is assembler-with-cpp mode, we accept random gibberish after</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>         <span class="comment">// the '#' because '#' is often a comment character.  However, change</span></div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>         <span class="comment">// the kind of the token to tok::unknown so that the preprocessor isn't</span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>         <span class="comment">// confused.</span></div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().AsmPreprocessor && Tok.isNot(tok::eod)) {</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>           LastTok.<a class="code" href="classclang_1_1Token.html#a44b757baba649ad00b79f78671a8a2aa">setKind</a>(tok::unknown);</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>           MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(LastTok);</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>           <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Tok, diag::err_pp_stringize_not_parameter);</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>           ReleaseMacroInfo(MI);</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> </div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>           <span class="comment">// Disable __VA_ARGS__ again.</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>           Ident__VA_ARGS__-><a class="code" href="classclang_1_1IdentifierInfo.html#a653348c67e7bac7d9e7308ebf53606ff">setIsPoisoned</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>         }</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>       }</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> </div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>       <span class="comment">// Things look ok, add the '#' and param name tokens to the macro.</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>       MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(LastTok);</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>       MI-><a class="code" href="classclang_1_1MacroInfo.html#acb55626f1e75c300c5060d7eaee460c9" title="Add the specified token to the replacement text for the macro.">AddTokenToBody</a>(Tok);</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>       LastTok = Tok;</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span> </div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>       <span class="comment">// Get the next token of the macro.</span></div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>       <a class="code" href="classclang_1_1Preprocessor.html#aaaf1f5cefe79d0f9da0637c5a3d4e7dc">LexUnexpandedToken</a>(Tok);</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>     }</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>   }</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> </div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span> </div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>   <span class="comment">// Disable __VA_ARGS__ again.</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>   Ident__VA_ARGS__-><a class="code" href="classclang_1_1IdentifierInfo.html#a653348c67e7bac7d9e7308ebf53606ff">setIsPoisoned</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> </div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>   <span class="comment">// Check that there is no paste (##) operator at the beginning or end of the</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>   <span class="comment">// replacement list.</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>   <span class="keywordtype">unsigned</span> NumTokens = MI-><a class="code" href="classclang_1_1MacroInfo.html#ab512ca1f6fb1c116d6e0e79c71999770" title="Return the number of tokens that this macro expands to.">getNumTokens</a>();</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>   <span class="keywordflow">if</span> (NumTokens != 0) {</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>     <span class="keywordflow">if</span> (MI-><a class="code" href="classclang_1_1MacroInfo.html#a3a7a58bd12a2c8a9dc2f7574a07f5133">getReplacementToken</a>(0).<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::hashhash)) {</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MI-><a class="code" href="classclang_1_1MacroInfo.html#a3a7a58bd12a2c8a9dc2f7574a07f5133">getReplacementToken</a>(0), diag::err_paste_at_start);</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>       ReleaseMacroInfo(MI);</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>     }</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>     <span class="keywordflow">if</span> (MI-><a class="code" href="classclang_1_1MacroInfo.html#a3a7a58bd12a2c8a9dc2f7574a07f5133">getReplacementToken</a>(NumTokens-1).<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::hashhash)) {</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>       <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MI-><a class="code" href="classclang_1_1MacroInfo.html#a3a7a58bd12a2c8a9dc2f7574a07f5133">getReplacementToken</a>(NumTokens-1), diag::err_paste_at_end);</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>       ReleaseMacroInfo(MI);</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>     }</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>   }</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> </div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>   MI-><a class="code" href="classclang_1_1MacroInfo.html#a41c370ef8fcd8d25d51148d3687438a6" title="Set the location of the last token in the macro.">setDefinitionEndLoc</a>(LastTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> </div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>   <span class="comment">// Finally, if this identifier already had a macro defined for it, verify that</span></div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>   <span class="comment">// the macro bodies are identical, and issue diagnostics if they are not.</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *OtherMI=<a class="code" href="classclang_1_1Preprocessor.html#aae0ad9f63f31eda09f5c5c2eac0cb307">getMacroInfo</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>())) {</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     <span class="comment">// It is very common for system headers to have tons of macro redefinitions</span></div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>     <span class="comment">// and for warnings to be disabled in system headers.  If this is the case,</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>     <span class="comment">// then don't bother calling MacroInfo::isIdenticalTo.</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Preprocessor.html#a663f9d8c8151906a9bf39954f3d15c60">getDiagnostics</a>().<a class="code" href="classclang_1_1DiagnosticsEngine.html#acb709a931ea0ff1ab26fd513cb70d32a">getSuppressSystemWarnings</a>() ||</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>         !SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(DefineTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>())) {</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>       <span class="keywordflow">if</span> (!OtherMI->isUsed() && OtherMI->isWarnIfUnused())</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OtherMI->getDefinitionLoc(), diag::pp_macro_not_used);</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> </div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>       <span class="comment">// Warn if defining "__LINE__" and other builtins, per C99 6.10.8/4 and </span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>       <span class="comment">// C++ [cpp.predefined]p4, but allow it as an extension.</span></div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>       <span class="keywordflow">if</span> (OtherMI->isBuiltinMacro())</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MacroNameTok, diag::ext_pp_redef_builtin_macro);</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>       <span class="comment">// Macros must be identical.  This means all tokens and whitespace</span></div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>       <span class="comment">// separation must be the same.  C99 6.10.3p2.</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!OtherMI->isAllowRedefinitionsWithoutWarning() &&</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>                !MI-><a class="code" href="classclang_1_1MacroInfo.html#a979840859913a30f4919756c6ddae8aa" title="Return true if the specified macro definition is equal to this macro in spelling, arguments...">isIdenticalTo</a>(*OtherMI, *<span class="keyword">this</span>, <span class="comment">/*Syntactic=*/</span>LangOpts.MicrosoftExt)) {</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MI-><a class="code" href="classclang_1_1MacroInfo.html#a24668f58f405f65ea486b4214e13b641" title="Return the location that the macro was defined at.">getDefinitionLoc</a>(), diag::ext_pp_macro_redef)</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>           << MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>         <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OtherMI->getDefinitionLoc(), diag::note_previous_definition);</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>       }</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>     }</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>     <span class="keywordflow">if</span> (OtherMI->isWarnIfUnused())</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>       WarnUnusedMacroLocs.erase(OtherMI->getDefinitionLoc());</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>   }</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> </div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   <a class="code" href="classclang_1_1DefMacroDirective.html" title="A directive for a defined macro or a macro imported from a module.">DefMacroDirective</a> *MD =</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>       <a class="code" href="classclang_1_1Preprocessor.html#afc410b9870f9ee069b69be52e845e82f">appendDefMacroDirective</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>(), MI);</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> </div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>   assert(!MI-><a class="code" href="classclang_1_1MacroInfo.html#adaa5e481e32f17b953a956d6091ea272" title="Return false if this macro is defined in the main file and has not yet been used.">isUsed</a>());</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>   <span class="comment">// If we need warning for not using the macro, add its location in the</span></div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>   <span class="comment">// warn-because-unused-macro set. If it gets used it will be removed from set.</span></div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Preprocessor.html#afca276c0a87d413e51e8848edf8f911b">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397" title="Returns whether the PresumedLoc for a given SourceLocation is in the main file.">isInMainFile</a>(MI-><a class="code" href="classclang_1_1MacroInfo.html#a24668f58f405f65ea486b4214e13b641" title="Return the location that the macro was defined at.">getDefinitionLoc</a>()) &&</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>       Diags-><a class="code" href="classclang_1_1DiagnosticsEngine.html#a1a9de9de7e5ad8218fa06ca8568aa52c" title="Based on the way the client configured the DiagnosticsEngine object, classify the specified diagnosti...">getDiagnosticLevel</a>(diag::pp_macro_not_used,</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>           MI-><a class="code" href="classclang_1_1MacroInfo.html#a24668f58f405f65ea486b4214e13b641" title="Return the location that the macro was defined at.">getDefinitionLoc</a>()) != <a class="code" href="classclang_1_1DiagnosticsEngine.html#a94e5078973aa3a34432e91f3b26263e0a7576ca0c5417d008077e743b3d412234">DiagnosticsEngine::Ignored</a>) {</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>     MI-><a class="code" href="classclang_1_1MacroInfo.html#aaf83c3bca06241974d6cbd5cfb56ad4b" title="Set the value of the IsWarnIfUnused flag.">setIsWarnIfUnused</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>     WarnUnusedMacroLocs.insert(MI-><a class="code" href="classclang_1_1MacroInfo.html#a24668f58f405f65ea486b4214e13b641" title="Return the location that the macro was defined at.">getDefinitionLoc</a>());</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>   }</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> </div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>   <span class="comment">// If the callbacks want to know, tell them about the macro definition.</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a8448fc9f96f22ad1b93ff393cffc5a76" title="Hook called whenever a macro definition is seen.">MacroDefined</a>(MacroNameTok, MD);</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> }</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> <span class="comment"></span></div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <span class="comment">/// HandleUndefDirective - Implements \#undef.</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleUndefDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &UndefTok) {</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>   ++NumUndefined;</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span> </div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>   <a class="code" href="classclang_1_1Token.html">Token</a> MacroNameTok;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>   ReadMacroName(MacroNameTok, 2);</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> </div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>   <span class="comment">// Error reading macro name?  If so, diagnostic already issued.</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod))</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> </div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   <span class="comment">// Check to see if this is the last token on the #undef line.</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"undef"</span>);</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>   <span class="comment">// Okay, we finally have a valid identifier to undef.</span></div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>   <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD = <a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>());</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI = MD ? MD-><a class="code" href="classclang_1_1MacroDirective.html#af9a6655668ad545b8146b95ec9f3a593">getMacroInfo</a>() : 0;</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span> </div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>   <span class="comment">// If the callbacks want to know, tell them about the macro #undef.</span></div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>   <span class="comment">// Note: no matter if the macro was defined or not.</span></div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#acb80fc6171a839db8e290945bf2c9d7a" title="Hook called whenever a macro #undef is seen.">MacroUndefined</a>(MacroNameTok, MD);</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> </div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>   <span class="comment">// If the macro is not defined, this is a noop undef, just return.</span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>   <span class="keywordflow">if</span> (MI == 0) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> </div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>   <span class="keywordflow">if</span> (!MI->isUsed() && MI->isWarnIfUnused())</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(MI->getDefinitionLoc(), diag::pp_macro_not_used);</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> </div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>   <span class="keywordflow">if</span> (MI->isWarnIfUnused())</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>     WarnUnusedMacroLocs.erase(MI->getDefinitionLoc());</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> </div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>   <a class="code" href="classclang_1_1Preprocessor.html#aff92a28cdfbaae74c5669b8eb5af7004" title="Add a directive to the macro directive history for this identifier.">appendMacroDirective</a>(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>(),</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>                        AllocateUndefMacroDirective(MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()));</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> }</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> </div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> <span class="comment">// Preprocessor Conditional Directive Handling.</span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> <span class="comment"></span></div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> <span class="comment">/// HandleIfdefDirective - Implements the \#ifdef/\#ifndef directive.  isIfndef</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> <span class="comment">/// is true when this is a \#ifndef directive.  ReadAnyTokensBeforeDirective is</span></div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> <span class="comment">/// true if any tokens have been returned or pp-directives activated before this</span></div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> <span class="comment">/// \#ifndef has been lexed.</span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIfdefDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Result, <span class="keywordtype">bool</span> isIfndef,</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>                                         <span class="keywordtype">bool</span> ReadAnyTokensBeforeDirective) {</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>   ++NumIf;</div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   <a class="code" href="classclang_1_1Token.html">Token</a> DirectiveTok = Result;</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> </div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   <a class="code" href="classclang_1_1Token.html">Token</a> MacroNameTok;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>   ReadMacroName(MacroNameTok);</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span> </div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>   <span class="comment">// Error reading macro name?  If so, diagnostic already issued.</span></div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>   <span class="keywordflow">if</span> (MacroNameTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::eod)) {</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>     <span class="comment">// Skip code until we get to #endif.  This helps with recovery by not</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>     <span class="comment">// emitting an error when the #endif is reached.</span></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>     SkipExcludedConditionalBlock(DirectiveTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>                                  <span class="comment">/*Foundnonskip*/</span><span class="keyword">false</span>, <span class="comment">/*FoundElse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>   }</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span> </div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>   <span class="comment">// Check to see if this is the last token on the #if[n]def line.</span></div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(isIfndef ? <span class="stringliteral">"ifndef"</span> : <span class="stringliteral">"ifdef"</span>);</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> </div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *MII = MacroNameTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>();</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD = <a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(MII);</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>   <a class="code" href="classclang_1_1MacroInfo.html" title="Encapsulates the data about a macro definition (e.g. its tokens).">MacroInfo</a> *MI = MD ? MD-><a class="code" href="classclang_1_1MacroDirective.html#af9a6655668ad545b8146b95ec9f3a593">getMacroInfo</a>() : 0;</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> </div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() == 0) {</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>     <span class="comment">// If the start of a top-level #ifdef and if the macro is not defined,</span></div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     <span class="comment">// inform MIOpt that this might be the start of a proper include guard.</span></div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>     <span class="comment">// Otherwise it is some other form of unknown conditional which we can't</span></div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>     <span class="comment">// handle.</span></div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>     <span class="keywordflow">if</span> (!ReadAnyTokensBeforeDirective && MI == 0) {</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>       assert(isIfndef && <span class="stringliteral">"#ifdef shouldn't reach here"</span>);</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#aef87b0d5364cd004dbf6335655de0f3d" title="Called when entering a top-level #ifndef directive (or the "\#if !defined" equivalent) without any pr...">EnterTopLevelIfndef</a>(MII, MacroNameTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>     } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20" title="Invoked when a top level conditional (except #ifndef) is found.">EnterTopLevelConditional</a>();</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>   }</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>   <span class="comment">// If there is a macro, process it.</span></div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>   <span class="keywordflow">if</span> (MI)  <span class="comment">// Mark it used.</span></div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>     <a class="code" href="classclang_1_1Preprocessor.html#a374054b25f5e05212201b1357b5cd62b" title="A macro is used, update information about macros that need unused warnings.">markMacroAsUsed</a>(MI);</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> </div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>   <span class="keywordflow">if</span> (Callbacks) {</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>     <span class="keywordflow">if</span> (isIfndef)</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>       Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a767af69f1cdcc4cd880fa2ebf77ad3ad" title="Hook called whenever an #ifndef is seen.">Ifndef</a>(DirectiveTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), MacroNameTok, MD);</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>       Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a0ce79575dda307784fd51a6dd4eec33d" title="Hook called whenever an #ifdef is seen.">Ifdef</a>(DirectiveTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), MacroNameTok, MD);</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>   }</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> </div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>   <span class="comment">// Should we include the stuff contained by this directive?</span></div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>   <span class="keywordflow">if</span> (!MI == isIfndef) {</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>     <span class="comment">// Yes, remember that we are inside a conditional, then lex the next token.</span></div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3968b8c3fa5d9d2541a15d8af2e9414d">pushConditionalLevel</a>(DirectiveTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>                                      <span class="comment">/*wasskip*/</span><span class="keyword">false</span>, <span class="comment">/*foundnonskip*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>                                      <span class="comment">/*foundelse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>     <span class="comment">// No, skip the contents of this block.</span></div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>     SkipExcludedConditionalBlock(DirectiveTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>                                  <span class="comment">/*Foundnonskip*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>                                  <span class="comment">/*FoundElse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>   }</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span> }</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> <span class="comment"></span></div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> <span class="comment">/// HandleIfDirective - Implements the \#if directive.</span></div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleIfDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &IfToken,</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>                                      <span class="keywordtype">bool</span> ReadAnyTokensBeforeDirective) {</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>   ++NumIf;</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> </div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>   <span class="comment">// Parse and evaluate the conditional expression.</span></div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *IfNDefMacro = 0;</div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalBegin = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>   <span class="keyword">const</span> <span class="keywordtype">bool</span> ConditionalTrue = EvaluateDirectiveExpression(IfNDefMacro);</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalEnd = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> </div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>   <span class="comment">// If this condition is equivalent to #ifndef X, and if this is the first</span></div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>   <span class="comment">// directive seen, handle it for the multiple-include optimization.</span></div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() == 0) {</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>     <span class="keywordflow">if</span> (!ReadAnyTokensBeforeDirective && IfNDefMacro && ConditionalTrue)</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>       <span class="comment">// FIXME: Pass in the location of the macro name, not the 'if' token.</span></div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#aef87b0d5364cd004dbf6335655de0f3d" title="Called when entering a top-level #ifndef directive (or the "\#if !defined" equivalent) without any pr...">EnterTopLevelIfndef</a>(IfNDefMacro, IfToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>       CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20" title="Invoked when a top level conditional (except #ifndef) is found.">EnterTopLevelConditional</a>();</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>   }</div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> </div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a645edcb0d6becbc6f256f02fd1287778" title="Hook called whenever an #if is seen.">If</a>(IfToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>                   <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(ConditionalBegin, ConditionalEnd),</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>                   ConditionalTrue);</div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> </div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>   <span class="comment">// Should we include the stuff contained by this directive?</span></div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>   <span class="keywordflow">if</span> (ConditionalTrue) {</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>     <span class="comment">// Yes, remember that we are inside a conditional, then lex the next token.</span></div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a3968b8c3fa5d9d2541a15d8af2e9414d">pushConditionalLevel</a>(IfToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <span class="comment">/*wasskip*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>                                    <span class="comment">/*foundnonskip*/</span><span class="keyword">true</span>, <span class="comment">/*foundelse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>     <span class="comment">// No, skip the contents of this block.</span></div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>     SkipExcludedConditionalBlock(IfToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), <span class="comment">/*Foundnonskip*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>                                  <span class="comment">/*FoundElse*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>   }</div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> }</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span> <span class="comment"></span></div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> <span class="comment">/// HandleEndifDirective - Implements the \#endif directive.</span></div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleEndifDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &EndifToken) {</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>   ++NumEndif;</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> </div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>   <span class="comment">// Check that this is the whole directive.</span></div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"endif"</span>);</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> </div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>   <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> CondInfo;</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a8b08635b456503da08924de9ebb30ed2">popConditionalLevel</a>(CondInfo)) {</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>     <span class="comment">// No conditionals on the stack: this is an #endif without an #if.</span></div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(EndifToken, diag::err_pp_endif_without_if);</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>   }</div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>   <span class="comment">// If this the end of a top-level #endif, inform MIOpt.</span></div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() == 0)</div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#a6715b998517d175774050fd2410de7d8" title="Called when the lexer exits the top-level conditional.">ExitTopLevelConditional</a>();</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> </div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>   assert(!CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aeb024e3de8d2e6f7e0884348af7413ce" title="True if this was contained in a skipping directive, e.g., in a "\#if 0" block.">WasSkipping</a> && !CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a4aefb1afcc979348454179d95d28a5ba" title="True if in raw mode.">LexingRawMode</a> &&</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>          <span class="stringliteral">"This code should only be reachable in the non-skipping case!"</span>);</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> </div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#afc62ca1401125f516d58b1629a2093ce" title="Hook called whenever an #endif is seen.">Endif</a>(EndifToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CondInfo.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> }</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <span class="comment"></span></div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> <span class="comment">/// HandleElseDirective - Implements the \#else directive.</span></div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleElseDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &Result) {</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>   ++NumElse;</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span> </div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>   <span class="comment">// #else directive in a non-skipping conditional... start skipping.</span></div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>   <a class="code" href="classclang_1_1Preprocessor.html#a8d5ad106fe48dbfbaa57ecc6fbe54b49" title="Ensure that the next token is a tok::eod token.">CheckEndOfDirective</a>(<span class="stringliteral">"else"</span>);</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> </div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>   <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> CI;</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a8b08635b456503da08924de9ebb30ed2">popConditionalLevel</a>(CI)) {</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::pp_err_else_without_if);</div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>   }</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> </div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>   <span class="comment">// If this is a top-level #else, inform the MIOpt.</span></div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() == 0)</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20" title="Invoked when a top level conditional (except #ifndef) is found.">EnterTopLevelConditional</a>();</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> </div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>   <span class="comment">// If this is a #else with a #else before it, report the error.</span></div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>   <span class="keywordflow">if</span> (CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>) <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Result, diag::pp_err_else_after_else);</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> </div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#ad57f91b6d9c3cbcca326a2bfb49e0314" title="Hook called whenever an #else is seen.">Else</a>(Result.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> </div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>   <span class="comment">// Finally, skip the rest of the contents of this block.</span></div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>   SkipExcludedConditionalBlock(CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>, <span class="comment">/*Foundnonskip*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>                                <span class="comment">/*FoundElse*/</span><span class="keyword">true</span>, Result.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> }</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span> <span class="comment"></span></div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> <span class="comment">/// HandleElifDirective - Implements the \#elif directive.</span></div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span> <span class="comment"></span><span class="keywordtype">void</span> Preprocessor::HandleElifDirective(<a class="code" href="classclang_1_1Token.html">Token</a> &ElifToken) {</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>   ++NumElse;</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> </div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>   <span class="comment">// #elif directive in a non-skipping conditional... start skipping.</span></div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>   <span class="comment">// We don't care what the condition is, because we will always skip it (since</span></div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>   <span class="comment">// the block immediately before it was included).</span></div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalBegin = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>   <a class="code" href="classclang_1_1Preprocessor.html#a6b3db8d7e3a4ccee19feae41bec91c70" title="Read and discard all tokens remaining on the current line until the tok::eod token is found...">DiscardUntilEndOfDirective</a>();</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConditionalEnd = CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#af283a26175e7b01c780a610c802a5767" title="Return the source location for the next observable location.">getSourceLocation</a>();</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> </div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>   <a class="code" href="structclang_1_1PPConditionalInfo.html" title="Information about the conditional stack (#if directives) currently active.">PPConditionalInfo</a> CI;</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a8b08635b456503da08924de9ebb30ed2">popConditionalLevel</a>(CI)) {</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>     <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(ElifToken, diag::pp_err_elif_without_if);</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>   }</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>   <span class="comment">// If this is a top-level #elif, inform the MIOpt.</span></div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>   <span class="keywordflow">if</span> (CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a36a7490cb33de4544dad12b7af760cfd">getConditionalStackDepth</a>() == 0)</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>     CurPPLexer-><a class="code" href="classclang_1_1PreprocessorLexer.html#a76b00d43f7518b466f922843f6fbb138" title="A state machine that detects the #ifndef-wrapping a file idiom for the multiple-include optimization...">MIOpt</a>.<a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20" title="Invoked when a top level conditional (except #ifndef) is found.">EnterTopLevelConditional</a>();</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span> </div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>   <span class="comment">// If this is a #elif with a #else before it, report the error.</span></div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>   <span class="keywordflow">if</span> (CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>) <a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(ElifToken, diag::pp_err_elif_after_else);</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>   </div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>   <span class="keywordflow">if</span> (Callbacks)</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>     Callbacks-><a class="code" href="classclang_1_1PPCallbacks.html#a180c9e106a28d60a6112e16b1bb8302a" title="Hook called whenever an #elif is seen.">Elif</a>(ElifToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(),</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>                     <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(ConditionalBegin, ConditionalEnd),</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>                     <span class="keyword">true</span>, CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>);</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>   <span class="comment">// Finally, skip the rest of the contents of this block.</span></div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>   SkipExcludedConditionalBlock(CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aaa75bd80b87e1f8712996d0e0444b1ea" title="Location where the conditional started.">IfLoc</a>, <span class="comment">/*Foundnonskip*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>                                <span class="comment">/*FoundElse*/</span>CI.<a class="code" href="structclang_1_1PPConditionalInfo.html#aff1da110bfe6ed2e109de6a791fec9d7" title="True if we've seen a #else in this block. If so, #elif/#else directives are not allowed.">FoundElse</a>,</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>                                ElifToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:52 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPDirectives_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,349 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: PPDirectives.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li><li class="navelem"><a class="el" href="dir_c266f83cbdf5b0cb8b651438a3cfe616.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">PPDirectives.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="PPDirectives_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/PPDirectives.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/PPDirectives.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  PPDirectives.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Builtins.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/CodeCompletionHandler.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearch.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/include/llvm/ADT/StringSet.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearchOptions.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LexDiagnostic.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticLexKinds.inc \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/include/llvm/Support/SaveAndRestore.h</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h:</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Builtins.h:</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> </div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/CodeCompletionHandler.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearch.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/include/llvm/ADT/StringSet.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearchOptions.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LexDiagnostic.h:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticLexKinds.inc:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/Support/SaveAndRestore.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:52 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPExpressions_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPExpressions_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPExpressions_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/PPExpressions_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,884 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: PPExpressions.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">PPExpressions.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="PPExpressions_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- PPExpressions.cpp - Preprocessor Expression Evaluation -----------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This file implements the Preprocessor::EvaluateDirectiveExpression method,</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// which parses and evaluates integer constant expressions for #if directives.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">// FIXME: implement testing for #assert's.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">clang/Basic/TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="CodeCompletionHandler_8h.html">clang/Lex/CodeCompletionHandler.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="LexDiagnostic_8h.html">clang/Lex/LexDiagnostic.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="LiteralSupport_8h.html">clang/Lex/LiteralSupport.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="MacroInfo_8h.html" title="Defines the clang::MacroInfo and clang::MacroDirective classes.">clang/Lex/MacroInfo.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/ADT/APSInt.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/Support/ErrorHandling.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/SaveAndRestore.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment"></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">/// PPValue - Represents the value of a subexpression of a preprocessor</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">/// conditional and the source range covered by it.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"></span><span class="keyword">class </span>PPValue {</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> Range;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   llvm::APSInt Val;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// Default ctor - Construct an 'invalid' PPValue.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   PPValue(<span class="keywordtype">unsigned</span> BitWidth) : Val(BitWidth) {}</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">unsigned</span> getBitWidth()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Val.getBitWidth(); }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordtype">bool</span> isUnsigned()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Val.isUnsigned(); }</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> &getRange()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range; }</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">void</span> setRange(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> L) { Range.<a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">setBegin</a>(L); Range.setEnd(L); }</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordtype">void</span> setRange(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> B, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> E) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     Range.setBegin(B); Range.setEnd(E);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   }</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordtype">void</span> setBegin(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> L) { Range.setBegin(L); }</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">void</span> setEnd(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> L) { Range.setEnd(L); }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> };</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> }</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPExpressions_8cpp.html#a85e2d947a59173ca006391dc777f1362">EvaluateDirectiveSubExpr</a>(PPValue &LHS, <span class="keywordtype">unsigned</span> MinPrec,</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>                                      <a class="code" href="classclang_1_1Token.html">Token</a> &PeekTok, <span class="keywordtype">bool</span> ValueLive,</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>                                      <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment">/// DefinedTracker - This struct is used while parsing expressions to keep track</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/// of whether !defined(X) has been seen.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">/// With this simple scheme, we handle the basic forms:</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">///    !defined(X)   and !defined X</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">/// but we also trivially handle (silly) stuff like:</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">///    !!!defined(X) and +!defined(X) and !+!+!defined(X) and !(defined(X)).</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="structDefinedTracker.html">   68</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structDefinedTracker.html">DefinedTracker</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">  /// Each time a Value is evaluated, it returns information about whether the</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">  /// parsed value is of the form defined(X), !defined(X) or is something else.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685">   71</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685">TrackerState</a> {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685af8aaf21b7d504677205a1a7b69469ead">   72</a></span>     <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685af8aaf21b7d504677205a1a7b69469ead">DefinedMacro</a>,        <span class="comment">// defined(X)</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a955fe314f3d4920a5ba71bb17d17137f">   73</a></span>     <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a955fe314f3d4920a5ba71bb17d17137f">NotDefinedMacro</a>,     <span class="comment">// !defined(X)</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a4fb842b2f0e8e94b7e039862059615b6">   74</a></span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880a4e81c184ac3ad48a389cd4454c4a05bb">Unknown</a>              <span class="comment">// Something else.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   } <a class="code" href="Format_8cpp.html#a83e9e4ff6cb05dbdf72ab2a01aa289c0">State</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// TheMacro - When the state is DefinedMacro or NotDefinedMacro, this</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// indicates the macro that was checked.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="structDefinedTracker.html#a83c975fd129a2ce4f730788809f1f590">   78</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<a class="code" href="structDefinedTracker.html#a83c975fd129a2ce4f730788809f1f590">TheMacro</a>;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> };</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment"></span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/// EvaluateDefined - Process a 'defined(sym)' expression.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="PPExpressions_8cpp.html#af900ec521ccfdf55c5fca9792f97225b">   82</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPExpressions_8cpp.html#af900ec521ccfdf55c5fca9792f97225b" title="EvaluateDefined - Process a 'defined(sym)' expression.">EvaluateDefined</a>(PPValue &Result, <a class="code" href="classclang_1_1Token.html">Token</a> &PeekTok, <a class="code" href="structDefinedTracker.html">DefinedTracker</a> &DT,</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>                             <span class="keywordtype">bool</span> ValueLive, <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP) {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> beginLoc(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   Result.setBegin(beginLoc);</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="comment">// Get the next token, don't expand it.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   PP.<a class="code" href="classclang_1_1Preprocessor.html#aacd40b40055161ec072432cbcda70e50">LexUnexpandedNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// Two options, it can either be a pp-identifier or a (.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LParenLoc;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::l_paren)) {</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     <span class="comment">// Found a paren, remember we saw it and skip it.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     LParenLoc = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#aacd40b40055161ec072432cbcda70e50">LexUnexpandedNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   }</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::code_completion)) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keywordflow">if</span> (PP.<a class="code" href="classclang_1_1Preprocessor.html#afa9c17f1c88d2e7003310c4342bb7102" title="Retrieve the current code-completion handler.">getCodeCompletionHandler</a>())</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#afa9c17f1c88d2e7003310c4342bb7102" title="Retrieve the current code-completion handler.">getCodeCompletionHandler</a>()-><a class="code" href="classclang_1_1CodeCompletionHandler.html#aa7e7742cdcea9f572c46ac4667aad5d9" title="Callback invoked when performing code completion in a context where the name of a macro is expected...">CodeCompleteMacroName</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#aacd40b40055161ec072432cbcda70e50">LexUnexpandedNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   }</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment">// If we don't have a pp-identifier now, this is an error.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keywordflow">if</span> ((II = PeekTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()) == 0) {</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_defined_requires_identifier);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   }</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">// Otherwise, we got an identifier, is it defined to something?</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   Result.Val = II-><a class="code" href="classclang_1_1IdentifierInfo.html#a34cb7627ed0055795b041425667ee8a8" title="Return true if this identifier is #defined to some other value.">hasMacroDefinition</a>();</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   Result.Val.setIsUnsigned(<span class="keyword">false</span>);  <span class="comment">// Result is signed intmax_t.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *Macro = 0;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="comment">// If there is a macro, mark it used.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">if</span> (Result.Val != 0 && ValueLive) {</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     Macro = PP.<a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(II);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a374054b25f5e05212201b1357b5cd62b" title="A macro is used, update information about macros that need unused warnings.">markMacroAsUsed</a>(Macro-><a class="code" href="classclang_1_1MacroDirective.html#af9a6655668ad545b8146b95ec9f3a593">getMacroInfo</a>());</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   }</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="comment">// Save macro token for callback.</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <a class="code" href="classclang_1_1Token.html">Token</a> macroToken(PeekTok);</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="comment">// If we are in parens, ensure we have a trailing ).</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">if</span> (LParenLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="comment">// Consume identifier.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     Result.setEnd(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#aacd40b40055161ec072432cbcda70e50">LexUnexpandedNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::r_paren)) {</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_missing_rparen) << <span class="stringliteral">"defined"</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(LParenLoc, diag::note_matching) << <span class="stringliteral">"("</span>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     }</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="comment">// Consume the ).</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     Result.setEnd(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="comment">// Consume identifier.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     Result.setEnd(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   }</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">// Invoke the 'defined' callback.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1PPCallbacks.html" title="This interface provides a way to observe the actions of the preprocessor as it does its thing...">PPCallbacks</a> *Callbacks = PP.<a class="code" href="classclang_1_1Preprocessor.html#a19c49b68d13fbd14b80be6e947bddd4c">getPPCallbacks</a>()) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <a class="code" href="classclang_1_1MacroDirective.html" title="Encapsulates changes to the "macros namespace" (the location where the macro name became active...">MacroDirective</a> *MD = Macro;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="comment">// Pass the MacroInfo for the macro name even if the value is dead.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keywordflow">if</span> (!MD && Result.Val != 0)</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       MD = PP.<a class="code" href="classclang_1_1Preprocessor.html#a23a93e29cd30864017b909e27875390d" title="Given an identifier, return its latest MacroDirective if it is.">getMacroDirective</a>(II);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     Callbacks->Defined(macroToken, MD,</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                        <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(beginLoc, PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>()));</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   }</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="comment">// Success, remember that we saw defined(X).</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685af8aaf21b7d504677205a1a7b69469ead">DefinedTracker::DefinedMacro</a>;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   DT.<a class="code" href="structDefinedTracker.html#a83c975fd129a2ce4f730788809f1f590">TheMacro</a> = II;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment"></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">/// EvaluateValue - Evaluate the token PeekTok (and any others needed) and</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">/// return the computed value in Result.  Return true if there was an error</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">/// parsing.  This function also returns information about the form of the</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">/// expression in DT.  See above for information on what DT means.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">/// If ValueLive is false, then this value is being evaluated in a context where</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">/// the result is not used.  As such, avoid diagnostics that relate to</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">/// evaluation.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">  170</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(PPValue &Result, <a class="code" href="classclang_1_1Token.html">Token</a> &PeekTok, <a class="code" href="structDefinedTracker.html">DefinedTracker</a> &DT,</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                           <span class="keywordtype">bool</span> ValueLive, <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP) {</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a4fb842b2f0e8e94b7e039862059615b6">DefinedTracker::Unknown</a>;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::code_completion)) {</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">if</span> (PP.<a class="code" href="classclang_1_1Preprocessor.html#afa9c17f1c88d2e7003310c4342bb7102" title="Retrieve the current code-completion handler.">getCodeCompletionHandler</a>())</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#afa9c17f1c88d2e7003310c4342bb7102" title="Retrieve the current code-completion handler.">getCodeCompletionHandler</a>()-><a class="code" href="classclang_1_1CodeCompletionHandler.html#aa9b55672fcd705ea96ab8eccbf4a5717" title="Callback invoked when performing code completion in a preprocessor expression, such as the condition ...">CodeCompletePreprocessorExpression</a>();</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a46fc08613cbf552886ad9ac01cf4b6c1" title="Note that we hit the code-completion point.">setCodeCompletionReached</a>();</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   }</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="comment">// If this token's spelling is a pp-identifier, check to see if it is</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">// 'defined' or if it is a macro.  Note that we check here because many</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="comment">// keywords are pp-identifiers, so we can't check the kind.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = PeekTok.<a class="code" href="classclang_1_1Token.html#a0f86a35069d2f1917402adba7f4f6a7b">getIdentifierInfo</a>()) {</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="comment">// Handle "defined X" and "defined(X)".</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">if</span> (II->isStr(<span class="stringliteral">"defined"</span>))</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       <span class="keywordflow">return</span>(<a class="code" href="PPExpressions_8cpp.html#af900ec521ccfdf55c5fca9792f97225b" title="EvaluateDefined - Process a 'defined(sym)' expression.">EvaluateDefined</a>(Result, PeekTok, DT, ValueLive, PP));</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="comment">// If this identifier isn't 'defined' or one of the special</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     <span class="comment">// preprocessor keywords and it wasn't macro expanded, it turns</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="comment">// into a simple 0, unless it is the C++ keyword "true", in which case it</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="comment">// turns into "1".</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">if</span> (ValueLive &&</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>         II->getTokenID() != tok::kw_true &&</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>         II->getTokenID() != tok::kw_false)</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::warn_pp_undef_identifier) << II;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     Result.Val = II->getTokenID() == tok::kw_true;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     Result.Val.setIsUnsigned(<span class="keyword">false</span>);  <span class="comment">// "0" is signed intmax_t 0.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     Result.setRange(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">switch</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">default</span>:  <span class="comment">// Non-value token.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_expr_bad_token_start_expr);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keywordflow">case</span> tok::eod:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">case</span> tok::r_paren:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="comment">// If there is no expression, report and exit.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_expected_value_in_expr);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordflow">case</span> tok::numeric_constant: {</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<64></a> IntegerBuffer;</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     <span class="keywordtype">bool</span> NumberInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     StringRef Spelling = PP.<a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(PeekTok, IntegerBuffer, </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>                                               &NumberInvalid);</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">if</span> (NumberInvalid)</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// a diagnostic was already reported</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     <a class="code" href="classclang_1_1NumericLiteralParser.html">NumericLiteralParser</a> Literal(Spelling, PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), PP);</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keywordflow">if</span> (Literal.hadError)</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// a diagnostic was already reported.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">if</span> (Literal.isFloatingLiteral() || Literal.isImaginary) {</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_illegal_floating_literal);</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     }</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     assert(Literal.isIntegerLiteral() && <span class="stringliteral">"Unknown ppnumber"</span>);</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="comment">// Complain about, and drop, any ud-suffix.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <span class="keywordflow">if</span> (Literal.hasUDSuffix())</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_invalid_udl) << <span class="comment">/*integer*/</span>1;</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="comment">// 'long long' is a C99 or C++11 feature.</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">if</span> (!PP.<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().C99 && Literal.isLongLong) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <span class="keywordflow">if</span> (PP.<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().CPlusPlus)</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok,</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>              PP.<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().CPlusPlus11 ?</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>              diag::warn_cxx98_compat_longlong : diag::ext_cxx11_longlong);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::ext_c99_longlong);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     }</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="comment">// Parse the integer literal into Result.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="keywordflow">if</span> (Literal.GetIntegerValue(Result.Val)) {</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="comment">// Overflow parsing integer literal.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="keywordflow">if</span> (ValueLive) PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_integer_too_large);</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       Result.Val.setIsUnsigned(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       <span class="comment">// Set the signedness of the result to match whether there was a U suffix</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="comment">// or not.</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       Result.Val.setIsUnsigned(Literal.isUnsigned);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="comment">// Detect overflow based on whether the value is signed.  If signed</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="comment">// and if the value is too large, emit a warning "integer constant is so</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       <span class="comment">// large that it is unsigned" e.g. on 12345678901234567890 where intmax_t</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       <span class="comment">// is 64-bits.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="keywordflow">if</span> (!Literal.isUnsigned && Result.Val.isNegative()) {</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         <span class="comment">// Don't warn for a hex or octal literal: 0x8000..0 shouldn't warn.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>         <span class="keywordflow">if</span> (ValueLive && Literal.getRadix() == 10)</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>           PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::warn_integer_too_large_for_signed);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         Result.Val.setIsUnsigned(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       }</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     }</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="comment">// Consume the token.</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     Result.setRange(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   }</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">case</span> tok::char_constant:          <span class="comment">// 'x'</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">case</span> tok::wide_char_constant:     <span class="comment">// L'x'</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">case</span> tok::utf16_char_constant:    <span class="comment">// u'x'</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordflow">case</span> tok::utf32_char_constant: {  <span class="comment">// U'x'</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="comment">// Complain about, and drop, any ud-suffix.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>     <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#a0a2223e4b9c06ce5b651ec8bd830dedd" title="Return true if this token is a string or character literal which has a ud-suffix.">hasUDSuffix</a>())</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok, diag::err_pp_invalid_udl) << <span class="comment">/*character*/</span>0;</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> CharBuffer;</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="keywordtype">bool</span> CharInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     StringRef ThisTok = PP.<a class="code" href="classclang_1_1Preprocessor.html#a000147976c13c269dd82ef645fa3fe35">getSpelling</a>(PeekTok, CharBuffer, &CharInvalid);</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="keywordflow">if</span> (CharInvalid)</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <a class="code" href="classclang_1_1CharLiteralParser.html">CharLiteralParser</a> Literal(ThisTok.begin(), ThisTok.end(),</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>                               PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), PP, PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>());</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">if</span> (Literal.hadError())</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;  <span class="comment">// A diagnostic was already emitted.</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="comment">// Character literals are always int or wchar_t, expand to intmax_t.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &TI = PP.<a class="code" href="classclang_1_1Preprocessor.html#ac6865d870ca2177999249afe34042082">getTargetInfo</a>();</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="keywordtype">unsigned</span> NumBits;</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">if</span> (Literal.isMultiChar())</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>       NumBits = TI.<a class="code" href="classclang_1_1TargetInfo.html#a72ec6d14f6a06a1524488c8f2e604546">getIntWidth</a>();</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Literal.isWide())</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       NumBits = TI.<a class="code" href="classclang_1_1TargetInfo.html#a78760edf75880ea00ddd20d5cc527efd">getWCharWidth</a>();</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Literal.isUTF16())</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       NumBits = TI.<a class="code" href="classclang_1_1TargetInfo.html#a799a7de59f8af11bce283e0fb0597b2a">getChar16Width</a>();</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Literal.isUTF32())</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>       NumBits = TI.<a class="code" href="classclang_1_1TargetInfo.html#a7588aa52fe468ce39765b2d245fde37e">getChar32Width</a>();</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       NumBits = TI.<a class="code" href="classclang_1_1TargetInfo.html#a4e2ac19ae48b353248e7e15754283c8d">getCharWidth</a>();</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="comment">// Set the width.</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     llvm::APSInt Val(NumBits);</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="comment">// Set the value.</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     Val = Literal.getValue();</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="comment">// Set the signedness. UTF-16 and UTF-32 are always unsigned</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="keywordflow">if</span> (!Literal.isUTF16() && !Literal.isUTF32())</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       Val.setIsUnsigned(!PP.<a class="code" href="classclang_1_1Preprocessor.html#a0c1874f57abd66b9fa0d282e6cab5cd6">getLangOpts</a>().CharIsSigned);</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">if</span> (Result.Val.getBitWidth() > Val.getBitWidth()) {</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       Result.Val = Val.extend(Result.Val.getBitWidth());</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       assert(Result.Val.getBitWidth() == Val.getBitWidth() &&</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>              <span class="stringliteral">"intmax_t smaller than char/wchar_t?"</span>);</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       Result.Val = Val;</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     }</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="comment">// Consume the token.</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     Result.setRange(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   }</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keywordflow">case</span> tok::l_paren: {</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);  <span class="comment">// Eat the (.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="comment">// Parse the value and if there are any binary operators involved, parse</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="comment">// them.</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(Result, PeekTok, DT, ValueLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>     <span class="comment">// If this is a silly value like (X), which doesn't need parens, check for</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="comment">// !(defined X).</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#abc7c8cc4d8598e2c07148189157cf066">is</a>(tok::r_paren)) {</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       <span class="comment">// Just use DT unmodified as our result.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <span class="comment">// Otherwise, we have something like (x+y), and we consumed '(x'.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>       <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a85e2d947a59173ca006391dc777f1362">EvaluateDirectiveSubExpr</a>(Result, 1, PeekTok, ValueLive, PP))</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       <span class="keywordflow">if</span> (PeekTok.<a class="code" href="classclang_1_1Token.html#add9ef521a5de741af9c573525b71cb73">isNot</a>(tok::r_paren)) {</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_expected_rparen)</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           << Result.getRange();</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Start, diag::note_matching) << <span class="stringliteral">"("</span>;</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       }</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>       DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a4fb842b2f0e8e94b7e039862059615b6">DefinedTracker::Unknown</a>;</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     }</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     Result.setRange(Start, PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>());</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);  <span class="comment">// Eat the ).</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   }</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordflow">case</span> tok::plus: {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="comment">// Unary plus doesn't modify the value.</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(Result, PeekTok, DT, ValueLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     Result.setBegin(Start);</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   }</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordflow">case</span> tok::minus: {</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(Result, PeekTok, DT, ValueLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     Result.setBegin(Loc);</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="comment">// C99 6.5.3.3p3: The sign of the result matches the sign of the operand.</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     Result.Val = -Result.Val;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="comment">// -MININT is the only thing that overflows.  Unsigned never overflows.</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordtype">bool</span> Overflow = !Result.isUnsigned() && Result.Val.isMinSignedValue();</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     <span class="comment">// If this operator is live and overflowed, report the issue.</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">if</span> (Overflow && ValueLive)</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(Loc, diag::warn_pp_expr_overflow) << Result.getRange();</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a4fb842b2f0e8e94b7e039862059615b6">DefinedTracker::Unknown</a>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   }</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordflow">case</span> tok::tilde: {</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(Result, PeekTok, DT, ValueLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     Result.setBegin(Start);</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="comment">// C99 6.5.3.3p4: The sign of the result matches the sign of the operand.</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     Result.Val = ~Result.Val;</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a4fb842b2f0e8e94b7e039862059615b6">DefinedTracker::Unknown</a>;</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   }</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordflow">case</span> tok::exclaim: {</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(Result, PeekTok, DT, ValueLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     Result.setBegin(Start);</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     Result.Val = !Result.Val;</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="comment">// C99 6.5.3.3p5: The sign of the result is 'int', aka it is signed.</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     Result.Val.setIsUnsigned(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> </div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     <span class="keywordflow">if</span> (DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> == <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685af8aaf21b7d504677205a1a7b69469ead">DefinedTracker::DefinedMacro</a>)</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a955fe314f3d4920a5ba71bb17d17137f">DefinedTracker::NotDefinedMacro</a>;</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> == <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685a955fe314f3d4920a5ba71bb17d17137f">DefinedTracker::NotDefinedMacro</a>)</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       DT.<a class="code" href="structDefinedTracker.html#abb907703a87e60846b975a5382e9b663">State</a> = <a class="code" href="structDefinedTracker.html#a13513817c34a39ad5b37306b97f80685af8aaf21b7d504677205a1a7b69469ead">DefinedTracker::DefinedMacro</a>;</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   }</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="comment">// FIXME: Handle #assert</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   }</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> }</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> <span class="comment"></span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> <span class="comment">/// getPrecedence - Return the precedence of the specified binary operator</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> <span class="comment">/// token.  This returns:</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> <span class="comment">///   ~0 - Invalid token.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> <span class="comment">///   14 -> 3 - various operators.</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="comment">///    0 - 'eod' or ')'</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">  421</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">getPrecedence</a>(<a class="code" href="namespaceclang_1_1tok.html#aca39774690bea476816dc56565cb7cd5" title="Provides a simple uniform namespace for tokens from all C languages.">tok::TokenKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="keywordflow">switch</span> (Kind) {</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> ~0U;</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   <span class="keywordflow">case</span> tok::percent:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   <span class="keywordflow">case</span> tok::slash:</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <span class="keywordflow">case</span> tok::star:                 <span class="keywordflow">return</span> 14;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keywordflow">case</span> tok::plus:</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <span class="keywordflow">case</span> tok::minus:                <span class="keywordflow">return</span> 13;</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   <span class="keywordflow">case</span> tok::lessless:</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   <span class="keywordflow">case</span> tok::greatergreater:       <span class="keywordflow">return</span> 12;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keywordflow">case</span> tok::lessequal:</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <span class="keywordflow">case</span> tok::less:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">case</span> tok::greaterequal:</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keywordflow">case</span> tok::greater:              <span class="keywordflow">return</span> 11;</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   <span class="keywordflow">case</span> tok::exclaimequal:</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">case</span> tok::equalequal:           <span class="keywordflow">return</span> 10;</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="keywordflow">case</span> tok::amp:                  <span class="keywordflow">return</span> 9;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="keywordflow">case</span> tok::caret:                <span class="keywordflow">return</span> 8;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keywordflow">case</span> tok::pipe:                 <span class="keywordflow">return</span> 7;</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordflow">case</span> tok::ampamp:               <span class="keywordflow">return</span> 6;</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordflow">case</span> tok::pipepipe:             <span class="keywordflow">return</span> 5;</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="keywordflow">case</span> tok::question:             <span class="keywordflow">return</span> 4;</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="keywordflow">case</span> tok::comma:                <span class="keywordflow">return</span> 3;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="keywordflow">case</span> tok::colon:                <span class="keywordflow">return</span> 2;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="keywordflow">case</span> tok::r_paren:              <span class="keywordflow">return</span> 0;<span class="comment">// Lowest priority, end of expr.</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="keywordflow">case</span> tok::eod:                  <span class="keywordflow">return</span> 0;<span class="comment">// Lowest priority, end of directive.</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   }</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> }</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="comment"></span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> <span class="comment">/// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="comment">/// PeekTok, and whose precedence is PeekPrec.  This returns the result in LHS.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="comment">/// If ValueLive is false, then this value is being evaluated in a context where</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="comment">/// the result is not used.  As such, avoid diagnostics that relate to</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="comment">/// evaluation, such as division by zero warnings.</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"><a class="code" href="PPExpressions_8cpp.html#a85e2d947a59173ca006391dc777f1362">  457</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="PPExpressions_8cpp.html#a85e2d947a59173ca006391dc777f1362">EvaluateDirectiveSubExpr</a>(PPValue &LHS, <span class="keywordtype">unsigned</span> MinPrec,</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>                                      <a class="code" href="classclang_1_1Token.html">Token</a> &PeekTok, <span class="keywordtype">bool</span> ValueLive,</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>                                      <a class="code" href="classclang_1_1Preprocessor.html">Preprocessor</a> &PP) {</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="keywordtype">unsigned</span> PeekPrec = <a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">getPrecedence</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>());</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <span class="comment">// If this token isn't valid, report the error.</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   <span class="keywordflow">if</span> (PeekPrec == ~0U) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_expr_bad_token_binop)</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       << LHS.getRange();</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   }</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="comment">// If this token has a lower precedence than we are allowed to parse, return</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="comment">// it so that higher levels of the recursion can parse it.</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">if</span> (PeekPrec < MinPrec)</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <a class="code" href="namespaceclang_1_1tok.html#aca39774690bea476816dc56565cb7cd5" title="Provides a simple uniform namespace for tokens from all C languages.">tok::TokenKind</a> Operator = PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>();</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="comment">// If this is a short-circuiting operator, see if the RHS of the operator is</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="comment">// dead.  Note that this cannot just clobber ValueLive.  Consider</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <span class="comment">// "0 && 1 ? 4 : 1 / 0", which is parsed as "(0 && 1) ? 4 : (1 / 0)".  In</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="comment">// this example, the RHS of the && being dead does not make the rest of the</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="comment">// expr dead.</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     <span class="keywordtype">bool</span> RHSIsLive;</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">if</span> (Operator == tok::ampamp && LHS.Val == 0)</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       RHSIsLive = <span class="keyword">false</span>;   <span class="comment">// RHS of "0 && x" is dead.</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Operator == tok::pipepipe && LHS.Val != 0)</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       RHSIsLive = <span class="keyword">false</span>;   <span class="comment">// RHS of "1 || x" is dead.</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Operator == tok::question && LHS.Val == 0)</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       RHSIsLive = <span class="keyword">false</span>;   <span class="comment">// RHS (x) of "0 ? x : y" is dead.</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       RHSIsLive = ValueLive;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="comment">// Consume the operator, remembering the operator's location for reporting.</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> OpLoc = PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>();</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     PP.<a class="code" href="classclang_1_1Preprocessor.html#a55c5283893995acf8e2879bc2ddfce9f">LexNonComment</a>(PeekTok);</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     PPValue RHS(LHS.getBitWidth());</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="comment">// Parse the RHS of the operator.</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <a class="code" href="structDefinedTracker.html">DefinedTracker</a> DT;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a113320faddaa02b15474c53610c6748f">EvaluateValue</a>(RHS, PeekTok, DT, RHSIsLive, PP)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     <span class="comment">// Remember the precedence of this operator and get the precedence of the</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     <span class="comment">// operator immediately to the right of the RHS.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     <span class="keywordtype">unsigned</span> ThisPrec = PeekPrec;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     PeekPrec = <a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">getPrecedence</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>());</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     <span class="comment">// If this token isn't valid, report the error.</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <span class="keywordflow">if</span> (PeekPrec == ~0U) {</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>       PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_pp_expr_bad_token_binop)</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>         << RHS.getRange();</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     }</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> </div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     <span class="comment">// Decide whether to include the next binop in this subexpression.  For</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="comment">// example, when parsing x+y*z and looking at '*', we want to recursively</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>     <span class="comment">// handle y*z as a single subexpression.  We do this because the precedence</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="comment">// of * is higher than that of +.  The only strange case we have to handle</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     <span class="comment">// here is for the ?: operator, where the precedence is actually lower than</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     <span class="comment">// the LHS of the '?'.  The grammar rule is:</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <span class="comment">// conditional-expression ::=</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="comment">//    logical-OR-expression ? expression : conditional-expression</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="comment">// where 'expression' is actually comma-expression.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="keywordtype">unsigned</span> RHSPrec;</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="keywordflow">if</span> (Operator == tok::question)</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>       <span class="comment">// The RHS of "?" should be maximally consumed as an expression.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       RHSPrec = <a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">getPrecedence</a>(tok::comma);</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">else</span>  <span class="comment">// All others should munch while higher precedence.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       RHSPrec = ThisPrec+1;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> </div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="keywordflow">if</span> (PeekPrec >= RHSPrec) {</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       <span class="keywordflow">if</span> (<a class="code" href="PPExpressions_8cpp.html#a85e2d947a59173ca006391dc777f1362">EvaluateDirectiveSubExpr</a>(RHS, RHSPrec, PeekTok, RHSIsLive, PP))</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       PeekPrec = <a class="code" href="PPExpressions_8cpp.html#ad04136d99ab8cff5aa760cb889c90460">getPrecedence</a>(PeekTok.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>());</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     }</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     assert(PeekPrec <= ThisPrec && <span class="stringliteral">"Recursion didn't work!"</span>);</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     <span class="comment">// Usual arithmetic conversions (C99 6.3.1.8p1): result is unsigned if</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <span class="comment">// either operand is unsigned.</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     llvm::APSInt Res(LHS.getBitWidth());</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="keywordflow">switch</span> (Operator) {</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">case</span> tok::question:       <span class="comment">// No UAC for x and y in "x ? y : z".</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     <span class="keywordflow">case</span> tok::lessless:       <span class="comment">// Shift amount doesn't UAC with shift value.</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     <span class="keywordflow">case</span> tok::greatergreater: <span class="comment">// Shift amount doesn't UAC with shift value.</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">case</span> tok::comma:          <span class="comment">// Comma operands are not subject to UACs.</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     <span class="keywordflow">case</span> tok::pipepipe:       <span class="comment">// Logical || does not do UACs.</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="keywordflow">case</span> tok::ampamp:         <span class="comment">// Logical && does not do UACs.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       <span class="keywordflow">break</span>;                  <span class="comment">// No UAC</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>       Res.setIsUnsigned(LHS.isUnsigned()|RHS.isUnsigned());</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="comment">// If this just promoted something from signed to unsigned, and if the</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       <span class="comment">// value was negative, warn about it.</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">if</span> (ValueLive && Res.isUnsigned()) {</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         <span class="keywordflow">if</span> (!LHS.isUnsigned() && LHS.Val.isNegative())</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>           PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OpLoc, diag::warn_pp_convert_lhs_to_positive)</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>             << LHS.Val.toString(10, <span class="keyword">true</span>) + <span class="stringliteral">" to "</span> +</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>                LHS.Val.toString(10, <span class="keyword">false</span>)</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>             << LHS.getRange() << RHS.getRange();</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>         <span class="keywordflow">if</span> (!RHS.isUnsigned() && RHS.Val.isNegative())</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>           PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OpLoc, diag::warn_pp_convert_rhs_to_positive)</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>             << RHS.Val.toString(10, <span class="keyword">true</span>) + <span class="stringliteral">" to "</span> +</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>                RHS.Val.toString(10, <span class="keyword">false</span>)</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>             << LHS.getRange() << RHS.getRange();</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       }</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       LHS.Val.setIsUnsigned(Res.isUnsigned());</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       RHS.Val.setIsUnsigned(Res.isUnsigned());</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     }</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordtype">bool</span> Overflow = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <span class="keywordflow">switch</span> (Operator) {</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keywordflow">default</span>: llvm_unreachable(<span class="stringliteral">"Unknown operator token!"</span>);</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordflow">case</span> tok::percent:</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>       <span class="keywordflow">if</span> (RHS.Val != 0)</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         Res = LHS.Val % RHS.Val;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ValueLive) {</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OpLoc, diag::err_pp_remainder_by_zero)</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>           << LHS.getRange() << RHS.getRange();</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       }</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     <span class="keywordflow">case</span> tok::slash:</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <span class="keywordflow">if</span> (RHS.Val != 0) {</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>         <span class="keywordflow">if</span> (LHS.Val.isSigned())</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>           Res = llvm::APSInt(LHS.Val.sdiv_ov(RHS.Val, Overflow), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>           Res = LHS.Val / RHS.Val;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ValueLive) {</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>         PP.<a class="code" href="classclang_1_1Preprocessor.html#a6baeb25e8bb853d4ed0d8acca0666cc0">Diag</a>(OpLoc, diag::err_pp_division_by_zero)</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           << LHS.getRange() << RHS.getRange();</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       }</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> </div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="keywordflow">case</span> tok::star:</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordflow">if</span> (Res.isSigned())</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         Res = llvm::APSInt(LHS.Val.smul_ov(RHS.Val, Overflow), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         Res = LHS.Val * RHS.Val;</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <span class="keywordflow">case</span> tok::lessless: {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="comment">// Determine whether overflow is about to happen.</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="keywordtype">unsigned</span> ShAmt = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(RHS.Val.getLimitedValue());</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       <span class="keywordflow">if</span> (LHS.isUnsigned()) {</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         Overflow = ShAmt >= LHS.Val.getBitWidth();</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         <span class="keywordflow">if</span> (Overflow)</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>           ShAmt = LHS.Val.getBitWidth()-1;</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         Res = LHS.Val << ShAmt;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         Res = llvm::APSInt(LHS.Val.sshl_ov(ShAmt, Overflow), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       }</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     }</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     <span class="keywordflow">case</span> tok::greatergreater: {</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <span class="comment">// Determine whether overflow is about to happen.</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>       <span class="keywordtype">unsigned</span> ShAmt = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(RHS.Val.getLimitedValue());</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       <span class="keywordflow">if</span> (ShAmt >= LHS.getBitWidth())</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         Overflow = <span class="keyword">true</span>, ShAmt = LHS.getBitWidth()-1;</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>       Res = LHS.Val >> ShAmt;</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     }</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordflow">case</span> tok::plus:</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">if</span> (LHS.isUnsigned())</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         Res = LHS.Val + RHS.Val;</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>         Res = llvm::APSInt(LHS.Val.sadd_ov(RHS.Val, Overflow), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="keywordflow">case</span> tok::minus:</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <span class="keywordflow">if</span> (LHS.isUnsigned())</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>         Res = LHS.Val - RHS.Val;</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         Res = llvm::APSInt(LHS.Val.ssub_ov(RHS.Val, Overflow), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="keywordflow">case</span> tok::lessequal:</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       Res = LHS.Val <= RHS.Val;</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       Res.setIsUnsigned(<span class="keyword">false</span>);  <span class="comment">// C99 6.5.8p6, result is always int (signed)</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     <span class="keywordflow">case</span> tok::less:</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       Res = LHS.Val < RHS.Val;</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       Res.setIsUnsigned(<span class="keyword">false</span>);  <span class="comment">// C99 6.5.8p6, result is always int (signed)</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     <span class="keywordflow">case</span> tok::greaterequal:</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       Res = LHS.Val >= RHS.Val;</div>
+<