[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/SourceLocation_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,224 @@
+<!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: SourceLocation.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_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceLocation.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_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">//==--- SourceLocation.cpp - Compact identifier for Source Files -*- 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 accessor methods for the FullSourceLoc class.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</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> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</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="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="PrettyStackTrace_8h.html" title="Defines the PrettyStackTraceEntry class, which is used to make crashes give more contextual informati...">clang/Basic/PrettyStackTrace.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</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="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <cstdio></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="keyword">using namespace </span>clang;</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="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">// PrettyStackTraceLoc</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classclang_1_1PrettyStackTraceLoc.html#a8fd259be00cf8eec1fecfce036bcb24e">   26</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1PrettyStackTraceLoc.html#a8fd259be00cf8eec1fecfce036bcb24e">PrettyStackTraceLoc::print</a>(raw_ostream &OS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keywordflow">if</span> (Loc.<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="l00028"></a><span class="lineno">   28</span>     Loc.<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     OS << <span class="stringliteral">": "</span>;</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>   OS << Message << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> }</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">// SourceLocation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">   38</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">SourceLocation::print</a>(raw_ostream &OS, <span class="keyword">const</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>)<span class="keyword">const</span>{</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordflow">if</span> (!<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="l00040"></a><span class="lineno">   40</span>     OS << <span class="stringliteral">"<invalid loc>"</span>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</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>(*<span class="keyword">this</span>);</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="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="l00048"></a><span class="lineno">   48</span>       OS << <span class="stringliteral">"<invalid>"</span>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>       <span class="keywordflow">return</span>;</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="comment">// The macro expansion and spelling pos is identical for file locs.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     OS << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298" title="Return the presumed filename of this location.">getFilename</a>() << <span class="charliteral">':'</span> << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>()</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>        << <span class="charliteral">':'</span> << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>();</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordflow">return</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>   SM.<a class="code" href="classclang_1_1SourceManager.html#ad3c1ffb876357d92e434a633072e8421" title="Given a SourceLocation object Loc, return the expansion location referenced by the ID...">getExpansionLoc</a>(*this).<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</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>   OS << <span class="stringliteral">" <Spelling="</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   SM.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(*this).<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   OS << '><span class="stringliteral">';</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae8878ad26aef040a66762ebb54bf3bed">   64</a></span> <span class="stringliteral">std::string SourceLocation::printToString(const SourceManager &SM) const {</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="stringliteral">  std::string S;</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="stringliteral">  llvm::raw_string_ostream OS(S);</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="stringliteral">  print(OS, SM);</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="stringliteral">  return OS.str();</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae93fd6807abf849dc2bb276d8e1846b0">   71</a></span> <span class="stringliteral">void SourceLocation::dump(const SourceManager &SM) const {</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="stringliteral">  print(llvm::errs(), SM);</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="stringliteral">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="stringliteral">// FullSourceLoc</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="stringliteral">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ae2220ce56fa3fe83cc0d9530ae4e1d56">   79</a></span> <span class="stringliteral">FileID FullSourceLoc::getFileID() const {</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="stringliteral">  return SrcMgr->getFileID(*this);</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ae2e4a9834721a370db2f3c76de37f3ae">   85</a></span> <span class="stringliteral">FullSourceLoc FullSourceLoc::getExpansionLoc() const {</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="stringliteral">  return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr);</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7fc79886e3b469a10fb885f2fc592a1d">   90</a></span> <span class="stringliteral">FullSourceLoc FullSourceLoc::getSpellingLoc() const {</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="stringliteral">  return FullSourceLoc(SrcMgr->getSpellingLoc(*this), *SrcMgr);</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a1264de07e1d1d7f97d77256bbc7a47a3">   95</a></span> <span class="stringliteral">unsigned FullSourceLoc::getExpansionLineNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="stringliteral">  return SrcMgr->getExpansionLineNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a02d3383a8d75d40840cf17de8f5a0b83">  100</a></span> <span class="stringliteral">unsigned FullSourceLoc::getExpansionColumnNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="stringliteral">  return SrcMgr->getExpansionColumnNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#adcf5bd8d1c4f74936f879e28f721863b">  105</a></span> <span class="stringliteral">unsigned FullSourceLoc::getSpellingLineNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="stringliteral">  return SrcMgr->getSpellingLineNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a468c34b99347b97f651db48b84bf9c5e">  110</a></span> <span class="stringliteral">unsigned FullSourceLoc::getSpellingColumnNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="stringliteral">  return SrcMgr->getSpellingColumnNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a38d8ea4f01835db6a5167114cfffbdf0">  115</a></span> <span class="stringliteral">bool FullSourceLoc::isInSystemHeader() const {</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="stringliteral">  return SrcMgr->isInSystemHeader(*this);</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd">  120</a></span> <span class="stringliteral">bool FullSourceLoc::isBeforeInTranslationUnitThan(SourceLocation Loc) const {</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="stringliteral">  return SrcMgr->isBeforeInTranslationUnit(*this, Loc);</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a632f9accccc88dea307fb1831ae3348c">  125</a></span> <span class="stringliteral">void FullSourceLoc::dump() const {</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="stringliteral">  SourceLocation::dump(*SrcMgr);</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a1e7ec7efdf604dbc96ea1a444759c830">  129</a></span> <span class="stringliteral">const char *FullSourceLoc::getCharacterData(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="stringliteral">  return SrcMgr->getCharacterData(*this, Invalid);</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7904e132c5dff788656455f3968b1c36">  134</a></span> <span class="stringliteral">const llvm::MemoryBuffer* FullSourceLoc::getBuffer(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="stringliteral">  assert(isValid());</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="stringliteral">  return SrcMgr->getBuffer(SrcMgr->getFileID(*this), Invalid);</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#add7deab92b4231d88a6ad92303820d2f">  139</a></span> <span class="stringliteral">StringRef FullSourceLoc::getBufferData(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="stringliteral">  return getBuffer(Invalid)->getBuffer();</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7bee4c4ce58788c5157570e2dfc93e3e">  143</a></span> <span class="stringliteral">std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const {</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="stringliteral">  return SrcMgr->getDecomposedLoc(*this);</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="stringliteral">}</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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/SourceLocation_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,199 @@
+<!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: SourceLocation.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_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li><li class="navelem"><a class="el" href="dir_d56b91025ffac0ac634c9045c122e791.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceLocation.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_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/Basic/Release+Asserts/SourceLocation.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceLocation.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  SourceLocation.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</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> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</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> /home/tstellar/llvm/include/llvm/ADT/None.h:</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> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</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> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</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> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</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> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</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> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</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> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</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> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</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> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</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> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/include/llvm/Support/FileSystem.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/include/llvm/ADT/SmallString.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/include/llvm/ADT/Twine.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/ErrorHandling.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/TimeValue.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/system_error.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/ArrayRef.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/include/llvm/ADT/DenseSet.h:</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/include/llvm/ADT/PointerIntPair.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/include/llvm/ADT/PointerUnion.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/Support/MemoryBuffer.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/CBindingWrapping.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-c/Core.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/Support/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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/SourceLocation_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,517 @@
+<!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: SourceLocation.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_84b4cac0f3db7adb733be733ea7bc48e.html">Basic</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceLocation.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_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">//===--- SourceLocation.h - Compact identifier for Source Files -*- 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><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 Defines the clang::SourceLocation class and associated facilities.</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">#ifndef LLVM_CLANG_SOURCELOCATION_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SOURCELOCATION_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="LLVM_8h.html" title="Forward declares and imports various common LLVM datatypes that clang wants to use unqualified...">clang/Basic/LLVM.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/Support/PointerLikeTypeTraits.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <cassert></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <functional></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include <utility></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">class </span>MemoryBuffer;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keyword">struct </span>DenseMapInfo;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keyword">struct </span>isPodLike;</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> </div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">class </span>SourceManager;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">/// \brief An opaque identifier used by SourceManager which refers to a</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/// source file (MemoryBuffer) along with its \#include path and \#line data.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html">   39</a></span> <span class="comment"></span><span class="keyword">class </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> {<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// \brief A mostly-opaque identifier, where 0 is "invalid", >0 is </span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  /// this module, and <-1 is something loaded from another module.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"></span>  <span class="keywordtype">int</span> ID;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#ab975b9cec42834e4d89e323c21c45b73">   44</a></span>   <a class="code" href="classclang_1_1FileID.html#ab975b9cec42834e4d89e323c21c45b73">FileID</a>() : ID(0) {}</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">   46</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID == 0; }</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#af9e0b16383b0260e96cfcbb2515c1f47">   48</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#af9e0b16383b0260e96cfcbb2515c1f47">operator==</a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID == RHS.ID; }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a8480c554a27e0864c4a15b7bd63201a3">   49</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a8480c554a27e0864c4a15b7bd63201a3">operator<</a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID < RHS.ID; }</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a63c4b2d6149e600ab19cac7d58bfafb4">   50</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a63c4b2d6149e600ab19cac7d58bfafb4">operator<=</a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID <= RHS.ID; }</div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#ae76a5a4620df119e5e8d8e7fb9903148">   51</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#ae76a5a4620df119e5e8d8e7fb9903148">operator!=</a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS); }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a8c9582c716d8302f6f2fe34c722a9543">   52</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a8c9582c716d8302f6f2fe34c722a9543">operator></a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RHS < *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a296a3f5290e82ac76683957ae0f4bad5">   53</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a296a3f5290e82ac76683957ae0f4bad5">operator>=</a>(<span class="keyword">const</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RHS <= *<span class="keyword">this</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_1FileID.html#afdbd751b1c24199d6be2a18942fdba18">   55</a></span>   <span class="keyword">static</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> <a class="code" href="classclang_1_1FileID.html#afdbd751b1c24199d6be2a18942fdba18">getSentinel</a>() { <span class="keywordflow">return</span> <span class="keyword">get</span>(-1); }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07">   56</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07">getHashValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(ID); }</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> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#aa2732a8586b0c018d6e610cefa09e7a4">   59</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a05a0d9d61e00c31d180a2a8f1d6f7903">   60</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTWriter.html" title="Writes an AST file containing the contents of a translation unit.">ASTWriter</a>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a5d8560551ea81515968dd468e2e4082e">   61</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTReader.html" title="Reads an AST files chain containing the contents of a translation unit.">ASTReader</a>;</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="keyword">static</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> <span class="keyword">get</span>(<span class="keywordtype">int</span> V) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</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> F;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     F.ID = V;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">return</span> F;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   }</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">int</span> getOpaqueValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>; }</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> </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">/// \brief Encodes a location in the source. The SourceManager can decode this</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">/// to get at the full include stack, line and column information.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">/// Technically, a source location is simply an offset into the manager's view</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">/// of the input source, which is all input buffers (including macro</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/// expansions) concatenated in an effectively arbitrary order. The manager</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">/// actually maintains two blocks of input buffers. One, starting at offset</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">/// 0 and growing upwards, contains all buffers from this module. The other,</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">/// starting at the highest possible offset and growing downwards, contains</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/// buffers of loaded modules.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">/// In addition, one bit of SourceLocation is used for quick access to the</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">/// information whether the location is in a file or a macro expansion.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">/// It is important that this type remains small. It is currently 32 bits wide.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html">   87</a></span> <span class="comment"></span><span class="keyword">class </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> {</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordtype">unsigned</span> ID;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#aa2732a8586b0c018d6e610cefa09e7a4">   89</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a5d8560551ea81515968dd468e2e4082e">   90</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTReader.html" title="Reads an AST files chain containing the contents of a translation unit.">ASTReader</a>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a05a0d9d61e00c31d180a2a8f1d6f7903">   91</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTWriter.html" title="Writes an AST file containing the contents of a translation unit.">ASTWriter</a>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keyword">enum</span> LLVM_ENUM_INT_TYPE(<span class="keywordtype">unsigned</span>) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     MacroIDBit = 1U << 31</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> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">   97</a></span>   <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a>() : <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>(0) {}</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">   99</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()<span class="keyword"> const  </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & MacroIDBit) == 0; }</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">  100</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & MacroIDBit) != 0; }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// \brief Return true if this is a valid SourceLocation object.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// Invalid SourceLocations are often used when events have no corresponding</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// location in the source (e.g. a diagnostic is required for a command line</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// option).</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9">  107</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> != 0; }</div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">  108</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> == 0; }</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="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment">  /// \brief Return the offset into the manager's global input view.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> getOffset()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & ~MacroIDBit;</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> </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> getFileLoc(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>) {</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     assert((ID & MacroIDBit) == 0 && <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> L;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     L.ID = <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">return</span> L;</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="keyword">static</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> getMacroLoc(<span class="keywordtype">unsigned</span> ID) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     assert((ID & MacroIDBit) == 0 && <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> L;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     L.ID = MacroIDBit | <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">return</span> L;</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> <span class="keyword">public</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 Return a source location with the specified offset from this</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">  /// SourceLocation.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa">  133</a></span> <span class="comment"></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_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(<span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     assert(((getOffset()+Offset) & MacroIDBit) == 0 && <span class="stringliteral">"offset overflow"</span>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</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> L;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     L.ID = ID+<a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">return</span> L;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">  /// \brief When a SourceLocation itself cannot be used, this returns</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">  /// an (opaque) 32-bit integer encoding for it.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">  /// This should only be passed to SourceLocation::getFromRawEncoding, it</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">  /// should not be inspected directly.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a">  145</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>; }</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment"></span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">  /// \brief Turn a raw encoding of a SourceLocation object into</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// a real SourceLocation.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">  /// \see getRawEncoding.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494">  151</a></span> <span class="comment"></span>  <span class="keyword">static</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_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">getFromRawEncoding</a>(<span class="keywordtype">unsigned</span> <a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</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="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     X.ID = <a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</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"></span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">  /// \brief When a SourceLocation itself cannot be used, this returns</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  /// an (opaque) pointer encoding for it.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">  /// This should only be passed to SourceLocation::getFromPtrEncoding, it</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">  /// should not be inspected directly.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426">  162</a></span> <span class="comment"></span>  <span class="keywordtype">void</span>* <a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426" title="When a SourceLocation itself cannot be used, this returns an (opaque) pointer encoding for it...">getPtrEncoding</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="comment">// Double cast to avoid a warning "cast to pointer from integer of different</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="comment">// size".</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">return</span> (<span class="keywordtype">void</span>*)(uintptr_t)<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  /// \brief Turn a pointer encoding of a SourceLocation object back</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">  /// into a real SourceLocation.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae523912c613e94b328e339908aa7792a">  170</a></span> <span class="comment"></span>  <span class="keyword">static</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_1SourceLocation.html#ae523912c613e94b328e339908aa7792a" title="Turn a pointer encoding of a SourceLocation object back into a real SourceLocation.">getFromPtrEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">getFromRawEncoding</a>((<span class="keywordtype">unsigned</span>)(uintptr_t)Encoding);</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> </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(raw_ostream &OS, <span class="keyword">const</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>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   LLVM_ATTRIBUTE_USED std::string <a class="code" href="classclang_1_1SourceLocation.html#ae8878ad26aef040a66762ebb54bf3bed">printToString</a>(<span class="keyword">const</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>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae93fd6807abf849dc2bb276d8e1846b0">dump</a>(<span class="keyword">const</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>) <span class="keyword">const</span>;</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> </div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="code" href="namespaceclang.html#af69e8561fc620afde23763728d8f8551">  179</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a291d36360b70f878533d50fde94b1465">operator==</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() == RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</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> </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="code" href="namespaceclang.html#ac46dbf187e89fce84ba9cfc4431c0f31">  183</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#aafe7017f6d734340af27ef4e92b19b77">operator!=</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">return</span> !(LHS == RHS);</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> </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="namespaceclang.html#a257a73888f07ffc86da7e6fd16a62c8a">  187</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() < RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">/// \brief A trival tuple used to represent a source range.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html">  192</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> {</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</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> B;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</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> E;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a431e265f62d4d4ea0070595f7f2f5611">  196</a></span>   <a class="code" href="classclang_1_1SourceRange.html#a431e265f62d4d4ea0070595f7f2f5611">SourceRange</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(<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="l00197"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a0d350817923d0558b9bd5a4e4f886721">  197</a></span>   <a class="code" href="classclang_1_1SourceRange.html#a0d350817923d0558b9bd5a4e4f886721">SourceRange</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> <a class="code" href="namespaceclang_1_1ast__matchers.html#af2a0068a0d7c4962e52a7a70967fa5df" title="Matches TypeLocs for which the given inner QualType-matcher matches.">loc</a>) : B(loc), E(loc) {}</div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#afd932d51c42bf85bb7717296937464a3">  198</a></span>   <a class="code" href="classclang_1_1SourceRange.html#afd932d51c42bf85bb7717296937464a3">SourceRange</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> begin, <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) : B(begin), E(end) {}</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">  200</a></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_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> B; }</div>
+<div class="line"><a name="l00201"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">  201</a></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_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> E; }</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">  203</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">setBegin</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> b) { B = b; }</div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795">  204</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795">setEnd</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> e) { E = e; }</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">  206</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> B.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && E.<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="l00207"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#ad4b210c1ce478d3e76c9e8e27bad7745">  207</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#ad4b210c1ce478d3e76c9e8e27bad7745">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>(); }</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a77f9ec3201fc3b59d2d19415cf9be01c">  209</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#a77f9ec3201fc3b59d2d19415cf9be01c">operator==</a>(<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> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordflow">return</span> B == X.B && E == X.E;</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> </div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a64ad669027651618a1de5db759907f33">  213</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#a64ad669027651618a1de5db759907f33">operator!=</a>(<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> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="keywordflow">return</span> B != X.B || E != X.E;</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> };</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">/// \brief Represents a character-granular source range.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">/// The underlying SourceRange can either specify the starting/ending character</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">/// of the range, or it can specify the start of the range and the start of the</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">/// last token of the range (a "token range").  In the token range case, the</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">/// size of the last token must be measured to determine the actual end of the</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">/// range.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html">  225</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> { </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</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="l00227"></a><span class="lineno">  227</span>   <span class="keywordtype">bool</span> IsTokenRange;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">  229</a></span>   <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>() : IsTokenRange(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {}</div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#aac858384059ce4b757133b8207b59210">  230</a></span>   <a class="code" href="classclang_1_1CharSourceRange.html#aac858384059ce4b757133b8207b59210">CharSourceRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R, <span class="keywordtype">bool</span> ITR) : Range(R), IsTokenRange(ITR) {}</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">  232</a></span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">getTokenRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>(R, <span class="keyword">true</span>);</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> </div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">  236</a></span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">getCharRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>(R, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   }</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     </div>
+<div class="line"><a name="l00240"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a6ab577e4c75d0929e5cac2844f93cb9b">  240</a></span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a6ab577e4c75d0929e5cac2844f93cb9b">getTokenRange</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> 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="l00241"></a><span class="lineno">  241</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">getTokenRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(B, E));</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   }</div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a25c35441ee19a63cc96303e2328f0f94">  243</a></span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a25c35441ee19a63cc96303e2328f0f94">getCharRange</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> 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="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">getCharRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(B, E));</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>   <span class="comment"></span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">  /// \brief Return true if the end of this range specifies the start of</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  /// the last token.  Return false if the end of this range specifies the last</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">  /// character in the range.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a9bc337ba1c6e4e47e0f997196525d12f">  250</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a9bc337ba1c6e4e47e0f997196525d12f" title="Return true if the end of this range specifies the start of the last token. Return false if the end o...">isTokenRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsTokenRange; }</div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#aea5e195bc938e58aebd1700dc68b026a">  251</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#aea5e195bc938e58aebd1700dc68b026a">isCharRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !IsTokenRange; }</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   </div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82">  253</a></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_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82">getBegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(); }</div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a2a3d04e2491bd5b564a1bf4c975ff3f0">  254</a></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_1CharSourceRange.html#a2a3d04e2491bd5b564a1bf4c975ff3f0">getEnd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>(); }</div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a6fb958e9fcaefeabaaa1218deaac6964">  255</a></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> &<a class="code" href="classclang_1_1CharSourceRange.html#a6fb958e9fcaefeabaaa1218deaac6964">getAsRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range; }</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>  </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a4ba3b241ea39bea4376261afa070ffb2">  257</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharSourceRange.html#a4ba3b241ea39bea4376261afa070ffb2">setBegin</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> b) { Range.<a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">setBegin</a>(b); }</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a05b87fb9e32aa0feba10d190abaedf8f">  258</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharSourceRange.html#a05b87fb9e32aa0feba10d190abaedf8f">setEnd</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> e) { Range.<a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795">setEnd</a>(e); }</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   </div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519">  260</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>(); }</div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a1e4858d56ba9cff184a5280dbacfe786">  261</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a1e4858d56ba9cff184a5280dbacfe786">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519">isValid</a>(); }</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> };</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment"></span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">/// \brief A SourceLocation and its associated SourceManager.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="comment">/// This is useful for argument passing to functions that expect both objects.</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html">  267</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> : <span class="keyword">public</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> {</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> *SrcMgr;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">  /// \brief Creates a FullSourceLoc where isValid() returns \c false.</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c">  271</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c" title="Creates a FullSourceLoc where isValid() returns false.">FullSourceLoc</a>() : SrcMgr(0) {}</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a275ab529eb804ed420f77e35accd892a">  273</a></span>   <span class="keyword">explicit</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c" title="Creates a FullSourceLoc where isValid() returns false.">FullSourceLoc</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> <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="l00274"></a><span class="lineno">  274</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), SrcMgr(&SM) {}</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment"></span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment">  /// \pre This FullSourceLoc has an associated SourceManager.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a90ff11b13596b28b7b4a89f6c6c22a91">  277</a></span> <span class="comment"></span>  <span class="keyword">const</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_1FullSourceLoc.html#a90ff11b13596b28b7b4a89f6c6c22a91">getManager</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     assert(SrcMgr && <span class="stringliteral">"SourceManager is NULL."</span>);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="keywordflow">return</span> *SrcMgr;</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   }</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</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> <a class="code" href="classclang_1_1FullSourceLoc.html#ae2220ce56fa3fe83cc0d9530ae4e1d56">getFileID</a>() <span class="keyword">const</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>   <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> <a class="code" href="classclang_1_1FullSourceLoc.html#ae2e4a9834721a370db2f3c76de37f3ae">getExpansionLoc</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> <a class="code" href="classclang_1_1FullSourceLoc.html#a7fc79886e3b469a10fb885f2fc592a1d">getSpellingLoc</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a1264de07e1d1d7f97d77256bbc7a47a3">getExpansionLineNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a02d3383a8d75d40840cf17de8f5a0b83">getExpansionColumnNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#adcf5bd8d1c4f74936f879e28f721863b">getSpellingLineNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a468c34b99347b97f651db48b84bf9c5e">getSpellingColumnNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1FullSourceLoc.html#a1e7ec7efdf604dbc96ea1a444759c830">getCharacterData</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</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="keyword">const</span> llvm::MemoryBuffer* <a class="code" href="classclang_1_1FullSourceLoc.html#a7904e132c5dff788656455f3968b1c36">getBuffer</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="comment"></span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> <span class="comment">  /// \brief Return a StringRef to the source buffer data for the</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> <span class="comment">  /// specified FileID.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1FullSourceLoc.html#add7deab92b4231d88a6ad92303820d2f" title="Return a StringRef to the source buffer data for the specified FileID.">getBufferData</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="comment"></span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="comment">  /// \brief Decompose the specified location into a raw FileID + Offset pair.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="comment">  /// The first element is the FileID, the second is the offset from the</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="comment">  /// start of the buffer of the location.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="comment"></span>  std::pair<FileID, unsigned> <a class="code" href="classclang_1_1FullSourceLoc.html#a7bee4c4ce58788c5157570e2dfc93e3e" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>() <span class="keyword">const</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="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38d8ea4f01835db6a5167114cfffbdf0">isInSystemHeader</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="comment"></span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="comment">  /// \brief Determines the order of 2 source locations in the translation unit.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="comment">  /// \returns true if this source location comes before 'Loc', false otherwise.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</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="l00313"></a><span class="lineno">  313</span> <span class="comment"></span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="comment">  /// \brief Determines the order of 2 source locations in the translation unit.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="comment">  /// \returns true if this source location comes before 'Loc', false otherwise.</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ab1510920cd58824b163431d0fb8f2903">  317</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#ab1510920cd58824b163431d0fb8f2903" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</a>(<a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> Loc)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     assert(Loc.<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="l00319"></a><span class="lineno">  319</span>     assert(SrcMgr == Loc.SrcMgr && <span class="stringliteral">"Loc comes from another SourceManager!"</span>);</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</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="l00321"></a><span class="lineno">  321</span>   }</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> <span class="comment"></span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> <span class="comment">  /// \brief Comparison function class, useful for sorting FullSourceLocs.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html">  324</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html" title="Comparison function class, useful for sorting FullSourceLocs.">BeforeThanCompare</a> : <span class="keyword">public</span> std::binary_function<FullSourceLoc,</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>                                                          FullSourceLoc, bool> {</div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html#aab4ef2efce81872a281f25e37d191b6b">  326</a></span>     <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html#aab4ef2efce81872a281f25e37d191b6b">operator()</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a>& lhs, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a>& rhs)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       <span class="keywordflow">return</span> lhs.<a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</a>(rhs);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     }</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   };</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> <span class="comment"></span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="comment">  /// \brief Prints information about this FullSourceLoc to stderr.</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> <span class="comment">  /// This is useful for debugging.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="comment"></span>  LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a632f9accccc88dea307fb1831ae3348c" title="Prints information about this FullSourceLoc to stderr.">dump</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a8bc12cabd8565d0c8e0a536d8e906144">  337</a></span>   <a class="code" href="classclang_1_1FullSourceLoc.html#a8bc12cabd8565d0c8e0a536d8e906144">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &RHS) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() == RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() &&</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>           LHS.SrcMgr == RHS.SrcMgr;</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</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="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a6e91e73e080448d9b8d6971a89ff634b">  343</a></span>   <a class="code" href="classclang_1_1FullSourceLoc.html#a6e91e73e080448d9b8d6971a89ff634b">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &RHS) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   }</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</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> <span class="comment"></span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="comment">/// \brief Represents an unpacked "presumed" location which can be presented</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> <span class="comment">/// to the user.</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="comment">/// A 'presumed' location can be modified by \#line and GNU line marker</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> <span class="comment">/// directives and is always the expansion point of a normal location.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="comment">/// You can get a PresumedLoc from a SourceLocation with SourceManager.</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html">  356</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> {</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename;</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="keywordtype">unsigned</span> Line, Col;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</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> IncludeLoc;</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00361"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593">  361</a></span>   <a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593">PresumedLoc</a>() : Filename(0) {}</div>
+<div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a26149d6092eb78efa9e852a360440f04">  362</a></span>   <a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593">PresumedLoc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *FN, <span class="keywordtype">unsigned</span> Ln, <span class="keywordtype">unsigned</span> Co, <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> IL)</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     : Filename(FN), Line(Ln), Col(Co), IncludeLoc(IL) {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   }</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> <span class="comment"></span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> <span class="comment">  /// \brief Return true if this object is invalid or uninitialized.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> <span class="comment">  /// This occurs when created with invalid source locations or when walking</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="comment">  /// off the top of a \#include stack.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c">  370</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c" title="Return true if this object is invalid or uninitialized.">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename == 0; }</div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a507bb1ade126b405a32b69d19c5cc4fa">  371</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PresumedLoc.html#a507bb1ade126b405a32b69d19c5cc4fa">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename != 0; }</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> <span class="comment"></span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">  /// \brief Return the presumed filename of this location.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> <span class="comment">  /// This can be affected by \#line etc.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298">  376</a></span> <span class="comment"></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298" title="Return the presumed filename of this location.">getFilename</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename; }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment"></span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="comment">  /// \brief Return the presumed line number of this location.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="comment">  /// This can be affected by \#line etc.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30">  381</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Line; }</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="comment"></span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="comment">  /// \brief Return the presumed column number of this location.</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment">  /// This cannot be affected by \#line, but is packaged here for convenience.</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f">  386</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Col; }</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="comment"></span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> <span class="comment">  /// \brief Return the presumed include location of this location.</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment">  /// This can be affected by GNU linemarker directives.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a49a829eb782c4ad756c4131fd138b914">  391</a></span> <span class="comment"></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_1PresumedLoc.html#a49a829eb782c4ad756c4131fd138b914" title="Return the presumed include location of this location.">getIncludeLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IncludeLoc; }</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> </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> }  <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> <span class="keyword">namespace </span>llvm {<span class="comment"></span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> <span class="comment">  /// Define DenseMapInfo so that FileID's can be used as keys in DenseMap and</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> <span class="comment">  /// DenseSets.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> <span class="comment"></span>  <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00401"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html">  401</a></span>   <span class="keyword">struct </span><a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo</a><clang::FileID> {</div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a2f0bad157dac3901f792ddf3eb1886c9">  402</a></span>     <span class="keyword">static</span> <span class="keyword">inline</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...">clang::FileID</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a2f0bad157dac3901f792ddf3eb1886c9">getEmptyKey</a>() {</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">return</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...">clang::FileID</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     }</div>
+<div class="line"><a name="l00405"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a05df86c8aa088a1f6ab1e77af8b3f4cb">  405</a></span>     <span class="keyword">static</span> <span class="keyword">inline</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...">clang::FileID</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a05df86c8aa088a1f6ab1e77af8b3f4cb">getTombstoneKey</a>() {</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html#afdbd751b1c24199d6be2a18942fdba18">clang::FileID::getSentinel</a>();</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</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"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#af08b5bbb3491cfd7f7a61f5e04bfd51a">  409</a></span>     <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#af08b5bbb3491cfd7f7a61f5e04bfd51a">getHashValue</a>(<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...">clang::FileID</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">return</span> S.<a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07">getHashValue</a>();</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"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a88fc5e5eb522b3a65c4fc9605ad3c000">  413</a></span>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a88fc5e5eb522b3a65c4fc9605ad3c000">isEqual</a>(<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...">clang::FileID</a> LHS, <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...">clang::FileID</a> RHS) {</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>       <span class="keywordflow">return</span> LHS == RHS;</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     }</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   };</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00419"></a><span class="lineno"><a class="code" href="structllvm_1_1isPodLike_3_01clang_1_1SourceLocation_01_4.html#a49ee8c5b1ff6e92cf9d5b54b2d38a54d">  419</a></span>   <span class="keyword">struct </span><a class="code" href="structllvm_1_1isPodLike.html">isPodLike</a><clang::SourceLocation> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>; };</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="code" href="structllvm_1_1isPodLike_3_01clang_1_1FileID_01_4.html#a7e99475b4de9932ae8a086e676f9fa5e">  421</a></span>   <span class="keyword">struct </span><a class="code" href="structllvm_1_1isPodLike.html">isPodLike</a><clang::FileID> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <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="comment">// Teach SmallPtrSet how to handle SourceLocation.</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   <span class="keyword">template</span><></div>
+<div class="line"><a name="l00425"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html">  425</a></span>   <span class="keyword">class </span><a class="code" href="classllvm_1_1PointerLikeTypeTraits.html">PointerLikeTypeTraits</a><clang::SourceLocation> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a8c7d92497ad07291cc85c0c1ca7441f8">  427</a></span>     <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a8c7d92497ad07291cc85c0c1ca7441f8">getAsVoidPointer</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...">clang::SourceLocation</a> L) {</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="keywordflow">return</span> L.<a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426" title="When a SourceLocation itself cannot be used, this returns an (opaque) pointer encoding for it...">getPtrEncoding</a>();</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a6c3ed6d24414070a798ab34f8a5052e7">  430</a></span>     <span class="keyword">static</span> <span class="keyword">inline</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...">clang::SourceLocation</a> <a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a6c3ed6d24414070a798ab34f8a5052e7">getFromVoidPointer</a>(<span class="keywordtype">void</span> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">clang::SourceLocation::getFromRawEncoding</a>((<span class="keywordtype">unsigned</span>)(uintptr_t)P);</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     }</div>
+<div class="line"><a name="l00433"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#ad7cdf5ab52c8dd4432e2c597c267e02dab8d94ff5b7371fc66b72265a5a15b784">  433</a></span>     <span class="keyword">enum</span> { NumLowBitsAvailable = 0 };</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   };</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> }  <span class="comment">// end namespace llvm</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> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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/SourceManagerInternals_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,212 @@
+<!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: SourceManagerInternals.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_84b4cac0f3db7adb733be733ea7bc48e.html">Basic</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceManagerInternals.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManagerInternals_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">//===--- SourceManagerInternals.h - SourceManager Internals -----*- 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><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 Defines implementation details of the clang::SourceManager class.</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">#ifndef LLVM_CLANG_SOURCEMANAGER_INTERNALS_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SOURCEMANAGER_INTERNALS_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</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="l00019"></a><span class="lineno">   19</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="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/StringMap.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">// Line Table Implementation</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html">   29</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">  /// \brief The offset in this file that the line entry occurs at.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c">   31</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">  /// \brief The presumed line number of this line entry: \#line 4.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71">   34</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71" title="The presumed line number of this line entry: #line 4.">LineNo</a>;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">  /// \brief The ID of the filename identified by this line entry:</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">  /// \#line 4 "foo.c".  This is -1 if not specified.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea">   38</a></span> <span class="comment"></span>  <span class="keywordtype">int</span> <a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea" title="The ID of the filename identified by this line entry: #line 4 "foo.c". This is -1 if not specified...">FilenameID</a>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// \brief Set the 0 if no flags, 1 if a system header,</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e">   41</a></span> <span class="comment"></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> <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">  /// \brief The offset of the virtual include stack location,</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">  /// which is manipulated by GNU linemarker directives.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">  /// If this is 0 then there is no virtual \#includer.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9">   47</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38">   49</a></span>   <span class="keyword">static</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> Offs, <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>, <span class="keywordtype">int</span> Filename,</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</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> <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>,</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>                        <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>) {</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> E;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> = Offs;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     E.<a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71" title="The presumed line number of this line entry: #line 4.">LineNo</a> = <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     E.<a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea" title="The ID of the filename identified by this line entry: #line 4 "foo.c". This is -1 if not specified...">FilenameID</a> = Filename;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     E.<a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a> = <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     E.<a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a> = <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">return</span> E;</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">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">// needed for FindNearestLineEntry (upper_bound of LineEntry)</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="namespaceclang.html#a83177037441e4f1adaa35cf403ed53d9">   63</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &lhs, <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &rhs) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="comment">// FIXME: should check the other field?</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">return</span> lhs.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> < rhs.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</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> </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="namespaceclang.html#a600cc93c49d49aada5bef2b80e5ea8fd">   68</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &E, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordflow">return</span> E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</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> </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="namespaceclang.html#af5ff179e19f726cca6994afd8e0e51b9">   72</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>, <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &E) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">return</span> Offset < E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">/// \brief Used to hold and unique data used to represent \#line information.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html">   77</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// \brief Map used to assign unique IDs to filenames in \#line directives. </span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">  /// This allows us to unique the filenames that</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">  /// frequently reoccur and reference them with indices.  FilenameIDs holds</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// the mapping from string -> ID, and FilenamesByID holds the mapping of ID</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  /// to string.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment"></span>  llvm::StringMap<unsigned, llvm::BumpPtrAllocator> FilenameIDs;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   std::vector<llvm::StringMapEntry<unsigned>*> FilenamesByID;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment"></span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">  /// \brief Map from FileIDs to a list of line entries (sorted by the offset</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  /// at which they occur in the file).</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment"></span>  std::map<FileID, std::vector<LineEntry> > LineEntries;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ac35c913584f1e1e9728f32d4c572b0d7">   91</a></span>   <a class="code" href="classclang_1_1LineTableInfo.html#ac35c913584f1e1e9728f32d4c572b0d7">LineTableInfo</a>() {</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> </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154">   94</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154">clear</a>() {</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     FilenameIDs.clear();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     FilenamesByID.clear();</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     LineEntries.clear();</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> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#aa0cbe648a40142e3348c1afaefb4a2c3">  100</a></span>   <a class="code" href="classclang_1_1LineTableInfo.html#aa0cbe648a40142e3348c1afaefb4a2c3">~LineTableInfo</a>() {}</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>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796">getLineTableFilenameID</a>(StringRef Str);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7">  103</a></span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7">getFilename</a>(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     assert(ID < FilenamesByID.size() && <span class="stringliteral">"Invalid FilenameID"</span>);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">return</span> FilenamesByID[<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>]->getKeyData();</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a7ed1991c24004528dd5b8797a3bad2a7">  107</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a7ed1991c24004528dd5b8797a3bad2a7">getNumFilenames</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FilenamesByID.size(); }</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>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">AddLineNote</a>(<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, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                    <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">AddLineNote</a>(<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, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                    <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID,</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                    <span class="keywordtype">unsigned</span> EntryExit, <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);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// \brief Find the line entry nearest to FID that is before it.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">  /// If there is no line entry before \p Offset in \p FID, returns null.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *<a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(<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, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</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>   <span class="comment">// Low-level access</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">  122</a></span>   <span class="keyword">typedef</span> std::map<FileID, std::vector<LineEntry> ><a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">::iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a>;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ad0ee093c9f61217b5120fbe4d2dd418d">  123</a></span>   <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#ad0ee093c9f61217b5120fbe4d2dd418d">begin</a>() { <span class="keywordflow">return</span> LineEntries.begin(); }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a8c72ce1444fde0a77494b8d794abb2d8">  124</a></span>   <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#a8c72ce1444fde0a77494b8d794abb2d8">end</a>() { <span class="keywordflow">return</span> LineEntries.end(); }</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment"></span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">  /// \brief Add a new line entry that has already been encoded into</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// the internal representation of the line table.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179" title="Add a new line entry that has already been encoded into the internal representation of the line table...">AddEntry</a>(<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, <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>);</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> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> } <span class="comment">// end namespace clang</span></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> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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/SourceManager_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2287 @@
+<!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: SourceManager.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_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceManager.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManager_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">//===--- SourceManager.cpp - Track and cache source files -----------------===//</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 SourceManager interface.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</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> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</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="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="Diagnostic_8h.html" title="Defines the Diagnostic-related interfaces.">clang/Basic/Diagnostic.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="SourceManagerInternals_8h.html" title="Defines implementation details of the clang::SourceManager class.">clang/Basic/SourceManagerInternals.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "llvm/ADT/Optional.h"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "llvm/ADT/STLExtras.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/StringSwitch.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/Support/Capacity.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <algorithm></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <cstring></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <sys/stat.h></span></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">using namespace </span>clang;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">using namespace </span>SrcMgr;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">using</span> llvm::MemoryBuffer;</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="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">// SourceManager Helper Classes</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ad66d7273710f04a69e95df98e7ad0a85">   39</a></span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ad66d7273710f04a69e95df98e7ad0a85">ContentCache::~ContentCache</a>() {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7158a68c4318f7695816e56016367f0c" title="Determine whether the buffer should be freed.">shouldFreeBuffer</a>())</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keyword">delete</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">/// getSizeBytesMapped - Returns the number of bytes actually mapped for this</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">/// ContentCache. This can be 0 if the MemBuffer was not actually expanded.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a52d19f66d40162631c689e728fa4a983">   46</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a52d19f66d40162631c689e728fa4a983" title="Returns the number of bytes actually mapped for this ContentCache.">ContentCache::getSizeBytesMapped</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">return</span> Buffer.getPointer() ? Buffer.getPointer()->getBufferSize() : 0;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> }</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">/// Returns the kind of memory used to back the memory buffer for</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// this content cache.  This is used for performance analysis.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ab4207e36c7693e44711b5414968acdc1">   52</a></span> <span class="comment"></span>llvm::MemoryBuffer::BufferKind <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ab4207e36c7693e44711b5414968acdc1">ContentCache::getMemoryBufferKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   assert(Buffer.getPointer());</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>   <span class="comment">// Should be unreachable, but keep for sanity.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">if</span> (!Buffer.getPointer())</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">return</span> llvm::MemoryBuffer::MemoryBuffer_Malloc;</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">const</span> llvm::MemoryBuffer *buf = Buffer.getPointer();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">return</span> buf->getBufferKind();</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> }</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment">/// getSize - Returns the size of the content encapsulated by this ContentCache.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">///  This can be the size of the source file or the size of an arbitrary</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">///  scratch buffer.  If the ContentCache encapsulates a source file, that</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">///  file is not lazily brought in from disk to satisfy this query.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e">   67</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e" title="Returns the size of the content encapsulated by this ContentCache.">ContentCache::getSize</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">return</span> Buffer.getPointer() ? (<a class="code" href="classunsigned.html">unsigned</a>) Buffer.getPointer()->getBufferSize()</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>                              : (<a class="code" href="classunsigned.html">unsigned</a>) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>();</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> </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251">   72</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251" title="Replace the existing buffer (which will be deleted) with the given buffer.">ContentCache::replaceBuffer</a>(<span class="keyword">const</span> llvm::MemoryBuffer *B,</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>                                  <span class="keywordtype">bool</span> DoNotFree) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">if</span> (B && B == Buffer.getPointer()) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     assert(0 && <span class="stringliteral">"Replacing with the same buffer"</span>);</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     Buffer.setInt(DoNotFree? DoNotFreeFlag : 0);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="keywordflow">return</span>;</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>   </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7158a68c4318f7695816e56016367f0c" title="Determine whether the buffer should be freed.">shouldFreeBuffer</a>())</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keyword">delete</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   Buffer.setPointer(B);</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   Buffer.setInt(DoNotFree? DoNotFreeFlag : 0);</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"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b">   86</a></span> <span class="keyword">const</span> llvm::MemoryBuffer *<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">ContentCache::getBuffer</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                                                   <span class="keyword">const</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>,</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</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="l00089"></a><span class="lineno">   89</span>                                                   <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="comment">// Lazily create the Buffer for ContentCaches that wrap files.  If we already</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="comment">// computed it, just return what we have.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordflow">if</span> (Buffer.getPointer() || <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a> == 0) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       *Invalid = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a09fcdb944014c3a41eaafbd6b64642c4" title="Determine whether the buffer itself is invalid.">isBufferInvalid</a>();</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>     <span class="keywordflow">return</span> Buffer.getPointer();</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>   std::string ErrorStr;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keywordtype">bool</span> isVolatile = SM.<a class="code" href="classclang_1_1SourceManager.html#adb1befb02533b06cde5abccc872c4a1b" title="True if non-system source files should be treated as volatile (likely to change while trying to use t...">userFilesAreVolatile</a>() && !<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a6f69c64e25a406440e3ae3f669fb103e" title="True if this content cache was initially created for a source file considered as a system one...">IsSystemFile</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   Buffer.setPointer(SM.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a4aedd4bd4b3dc2a8df7f3dba692464a8" title="Open the specified file as a MemoryBuffer, returning a new MemoryBuffer if successful, otherwise returning null.">getBufferForFile</a>(<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>,</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                                                          &ErrorStr,</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>                                                          isVolatile));</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>   <span class="comment">// If we were unable to open the file, then we are in an inconsistent</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment">// situation where the content cache referenced a file which no longer</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="comment">// exists. Most likely, we were using a stat cache with an invalid entry but</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="comment">// the file could also have been removed during processing. Since we can't</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="comment">// really deal with this situation, just create an empty buffer.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="comment">// FIXME: This is definitely not ideal, but our immediate clients can't</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">// currently handle returning a null entry here. Ideally we should detect</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="comment">// that we are in an inconsistent situation and error out as quickly as</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="comment">// possible.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keywordflow">if</span> (!Buffer.getPointer()) {</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keyword">const</span> StringRef FillStr(<span class="stringliteral">"<<<MISSING SOURCE FILE>>>\n"</span>);</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     Buffer.setPointer(MemoryBuffer::getNewMemBuffer(<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>(), </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                                                     <span class="stringliteral">"<invalid>"</span>));</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keywordtype">char</span> *Ptr = <span class="keyword">const_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(Buffer.getPointer()->getBufferStart());</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>(); i != e; ++i)</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       Ptr[i] = FillStr[i % FillStr.size()];</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="keywordflow">if</span> (Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a8a9120983e02c6ecb29237297a9e3de8" title="Determine whethere there is already a diagnostic in flight.">isDiagnosticInFlight</a>())</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a621253f276989c5bb257cdc504a67ee4" title="Set the "delayed" diagnostic that will be emitted once the current diagnostic completes.">SetDelayedDiagnostic</a>(diag::err_cannot_open_file, </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>                                 <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), ErrorStr);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">else</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_cannot_open_file)</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>         << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>() << ErrorStr;</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>     Buffer.setInt(Buffer.getInt() | InvalidFlag);</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> (Invalid) *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">return</span> Buffer.getPointer();</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>   </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="comment">// Check that the file's size is the same as in the file entry (which may</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="comment">// have come from a stat cache).</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a1bd747e8a29948acb64ab889b21dae84" title="Get the underlying buffer, returning NULL if the buffer is not yet available.">getRawBuffer</a>()->getBufferSize() != (<span class="keywordtype">size_t</span>)<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>()) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordflow">if</span> (Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a8a9120983e02c6ecb29237297a9e3de8" title="Determine whethere there is already a diagnostic in flight.">isDiagnosticInFlight</a>())</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a621253f276989c5bb257cdc504a67ee4" title="Set the "delayed" diagnostic that will be emitted once the current diagnostic completes.">SetDelayedDiagnostic</a>(diag::err_file_modified,</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                                 <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_file_modified)</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</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>     Buffer.setInt(Buffer.getInt() | InvalidFlag);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     <span class="keywordflow">if</span> (Invalid) *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">return</span> Buffer.getPointer();</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> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="comment">// If the buffer is valid, check to see if it has a UTF Byte Order Mark</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="comment">// (BOM).  We only support UTF-8 with and without a BOM right now.  See</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="comment">// http://en.wikipedia.org/wiki/Byte_order_mark for more information.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   StringRef BufStr = Buffer.getPointer()->getBuffer();</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *InvalidBOM = llvm::StringSwitch<const char *>(BufStr)</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     .StartsWith(<span class="stringliteral">"\xFE\xFF"</span>, <span class="stringliteral">"UTF-16 (BE)"</span>)</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     .StartsWith(<span class="stringliteral">"\xFF\xFE"</span>, <span class="stringliteral">"UTF-16 (LE)"</span>)</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     .StartsWith(<span class="stringliteral">"\x00\x00\xFE\xFF"</span>, <span class="stringliteral">"UTF-32 (BE)"</span>)</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     .StartsWith(<span class="stringliteral">"\xFF\xFE\x00\x00"</span>, <span class="stringliteral">"UTF-32 (LE)"</span>)</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     .StartsWith(<span class="stringliteral">"\x2B\x2F\x76"</span>, <span class="stringliteral">"UTF-7"</span>)</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     .StartsWith(<span class="stringliteral">"\xF7\x64\x4C"</span>, <span class="stringliteral">"UTF-1"</span>)</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     .StartsWith(<span class="stringliteral">"\xDD\x73\x66\x73"</span>, <span class="stringliteral">"UTF-EBCDIC"</span>)</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     .StartsWith(<span class="stringliteral">"\x0E\xFE\xFF"</span>, <span class="stringliteral">"SDSU"</span>)</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     .StartsWith(<span class="stringliteral">"\xFB\xEE\x28"</span>, <span class="stringliteral">"BOCU-1"</span>)</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     .StartsWith(<span class="stringliteral">"\x84\x31\x95\x33"</span>, <span class="stringliteral">"GB-18030"</span>)</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     .Default(0);</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>   <span class="keywordflow">if</span> (InvalidBOM) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_unsupported_bom)</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>       << InvalidBOM << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     Buffer.setInt(Buffer.getInt() | InvalidFlag);</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>   </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     *Invalid = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a09fcdb944014c3a41eaafbd6b64642c4" title="Determine whether the buffer itself is invalid.">isBufferInvalid</a>();</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>   <span class="keywordflow">return</span> Buffer.getPointer();</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> </div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796">  180</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796">LineTableInfo::getLineTableFilenameID</a>(StringRef Name) {</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="comment">// Look up the filename in the string table, returning the pre-existing value</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">// if it exists.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   llvm::StringMapEntry<unsigned> &Entry =</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     FilenameIDs.GetOrCreateValue(Name, ~0U);</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <span class="keywordflow">if</span> (Entry.getValue() != ~0U)</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">return</span> Entry.getValue();</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>   <span class="comment">// Otherwise, assign this the next available ID.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   Entry.setValue(FilenamesByID.size());</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   FilenamesByID.push_back(&Entry);</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">return</span> FilenamesByID.size()-1;</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> }</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment"></span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">/// AddLineNote - Add a line note to the line table that indicates that there</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">/// is a \#line at the specified FID/Offset location which changes the presumed</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">/// location to LineNo/FilenameID.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">  197</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">LineTableInfo::AddLineNote</a>(<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, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>                                 <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID) {</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   assert((Entries.empty() || Entries.back().FileOffset < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) &&</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>          <span class="stringliteral">"Adding line entries out of order!"</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>   <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> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordtype">unsigned</span> IncludeOffset = 0;</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="keywordflow">if</span> (!Entries.empty()) {</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="comment">// If this is a '#line 4' after '#line 42 "foo.h"', make sure to remember</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="comment">// that we are still in "foo.h".</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordflow">if</span> (FilenameID == -1)</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       FilenameID = Entries.back().FilenameID;</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="comment">// If we are after a line marker that switched us to system header mode, or</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="comment">// that set #include information, preserve it.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     Kind = Entries.back().FileKind;</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     IncludeOffset = Entries.back().IncludeOffset;</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> </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   Entries.push_back(<a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38">LineEntry::get</a>(Offset, LineNo, FilenameID, Kind,</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>                                    IncludeOffset));</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> <span class="comment"></span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">/// AddLineNote This is the same as the previous version of AddLineNote, but is</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">/// used for GNU line markers.  If EntryExit is 0, then this doesn't change the</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">/// presumed \#include stack.  If it is 1, this is a file entry, if it is 2 then</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">/// this is a file exit.  FileKind specifies whether this is a system header or</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">/// extern C system header.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#acd9412e2332492b3d703fcaabf2c8f1b">  228</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">LineTableInfo::AddLineNote</a>(<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, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>                                 <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID,</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>                                 <span class="keywordtype">unsigned</span> EntryExit,</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</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) {</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   assert(FilenameID != -1 && <span class="stringliteral">"Unspecified filename should use other accessor"</span>);</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>   std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</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>   assert((Entries.empty() || Entries.back().FileOffset < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) &&</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>          <span class="stringliteral">"Adding line entries out of order!"</span>);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> </div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordtype">unsigned</span> IncludeOffset = 0;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keywordflow">if</span> (EntryExit == 0) {  <span class="comment">// No #include stack change.</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     IncludeOffset = Entries.empty() ? 0 : Entries.back().IncludeOffset;</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EntryExit == 1) {</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     IncludeOffset = Offset-1;</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EntryExit == 2) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     assert(!Entries.empty() && Entries.back().IncludeOffset &&</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>        <span class="stringliteral">"PPDirectives should have caught case when popping empty include stack"</span>);</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>     <span class="comment">// Get the include loc of the last entries' include loc as our include loc.</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     IncludeOffset = 0;</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *PrevEntry =</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>           FindNearestLineEntry(FID, Entries.back().IncludeOffset))</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       IncludeOffset = PrevEntry->IncludeOffset;</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>   Entries.push_back(<a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38">LineEntry::get</a>(Offset, LineNo, FilenameID, FileKind,</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>                                    IncludeOffset));</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> </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment"></span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">/// FindNearestLineEntry - Find the line entry nearest to FID that is before</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">/// it.  If there is no line entry before Offset in FID, return null.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b">  262</a></span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *<a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">LineTableInfo::FindNearestLineEntry</a>(<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,</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>                                                      <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   assert(!Entries.empty() && <span class="stringliteral">"No #line entries for this FID after all!"</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">// It is very common for the query to be after the last #line, check this</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   <span class="comment">// first.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">if</span> (Entries.back().FileOffset <= <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>)</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     <span class="keywordflow">return</span> &Entries.back();</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="comment">// Do a binary search to find the maximal element that is still before Offset.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   std::vector<LineEntry>::const_iterator I =</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     std::upper_bound(Entries.begin(), Entries.end(), <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   <span class="keywordflow">if</span> (I == Entries.begin()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordflow">return</span> &*--I;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> }</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment"></span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> <span class="comment">/// \brief Add a new line entry that has already been encoded into</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> <span class="comment">/// the internal representation of the line table.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179">  281</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179" title="Add a new line entry that has already been encoded into the internal representation of the line table...">LineTableInfo::AddEntry</a>(<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,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>                              <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>) {</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   LineEntries[FID] = <a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>;</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> }</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment"></span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">/// getLineTableFilenameID - Return the uniqued ID for the specified filename.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec">  288</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec" title="Return the uniqued ID for the specified filename.">SourceManager::getLineTableFilenameID</a>(StringRef Name) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordflow">return</span> LineTable->getLineTableFilenameID(Name);</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</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> <span class="comment"></span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">/// AddLineNote - Add a line note to the line table for the FileID and offset</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="comment">/// specified by Loc.  If FilenameID is -1, it is considered to be</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> <span class="comment">/// unspecified.</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e">  298</a></span> <span class="comment"></span><span class="keywordtype">void</span> <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.">SourceManager::AddLineNote</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="keywordtype">unsigned</span> LineNo,</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>                                 <span class="keywordtype">int</span> FilenameID) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = getSLocEntry(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || Invalid)</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">return</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="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">FileInfo</a> = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">// Remember that this file has #line directives now if it doesn't already.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a>&<span class="keyword">></span>(FileInfo).setHasLineDirectives();</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   LineTable->AddLineNote(LocInfo.first, LocInfo.second, LineNo, FilenameID);</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> }</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="comment"></span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> <span class="comment">/// AddLineNote - Add a GNU line marker to the line table.</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a191c7e8b9ebebc091590dcf40a1e4661">  318</a></span> <span class="comment"></span><span class="keywordtype">void</span> <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.">SourceManager::AddLineNote</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="keywordtype">unsigned</span> LineNo,</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>                                 <span class="keywordtype">int</span> FilenameID, <span class="keywordtype">bool</span> IsFileEntry,</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>                                 <span class="keywordtype">bool</span> IsFileExit, <span class="keywordtype">bool</span> IsSystemHeader,</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>                                 <span class="keywordtype">bool</span> IsExternCHeader) {</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="comment">// If there is no filename and no flags, this is treated just like a #line,</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="comment">// which does not change the flags of the previous line marker.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">if</span> (FilenameID == -1) {</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     assert(!IsFileEntry && !IsFileExit && !IsSystemHeader && !IsExternCHeader &&</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>            <span class="stringliteral">"Can't set flags without setting the filename!"</span>);</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">return</span> AddLineNote(Loc, LineNo, FilenameID);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   }</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = getSLocEntry(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || Invalid)</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">FileInfo</a> = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</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>   <span class="comment">// Remember that this file has #line directives now if it doesn't already.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a>&<span class="keyword">></span>(FileInfo).setHasLineDirectives();</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> (LineTable == 0)</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</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;</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordflow">if</span> (IsExternCHeader)</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35da9023f6ef1ca01526b946dd690e56d951">SrcMgr::C_ExternCSystem</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsSystemHeader)</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dac3b930a303c855d8864c56fcc992074e">SrcMgr::C_System</a>;</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="keywordtype">unsigned</span> EntryExit = 0;</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="keywordflow">if</span> (IsFileEntry)</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     EntryExit = 1;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsFileExit)</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     EntryExit = 2;</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   LineTable->AddLineNote(LocInfo.first, LocInfo.second, LineNo, FilenameID,</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>                          EntryExit, FileKind);</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> </div>
+<div class="line"><a name="l00363"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#af8b2eab6301eb653ca3ba47e6b65a910">  363</a></span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a> &<a class="code" href="classclang_1_1SourceManager.html#af8b2eab6301eb653ca3ba47e6b65a910" title="Retrieve the stored line table.">SourceManager::getLineTable</a>() {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="keywordflow">return</span> *LineTable;</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> </div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> <span class="comment">// Private 'Create' methods.</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a31c7782e103f9c6a515c610740581606">  373</a></span> SourceManager::SourceManager(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a> &FileMgr,</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>                              <span class="keywordtype">bool</span> UserFilesAreVolatile)</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   : Diag(Diag), FileMgr(FileMgr), OverridenFilesKeepOriginalName(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     UserFilesAreVolatile(UserFilesAreVolatile),</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     ExternalSLocEntries(0), LineTable(0), NumLinearScans(0),</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     NumBinaryProbes(0), FakeBufferForRecovery(0),</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     FakeContentCacheForRecovery(0) {</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <a class="code" href="classclang_1_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6">clearIDTables</a>();</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a3a93afbd57877105bb54c19a0c58e8f5">setSourceManager</a>(<span class="keyword">this</span>);</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> </div>
+<div class="line"><a name="l00384"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1aaf363af19e27658a8d45d1b66a6c60">  384</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1aaf363af19e27658a8d45d1b66a6c60">SourceManager::~SourceManager</a>() {</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keyword">delete</span> LineTable;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="comment">// Delete FileEntry objects corresponding to content caches.  Since the actual</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="comment">// content cache objects are bump pointer allocated, we just have to run the</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="comment">// dtors, but we call the deallocate method for completeness.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MemBufferInfos.size(); i != e; ++i) {</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">if</span> (MemBufferInfos[i]) {</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       MemBufferInfos[i]->~ContentCache();</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>       ContentCacheAlloc.Deallocate(MemBufferInfos[i]);</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     }</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   }</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="keywordflow">for</span> (llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*>::iterator</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>        I = FileInfos.begin(), E = FileInfos.end(); I != E; ++I) {</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">if</span> (I->second) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       I->second->~ContentCache();</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       ContentCacheAlloc.Deallocate(I->second);</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</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>   </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="keyword">delete</span> FakeBufferForRecovery;</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keyword">delete</span> FakeContentCacheForRecovery;</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="keywordflow">for</span> (llvm::DenseMap<FileID, MacroArgsMap *>::iterator</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>          I = MacroArgsCacheMap.begin(),E = MacroArgsCacheMap.end(); I!=E; ++I) {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keyword">delete</span> I->second;</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</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"><a class="code" href="classclang_1_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6">  413</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6">SourceManager::clearIDTables</a>() {</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   MainFileID = <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>();</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   LocalSLocEntryTable.clear();</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   LoadedSLocEntryTable.clear();</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   SLocEntryLoaded.clear();</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   LastLineNoFileIDQuery = <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>();</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   LastLineNoContentCache = 0;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   LastFileIDLookup = <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>();</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="keywordflow">if</span> (LineTable)</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154">clear</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">// Use up FileID #0 as an invalid expansion.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>   NextLocalOffset = 0;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   CurrentLoadedOffset = MaxLoadedOffset;</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">createExpansionLoc</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>(),<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_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), 1);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> }</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment"></span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">/// getOrCreateContentCache - Create or return a cached ContentCache for the</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">/// specified file.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> SourceManager::getOrCreateContentCache(<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> *FileEnt,</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>                                        <span class="keywordtype">bool</span> isSystemFile) {</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   assert(FileEnt && <span class="stringliteral">"Didn't specify a file entry to use?"</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>   <span class="comment">// Do we already have information about this file?</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *&Entry = FileInfos[FileEnt];</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordflow">if</span> (Entry) <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="comment">// Nope, create a new Cache entry.  Make sure it is at least 8-byte aligned</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="comment">// so that FileInfo can use the low 3 bits of the pointer for its own</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="comment">// nefarious purposes.</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="keywordtype">unsigned</span> EntryAlign = llvm::AlignOf<ContentCache>::Alignment;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   EntryAlign = std::max(8U, EntryAlign);</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   Entry = ContentCacheAlloc.Allocate<<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>>(1, EntryAlign);</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>   <span class="keywordflow">if</span> (OverriddenFilesInfo) {</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     <span class="comment">// If the file contents are overridden with contents from another file,</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     <span class="comment">// pass that file to ContentCache.</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     llvm::DenseMap<const FileEntry *, const FileEntry *>::iterator</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>         overI = OverriddenFilesInfo->OverriddenFiles.find(FileEnt);</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="keywordflow">if</span> (overI == OverriddenFilesInfo->OverriddenFiles.end())</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(FileEnt);</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(OverridenFilesKeepOriginalName ? FileEnt</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>                                                               : overI->second,</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>                                overI->second);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(FileEnt);</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   }</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   Entry-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a6f69c64e25a406440e3ae3f669fb103e" title="True if this content cache was initially created for a source file considered as a system one...">IsSystemFile</a> = isSystemFile;</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <span class="keywordflow">return</span> Entry;</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> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> <span class="comment"></span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> <span class="comment">/// createMemBufferContentCache - Create a new ContentCache for the specified</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> <span class="comment">///  memory buffer.  This does no caching.</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>*</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> SourceManager::createMemBufferContentCache(<span class="keyword">const</span> MemoryBuffer *Buffer) {</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   <span class="comment">// Add a new ContentCache to the MemBufferInfos list and return it.  Make sure</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="comment">// it is at least 8-byte aligned so that FileInfo can use the low 3 bits of</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   <span class="comment">// the pointer for its own nefarious purposes.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordtype">unsigned</span> EntryAlign = llvm::AlignOf<ContentCache>::Alignment;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   EntryAlign = std::max(8U, EntryAlign);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Entry = ContentCacheAlloc.Allocate<<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>>(1, EntryAlign);</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>();</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   MemBufferInfos.push_back(Entry);</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   Entry-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac3f95bfeebace8a1e271f5e60e99726a">setBuffer</a>(Buffer);</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> }</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &SourceManager::loadSLocEntry(<span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>                                                       <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   assert(!SLocEntryLoaded[Index]);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   <span class="keywordflow">if</span> (ExternalSLocEntries-><a class="code" href="classclang_1_1ExternalSLocEntrySource.html#acb444bab492d1cac7eee6d7ea1f52444" title="Read the source location entry with index ID, which will always be less than -1.">ReadSLocEntry</a>(-(static_cast<int>(Index) + 2))) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="comment">// If the file of the SLocEntry changed we could still have loaded it.</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordflow">if</span> (!SLocEntryLoaded[Index]) {</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       <span class="comment">// Try to recover; create a SLocEntry so the rest of clang can handle it.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>       LoadedSLocEntryTable[Index] = SLocEntry::get(0,</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>                                  FileInfo::get(<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="l00497"></a><span class="lineno">  497</span>                                                getFakeContentCacheForRecovery(),</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>                                                <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>));</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>   }</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="keywordflow">return</span> LoadedSLocEntryTable[Index];</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</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> std::pair<int, unsigned></div>
+<div class="line"><a name="l00506"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aac4833e095c278e8e3e9bcbb7fe5ff77">  506</a></span> <a class="code" href="classclang_1_1SourceManager.html#aac4833e095c278e8e3e9bcbb7fe5ff77" title="Allocate a number of loaded SLocEntries, which will be actually loaded on demand from the external so...">SourceManager::AllocateLoadedSLocEntries</a>(<span class="keywordtype">unsigned</span> NumSLocEntries,</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>                                          <span class="keywordtype">unsigned</span> TotalSize) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   assert(ExternalSLocEntries && <span class="stringliteral">"Don't have an external sloc source"</span>);</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   LoadedSLocEntryTable.resize(LoadedSLocEntryTable.size() + NumSLocEntries);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   SLocEntryLoaded.resize(LoadedSLocEntryTable.size());</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   CurrentLoadedOffset -= TotalSize;</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   assert(CurrentLoadedOffset >= NextLocalOffset && <span class="stringliteral">"Out of source locations"</span>);</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = LoadedSLocEntryTable.size();</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   <span class="keywordflow">return</span> std::make_pair(-ID - 1, CurrentLoadedOffset);</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> }</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="comment"></span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="comment">/// \brief As part of recovering from missing or changed content, produce a</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment">/// fake, non-empty buffer.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="comment"></span><span class="keyword">const</span> llvm::MemoryBuffer *SourceManager::getFakeBufferForRecovery()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   <span class="keywordflow">if</span> (!FakeBufferForRecovery)</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     FakeBufferForRecovery</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       = llvm::MemoryBuffer::getMemBuffer(<span class="stringliteral">"<<<INVALID BUFFER>>"</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="keywordflow">return</span> FakeBufferForRecovery;</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> }</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> <span class="comment"></span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> <span class="comment">/// \brief As part of recovering from missing or changed content, produce a</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> <span class="comment">/// fake content cache.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> SourceManager::getFakeContentCacheForRecovery()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="keywordflow">if</span> (!FakeContentCacheForRecovery) {</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     FakeContentCacheForRecovery = <span class="keyword">new</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>();</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     FakeContentCacheForRecovery-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251" title="Replace the existing buffer (which will be deleted) with the given buffer.">replaceBuffer</a>(getFakeBufferForRecovery(),</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>                                                <span class="comment">/*DoNotFree=*/</span><span class="keyword">true</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="keywordflow">return</span> FakeContentCacheForRecovery;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> }</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> <span class="comment"></span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> <span class="comment">/// \brief Returns the previous in-order FileID or an invalid FileID if there</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> <span class="comment">/// is no previous one.</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> <span class="comment"></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> SourceManager::getPreviousFileID(<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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = FID.ID;</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <span class="keywordflow">if</span> (ID == -1)</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordflow">if</span> (ID-1 == 0)</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(-(ID-1) - 2) >= LoadedSLocEntryTable.size()) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   }</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   <span class="keywordflow">return</span> FileID::get(ID-1);</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> }</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> <span class="comment"></span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="comment">/// \brief Returns the next in-order FileID or an invalid FileID if there is</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> <span class="comment">/// no next one.</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> <span class="comment"></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> SourceManager::getNextFileID(<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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> </div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(ID+1) >= <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>())</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID+1 >= -1) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   }</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   <span class="keywordflow">return</span> FileID::get(ID+1);</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> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="comment">// Methods to create new FileID's and macro expansions.</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="comment"></span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="comment">/// createFileID - Create a new FileID for the specified ContentCache and</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="comment">/// include position.  This works regardless of whether the ContentCache</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="comment">/// corresponds to a file or some other input source.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="comment"></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> <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...">SourceManager::createFileID</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *File,</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</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,</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</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="l00586"></a><span class="lineno">  586</span>                                    <span class="keywordtype">int</span> LoadedID, <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="keywordflow">if</span> (LoadedID < 0) {</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     assert(LoadedID != -1 && <span class="stringliteral">"Loading sentinel FileID"</span>);</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     <span class="keywordtype">unsigned</span> Index = <a class="code" href="classunsigned.html">unsigned</a>(-LoadedID) - 2;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     assert(Index < LoadedSLocEntryTable.size() && <span class="stringliteral">"FileID out of range"</span>);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     assert(!SLocEntryLoaded[Index] && <span class="stringliteral">"FileID already loaded"</span>);</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     LoadedSLocEntryTable[Index] = SLocEntry::get(LoadedOffset,</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>         FileInfo::get(IncludePos, File, FileCharacter));</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     SLocEntryLoaded[Index] = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     <span class="keywordflow">return</span> FileID::get(LoadedID);</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   }</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   LocalSLocEntryTable.push_back(SLocEntry::get(NextLocalOffset,</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>                                                FileInfo::get(IncludePos, File,</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>                                                              FileCharacter)));</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   <span class="keywordtype">unsigned</span> FileSize = File-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e" title="Returns the size of the content encapsulated by this ContentCache.">getSize</a>();</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   assert(NextLocalOffset + FileSize + 1 > NextLocalOffset &&</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>          NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset &&</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>          <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   <span class="comment">// We do a +1 here because we want a SourceLocation that means "the end of the</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   <span class="comment">// file", e.g. for the "no newline at the end of the file" diagnostic.</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>   NextLocalOffset += FileSize + 1;</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span> </div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   <span class="comment">// Set LastFileIDLookup to the newly created file.  The next getFileID call is</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   <span class="comment">// almost guaranteed to be from that file.</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</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 = FileID::get(LocalSLocEntryTable.size()-1);</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">return</span> LastFileIDLookup = FID;</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> }</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> </div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</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></div>
+<div class="line"><a name="l00615"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a06c95caa63ece5301e14273ae5b6e411">  615</a></span> <a class="code" href="classclang_1_1SourceManager.html#a06c95caa63ece5301e14273ae5b6e411" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">SourceManager::createMacroArgExpansionLoc</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> SpellingLoc,</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</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> ExpansionLoc,</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>                                           <span class="keywordtype">unsigned</span> TokLength) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> Info = ExpansionInfo::createForMacroArg(SpellingLoc,</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>                                                         ExpansionLoc);</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   <span class="keywordflow">return</span> createExpansionLocImpl(Info, TokLength);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span> }</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span> </div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</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></div>
+<div class="line"><a name="l00624"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111">  624</a></span> <a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">SourceManager::createExpansionLoc</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> SpellingLoc,</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</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> ExpansionLocStart,</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</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> ExpansionLocEnd,</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>                                   <span class="keywordtype">unsigned</span> TokLength,</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>                                   <span class="keywordtype">int</span> LoadedID,</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>                                   <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> Info = <a class="code" href="namespaceclang_1_1serialized__diags.html#a36bc44b1b04b3c0c421e02761c2d0282" title="Returns a DiagnosticConsumer that serializes diagnostics to a bitcode file.">ExpansionInfo::create</a>(SpellingLoc, ExpansionLocStart,</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>                                              ExpansionLocEnd);</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="keywordflow">return</span> createExpansionLocImpl(Info, TokLength, LoadedID, LoadedOffset);</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> </div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</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></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span> SourceManager::createExpansionLocImpl(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Info,</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>                                       <span class="keywordtype">unsigned</span> TokLength,</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>                                       <span class="keywordtype">int</span> LoadedID,</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>                                       <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="keywordflow">if</span> (LoadedID < 0) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     assert(LoadedID != -1 && <span class="stringliteral">"Loading sentinel FileID"</span>);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <span class="keywordtype">unsigned</span> Index = <a class="code" href="classunsigned.html">unsigned</a>(-LoadedID) - 2;</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     assert(Index < LoadedSLocEntryTable.size() && <span class="stringliteral">"FileID out of range"</span>);</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     assert(!SLocEntryLoaded[Index] && <span class="stringliteral">"FileID already loaded"</span>);</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     LoadedSLocEntryTable[Index] = SLocEntry::get(LoadedOffset, Info);</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     SLocEntryLoaded[Index] = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">return</span> SourceLocation::getMacroLoc(LoadedOffset);</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>   }</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   LocalSLocEntryTable.push_back(SLocEntry::get(NextLocalOffset, Info));</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   assert(NextLocalOffset + TokLength + 1 > NextLocalOffset &&</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>          NextLocalOffset + TokLength + 1 <= CurrentLoadedOffset &&</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>          <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="comment">// See createFileID for that +1.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   NextLocalOffset += TokLength + 1;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="keywordflow">return</span> SourceLocation::getMacroLoc(NextLocalOffset - (TokLength + 1));</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> </div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span> <span class="keyword">const</span> llvm::MemoryBuffer *</div>
+<div class="line"><a name="l00659"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1e4ef3487a9b54b2d733e0dd38cffeb6">  659</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1e4ef3487a9b54b2d733e0dd38cffeb6" title="Retrieve the memory buffer associated with the given file.">SourceManager::getMemoryBufferForFile</a>(<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,</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>                                       <span class="keywordtype">bool</span> *Invalid) {</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(File);</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   assert(IR && <span class="stringliteral">"getOrCreateContentCache() cannot return NULL"</span>);</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <span class="keywordflow">return</span> IR-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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>(), Invalid);</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> }</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span> </div>
+<div class="line"><a name="l00666"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753">  666</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753" title="Override the contents of the given source file by providing an already-allocated buffer.">SourceManager::overrideFileContents</a>(<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> *SourceFile,</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>                                          <span class="keyword">const</span> llvm::MemoryBuffer *Buffer,</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>                                          <span class="keywordtype">bool</span> DoNotFree) {</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(SourceFile);</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   assert(IR && <span class="stringliteral">"getOrCreateContentCache() cannot return NULL"</span>);</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->replaceBuffer(Buffer, DoNotFree);</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->BufferOverridden = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span> </div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   getOverriddenFilesInfo().OverriddenFilesWithBuffer.insert(SourceFile);</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span> }</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> </div>
+<div class="line"><a name="l00678"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a887e7fbd73d1836716cf03443ba6c431">  678</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753" title="Override the contents of the given source file by providing an already-allocated buffer.">SourceManager::overrideFileContents</a>(<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> *SourceFile,</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</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> *NewFile) {</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   assert(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>() == NewFile-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>() &&</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>          <span class="stringliteral">"Different sizes, use the FileManager to create a virtual file with "</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>          <span class="stringliteral">"the correct size"</span>);</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   assert(FileInfos.count(SourceFile) == 0 &&</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>          <span class="stringliteral">"This function should be called at the initialization stage, before "</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>          <span class="stringliteral">"any parsing occurs."</span>);</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   getOverriddenFilesInfo().OverriddenFiles[SourceFile] = NewFile;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</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="classclang_1_1SourceManager.html#a11ed5cf983a0dabc74cb8defba573ddd">  689</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a11ed5cf983a0dabc74cb8defba573ddd" title="Disable overridding the contents of a file, previously enabled with overrideFileContents.">SourceManager::disableFileContentsOverride</a>(<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) {</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#acd8be94be8664d7d60b03b4f136d4f8f" title="Returns true if the file contents have been overridden.">isFileOverridden</a>(File))</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span> </div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(File);</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->replaceBuffer(0);</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->ContentsEntry = IR-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>;</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> </div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   assert(OverriddenFilesInfo);</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   OverriddenFilesInfo->OverriddenFiles.erase(File);</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   OverriddenFilesInfo->OverriddenFilesWithBuffer.erase(File);</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> }</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> </div>
+<div class="line"><a name="l00702"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662">  702</a></span> StringRef <a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662" title="Return a StringRef to the source buffer data for the specified FileID.">SourceManager::getBufferData</a>(<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, <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordflow">if</span> (!SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || MyInvalid) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="keywordflow">if</span> (Invalid) </div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="keywordflow">return</span> <span class="stringliteral">"<<<<<INVALID SOURCE LOCATION>>>>>"</span>;</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</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="keyword">const</span> llvm::MemoryBuffer *Buf</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     = SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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>(), </div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>                                                   &MyInvalid);</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     *Invalid = MyInvalid;</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="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">return</span> <span class="stringliteral">"<<<<<INVALID SOURCE LOCATION>>>>>"</span>;</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   <span class="keywordflow">return</span> Buf->getBuffer();</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> }</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">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span> <span class="comment">// SourceLocation manipulation methods.</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span> <span class="comment"></span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> <span class="comment">/// \brief Return the FileID for a SourceLocation.</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> <span class="comment">/// This is the cache-miss path of getFileID. Not as hot as that function, but</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="comment">/// still very important. It is responsible for finding the entry in the</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> <span class="comment">/// SLocEntry tables that contains the specified location.</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> <span class="comment"></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> SourceManager::getFileIDSlow(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>   <span class="keywordflow">if</span> (!SLocOffset)</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <span class="keywordflow">return</span> FileID::get(0);</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> </div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="comment">// Now it is time to search for the correct file. See where the SLocOffset</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="comment">// sits in the global view and consult local or loaded buffers for it.</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="keywordflow">if</span> (SLocOffset < NextLocalOffset)</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>     <span class="keywordflow">return</span> getFileIDLocal(SLocOffset);</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="keywordflow">return</span> getFileIDLoaded(SLocOffset);</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span> }</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span> <span class="comment"></span></div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span> <span class="comment">/// \brief Return the FileID for a SourceLocation with a low offset.</span></div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> <span class="comment">/// This function knows that the SourceLocation is in a local buffer, not a</span></div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span> <span class="comment">/// loaded one.</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span> <span class="comment"></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> SourceManager::getFileIDLocal(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   assert(SLocOffset < NextLocalOffset && <span class="stringliteral">"Bad function choice"</span>);</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <span class="comment">// After the first and second level caches, I see two common sorts of</span></div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="comment">// behavior: 1) a lot of searched FileID's are "near" the cached file</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>   <span class="comment">// location or are "near" the cached expansion location. 2) others are just</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   <span class="comment">// completely random and may be a very long way away.</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   <span class="comment">// To handle this, we do a linear search for up to 8 steps to catch #1 quickly</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="comment">// then we fall back to a less cache efficient, but more scalable, binary</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   <span class="comment">// search to find the location.</span></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>   <span class="comment">// See if this is near the file point - worst case we start scanning from the</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="comment">// most newly created FileID.</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *I;</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> </div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>   <span class="keywordflow">if</span> (LastFileIDLookup.ID < 0 ||</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       LocalSLocEntryTable[LastFileIDLookup.ID].getOffset() < SLocOffset) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <span class="comment">// Neither loc prunes our search.</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     I = LocalSLocEntryTable.end();</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="comment">// Perhaps it is near the file point.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     I = LocalSLocEntryTable.begin()+LastFileIDLookup.ID;</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   }</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span> </div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   <span class="comment">// Find the FileID that contains this.  "I" is an iterator that points to a</span></div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   <span class="comment">// FileID whose offset is known to be larger than SLocOffset.</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>   <span class="keywordtype">unsigned</span> NumProbes = 0;</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     --I;</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordflow">if</span> (I-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() <= SLocOffset) {</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</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> Res = FileID::get(<span class="keywordtype">int</span>(I - LocalSLocEntryTable.begin()));</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span> </div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       <span class="comment">// If this isn't an expansion, remember it.  We have good locality across</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       <span class="comment">// FileID lookups.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       <span class="keywordflow">if</span> (!I-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>         LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>       NumLinearScans += NumProbes+1;</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>       <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     }</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="keywordflow">if</span> (++NumProbes == 8)</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>   }</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span> </div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>   <span class="comment">// Convert "I" back into an index.  We know that it is an entry whose index is</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   <span class="comment">// larger than the offset we are looking for.</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   <span class="keywordtype">unsigned</span> GreaterIndex = I - LocalSLocEntryTable.begin();</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   <span class="comment">// LessIndex - This is the lower bound of the range that we're searching.</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>   <span class="comment">// We know that the offset corresponding to the FileID is is less than</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>   <span class="comment">// SLocOffset.</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>   <span class="keywordtype">unsigned</span> LessIndex = 0;</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>   NumProbes = 0;</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     <span class="keywordtype">unsigned</span> MiddleIndex = (GreaterIndex-LessIndex)/2+LessIndex;</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>     <span class="keywordtype">unsigned</span> MidOffset = <a class="code" href="classclang_1_1SourceManager.html#a06bd6d8f9ae3d855d407c226b5ddb8bb" title="Get a local SLocEntry. This is exposed for indexing.">getLocalSLocEntry</a>(MiddleIndex, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">return</span> FileID::get(0);</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>     ++NumProbes;</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span> </div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     <span class="comment">// If the offset of the midpoint is too large, chop the high side of the</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="comment">// range to the midpoint.</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     <span class="keywordflow">if</span> (MidOffset > SLocOffset) {</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       GreaterIndex = MiddleIndex;</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     }</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> </div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>     <span class="comment">// If the middle index contains the value, succeed and return.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     <span class="comment">// FIXME: This could be made faster by using a function that's aware of</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <span class="comment">// being in the local area.</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     <span class="keywordflow">if</span> (isOffsetInFileID(FileID::get(MiddleIndex), SLocOffset)) {</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</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> Res = FileID::get(MiddleIndex);</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span> </div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <span class="comment">// If this isn't a macro expansion, remember it.  We have good locality</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       <span class="comment">// across FileID lookups.</span></div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       <span class="keywordflow">if</span> (!LocalSLocEntryTable[MiddleIndex].isExpansion())</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>         LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       NumBinaryProbes += NumProbes;</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     }</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span> </div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     <span class="comment">// Otherwise, move the low-side up to the middle index.</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     LessIndex = MiddleIndex;</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>   }</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> }</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span> <span class="comment"></span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span> <span class="comment">/// \brief Return the FileID for a SourceLocation with a high offset.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> <span class="comment">/// This function knows that the SourceLocation is in a loaded buffer, not a</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> <span class="comment">/// local one.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> <span class="comment"></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> SourceManager::getFileIDLoaded(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">if</span> (SLocOffset < CurrentLoadedOffset) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     assert(0 && <span class="stringliteral">"Invalid SLocOffset or bad function choice"</span>);</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="keywordflow">return</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>();</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> </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   <span class="comment">// Essentially the same as the local case, but the loaded array is sorted</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>   <span class="comment">// in the other direction.</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> </div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   <span class="comment">// First do a linear scan from the last lookup position, if possible.</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   <span class="keywordtype">unsigned</span> I;</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   <span class="keywordtype">int</span> LastID = LastFileIDLookup.ID;</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   <span class="keywordflow">if</span> (LastID >= 0 || getLoadedSLocEntryByID(LastID).getOffset() < SLocOffset)</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     I = 0;</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     I = (-LastID - 2) + 1;</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>   <span class="keywordtype">unsigned</span> NumProbes;</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   <span class="keywordflow">for</span> (NumProbes = 0; NumProbes < 8; ++NumProbes, ++I) {</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     <span class="comment">// Make sure the entry is loaded!</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &E = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(I);</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() <= SLocOffset) {</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</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> Res = FileID::get(-<span class="keywordtype">int</span>(I) - 2);</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> </div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       <span class="keywordflow">if</span> (!E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>         LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       NumLinearScans += NumProbes + 1;</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>     }</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>   }</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> </div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   <span class="comment">// Linear scan failed. Do the binary search. Note the reverse sorting of the</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>   <span class="comment">// table: GreaterIndex is the one where the offset is greater, which is</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   <span class="comment">// actually a lower index!</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>   <span class="keywordtype">unsigned</span> GreaterIndex = I;</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>   <span class="keywordtype">unsigned</span> LessIndex = LoadedSLocEntryTable.size();</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>   NumProbes = 0;</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     ++NumProbes;</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     <span class="keywordtype">unsigned</span> MiddleIndex = (LessIndex - GreaterIndex) / 2 + GreaterIndex;</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &E = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(MiddleIndex);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     <span class="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() == 0)</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       <span class="keywordflow">return</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>(); <span class="comment">// invalid entry.</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span> </div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     ++NumProbes;</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="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() > SLocOffset) {</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       <span class="keywordflow">if</span> (GreaterIndex == MiddleIndex) {</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>         assert(0 && <span class="stringliteral">"binary search missed the entry"</span>);</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>         <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       }</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>       GreaterIndex = MiddleIndex;</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     }</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span> </div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     <span class="keywordflow">if</span> (isOffsetInFileID(FileID::get(-<span class="keywordtype">int</span>(MiddleIndex) - 2), SLocOffset)) {</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</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> Res = FileID::get(-<span class="keywordtype">int</span>(MiddleIndex) - 2);</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">if</span> (!E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       NumBinaryProbes += NumProbes;</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>       <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     }</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span> </div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     <span class="keywordflow">if</span> (LessIndex == MiddleIndex) {</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>       assert(0 && <span class="stringliteral">"binary search missed the entry"</span>);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>       <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     }</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>     LessIndex = MiddleIndex;</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>   }</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> }</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span> </div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</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> SourceManager::</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span> getExpansionLocSlowCase(<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="l00914"></a><span class="lineno">  914</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     <span class="comment">// Note: If Loc indicates an offset into a token that came from a macro</span></div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="comment">// expansion (e.g. the 5th character of the token) we do not want to add</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>     <span class="comment">// this offset when going to the expansion location.  The expansion</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="comment">// location is the macro invocation, which the offset has nothing to do</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <span class="comment">// with.  This is unlike when we get the spelling loc, because the offset</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     <span class="comment">// directly correspond to the token whose spelling we're inspecting.</span></div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>   } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span> </div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>   <span class="keywordflow">return</span> Loc;</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> </div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</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> SourceManager::getSpellingLocSlowCase(<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="l00928"></a><span class="lineno">  928</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>     Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     Loc = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(LocInfo.second);</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>   <span class="keywordflow">return</span> Loc;</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> </div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</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> SourceManager::getFileLocSlowCase(<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="l00937"></a><span class="lineno">  937</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7" title="Tests whether the given source location represents a macro argument's expansion into the function-lik...">isMacroArgExpansion</a>(Loc))</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       Loc = <a class="code" href="classclang_1_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getImmediateSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       Loc = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Loc).first;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>   <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span> }</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> </div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span> </div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> SourceManager::getDecomposedExpansionLocSlowCase(</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *E)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="comment">// If this is an expansion record, walk through all the expansion points.</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</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;</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</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="l00953"></a><span class="lineno">  953</span>   <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     Loc = E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span> </div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>     E = &<a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID);</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>     Offset = Loc.getOffset()-E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span> </div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   <span class="keywordflow">return</span> std::make_pair(FID, Offset);</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span> }</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> </div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> SourceManager::getDecomposedSpellingLocSlowCase(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *E,</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>                                                 <span class="keywordtype">unsigned</span> Offset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>   <span class="comment">// If this is an expansion record, walk through all the expansion points.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</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;</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</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="l00971"></a><span class="lineno">  971</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     Loc = E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     Loc = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Offset);</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> </div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>     FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     E = &<a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID);</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>     Offset = Loc.getOffset()-E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span> </div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>   <span class="keywordflow">return</span> std::make_pair(FID, Offset);</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span> }</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span> <span class="comment"></span></div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span> <span class="comment">/// getImmediateSpellingLoc - Given a SourceLocation object, return the</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span> <span class="comment">/// spelling location referenced by the ID.  This is the first level down</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment">/// towards the place where the characters that make up the lexed token can be</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span> <span class="comment">/// found.  This should not generally be used by clients.</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985">  987</a></span> <span class="comment"></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_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985" title="Given a SourceLocation object, return the spelling location referenced by the ID.">SourceManager::getImmediateSpellingLoc</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="l00988"></a><span class="lineno">  988</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>   Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="keywordflow">return</span> Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(LocInfo.second);</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span> }</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span> </div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> <span class="comment"></span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span> <span class="comment">/// getImmediateExpansionRange - Loc is required to be an expansion location.</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span> <span class="comment">/// Return the start/end of the expansion information.</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span> <span class="comment"></span>std::pair<SourceLocation,SourceLocation></div>
+<div class="line"><a name="l00998"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b">  998</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">SourceManager::getImmediateExpansionRange</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="l00999"></a><span class="lineno">  999</span>   assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Not a macro expansion loc!"</span>);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a9d875e610d727fdd75be1a8e28a3fd9d">getExpansionLocRange</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="comment">/// getExpansionRange - Given a SourceLocation object, return the range of</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="comment">/// tokens covered by the expansion in the ultimate file.</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment"></span>std::pair<SourceLocation,SourceLocation></div>
+<div class="line"><a name="l01007"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a532619980c29dd7590f84a8abc8dcfcc"> 1007</a></span> <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...">SourceManager::getExpansionRange</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="l01008"></a><span class="lineno"> 1008</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) <span class="keywordflow">return</span> std::make_pair(Loc, Loc);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>   std::pair<SourceLocation,SourceLocation> Res =</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>     <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Loc);</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>   <span class="comment">// Fully resolve the start and end locations to their ultimate expansion</span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>   <span class="comment">// points.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   <span class="keywordflow">while</span> (!Res.first.isFileID())</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     Res.first = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Res.first).first;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>   <span class="keywordflow">while</span> (!Res.second.isFileID())</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>     Res.second = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Res.second).second;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> }</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div>
+<div class="line"><a name="l01022"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7"> 1022</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7" title="Tests whether the given source location represents a macro argument's expansion into the function-lik...">SourceManager::isMacroArgExpansion</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="l01023"></a><span class="lineno"> 1023</span>   <span class="keywordflow">if</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</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_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>();</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> }</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div>
+<div class="line"><a name="l01030"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a118a110590249d67d2a6a62e793dc74b"> 1030</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a118a110590249d67d2a6a62e793dc74b" title="Tests whether the given source location represents the expansion of a macro body.">SourceManager::isMacroBodyExpansion</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="l01031"></a><span class="lineno"> 1031</span>   <span class="keywordflow">if</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</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_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>   <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#af10d256955253b4c070e600a195e3abe">isMacroBodyExpansion</a>();</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> }</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div>
+<div class="line"><a name="l01038"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#ac8208f55b7925dcc170f677c759d0b19"> 1038</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#ac8208f55b7925dcc170f677c759d0b19" title="Returns true if the given MacroID location points at the beginning of the immediate macro expansion...">SourceManager::isAtStartOfImmediateMacroExpansion</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="l01039"></a><span class="lineno"> 1039</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> *MacroBegin)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>   assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Expected a valid macro loc"</span>);</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   std::pair<FileID, unsigned> DecompLoc = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <span class="keywordflow">if</span> (DecompLoc.second > 0)</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Does not point at the start of expansion range.</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &ExpInfo =</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(DecompLoc.first, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</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> ExpLoc = ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</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>   <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     <span class="comment">// For macro argument expansions, check if the previous FileID is part of</span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     <span class="comment">// the same argument expansion, in which case this Loc is not at the</span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     <span class="comment">// beginning of the expansion.</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</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> PrevFID = getPreviousFileID(DecompLoc.first);</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     <span class="keywordflow">if</span> (!PrevFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &PrevEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(PrevFID, &Invalid);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>       <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>       <span class="keywordflow">if</span> (PrevEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>() &&</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>           PrevEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>() == ExpLoc)</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>         <span class="keywordflow">return</span> <span class="keyword">false</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>   }</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>   <span class="keywordflow">if</span> (MacroBegin)</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>     *MacroBegin = ExpLoc;</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</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"><a class="code" href="classclang_1_1SourceManager.html#a01512adc1838f85b975564197bb86584"> 1073</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a01512adc1838f85b975564197bb86584" title="Returns true if the given MacroID location points at the character end of the immediate macro expansi...">SourceManager::isAtEndOfImmediateMacroExpansion</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="l01074"></a><span class="lineno"> 1074</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> *MacroEnd)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Expected a valid macro loc"</span>);</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> </div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</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_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</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> NextLoc = Loc.<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="l01079"></a><span class="lineno"> 1079</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(NextLoc, FID))</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Does not point at the end of expansion range.</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>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &ExpInfo =</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>       <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     <span class="comment">// For macro argument expansions, check if the next FileID is part of the</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     <span class="comment">// same argument expansion, in which case this Loc is not at the end of the</span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>     <span class="comment">// expansion.</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</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> NextFID = getNextFileID(FID);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     <span class="keywordflow">if</span> (!NextFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &NextEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(NextFID, &Invalid);</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>       <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>       <span class="keywordflow">if</span> (NextEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>() &&</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>           NextEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>() ==</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>               ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>())</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>     }</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>   }</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>   <span class="keywordflow">if</span> (MacroEnd)</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     *MacroEnd = ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a23a06e3e093cb6f9984a79370a55fe95">getExpansionLocEnd</a>();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> }</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> </div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="comment">// Queries about the code at a SourceLocation.</span></div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment"></span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="comment">/// getCharacterData - Return a pointer to the start of the specified location</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment">/// in the appropriate MemoryBuffer.</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a365885c3cd3833c06fde3f5ed0ff60d8"> 1116</a></span> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1SourceManager.html#a365885c3cd3833c06fde3f5ed0ff60d8" title="Return a pointer to the start of the specified location in the appropriate spelling MemoryBuffer...">SourceManager::getCharacterData</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> SL,</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>                                             <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="comment">// Note that this is a hot function in the getSpelling() path, which is</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   <span class="comment">// heavily used by -E mode.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(SL);</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> </div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <span class="comment">// Note that calling 'getBuffer()' may lazily page in a source file.</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <span class="keywordtype">bool</span> CharDataInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &CharDataInvalid);</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="keywordflow">if</span> (CharDataInvalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     </div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>     <span class="keywordflow">return</span> <span class="stringliteral">"<<<<INVALID BUFFER>>>>"</span>;</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>   }</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>   <span class="keyword">const</span> llvm::MemoryBuffer *Buffer</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>                   -><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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>(), &CharDataInvalid);</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     *Invalid = CharDataInvalid;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   <span class="keywordflow">return</span> Buffer->getBufferStart() + (CharDataInvalid? 0 : LocInfo.second);</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> }</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="comment"></span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="comment">/// getColumnNumber - Return the column # for the specified file position.</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">/// this is significantly cheaper to compute than the line number.</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b"> 1142</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">SourceManager::getColumnNumber</a>(<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, <span class="keywordtype">unsigned</span> FilePos,</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>                                         <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>   <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>   <span class="keyword">const</span> llvm::MemoryBuffer *MemBuf = <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>     <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>   <span class="comment">// It is okay to request a position just past the end of the buffer.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   <span class="keywordflow">if</span> (FilePos > MemBuf->getBufferSize()) {</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>       *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   }</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>   <span class="comment">// See if we just calculated the line number for this FilePos and can use</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>   <span class="comment">// that to lookup the start of the line instead of searching for it.</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>   <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID &&</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>       LastLineNoContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> != 0 &&</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       LastLineNoResult < LastLineNoContentCache->NumLines) {</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="keywordtype">unsigned</span> *SourceLineCache = LastLineNoContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     <span class="keywordtype">unsigned</span> LineStart = SourceLineCache[LastLineNoResult - 1];</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     <span class="keywordtype">unsigned</span> LineEnd = SourceLineCache[LastLineNoResult];</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>     <span class="keywordflow">if</span> (FilePos >= LineStart && FilePos < LineEnd)</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       <span class="keywordflow">return</span> FilePos - LineStart + 1;</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>   }</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> </div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Buf = MemBuf->getBufferStart();</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>   <span class="keywordtype">unsigned</span> LineStart = FilePos;</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   <span class="keywordflow">while</span> (LineStart && Buf[LineStart-1] != <span class="charliteral">'\n'</span> && Buf[LineStart-1] != <span class="charliteral">'\r'</span>)</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     --LineStart;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <span class="keywordflow">return</span> FilePos-LineStart+1;</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <span class="comment">// isInvalid - Return the result of calling loc.isInvalid(), and</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="comment">// if Invalid is not null, set its value to same.</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92"> 1180</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</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="keywordtype">bool</span> *Invalid) {</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <span class="keywordtype">bool</span> MyInvalid = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>();</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   <span class="keywordflow">return</span> MyInvalid;</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> </div>
+<div class="line"><a name="l01187"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a87f26d996dbdbb1416dda847d74cb051"> 1187</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a87f26d996dbdbb1416dda847d74cb051">SourceManager::getSpellingColumnNumber</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="l01188"></a><span class="lineno"> 1188</span>                                                 <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, Invalid);</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> }</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> </div>
+<div class="line"><a name="l01194"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7008294144ca7315e608e18d4a672148"> 1194</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a7008294144ca7315e608e18d4a672148">SourceManager::getExpansionColumnNumber</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="l01195"></a><span class="lineno"> 1195</span>                                                  <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, Invalid);</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> }</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div>
+<div class="line"><a name="l01201"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a91eca6e07bda854a5b2d042e9377b3aa"> 1201</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a91eca6e07bda854a5b2d042e9377b3aa">SourceManager::getPresumedColumnNumber</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="l01202"></a><span class="lineno"> 1202</span>                                                 <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(Loc).<a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>();</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> }</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="emmintrin_8h.html">emmintrin.h</a>></span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> <span class="keyword">static</span> LLVM_ATTRIBUTE_NOINLINE <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FI,</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>                    llvm::BumpPtrAllocator &Alloc,</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>                    <span class="keyword">const</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>, <span class="keywordtype">bool</span> &Invalid);</div>
+<div class="line"><a name="l01215"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009"> 1215</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FI,</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>                                llvm::BumpPtrAllocator &Alloc,</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>                                <span class="keyword">const</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>, <span class="keywordtype">bool</span> &Invalid) {</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   <span class="comment">// Note that calling 'getBuffer()' may lazily page in the file.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keyword">const</span> MemoryBuffer *Buffer = FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, SM, <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="l01220"></a><span class="lineno"> 1220</span>                                              &Invalid);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> </div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   <span class="comment">// Find the file offsets of all of the *physical* source lines.  This does</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>   <span class="comment">// not look at trigraphs, escaped newlines, or anything else tricky.</span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 256></a> LineOffsets;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>   <span class="comment">// Line #1 starts at char 0.</span></div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   LineOffsets.push_back(0);</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> </div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *Buf = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer->getBufferStart();</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *End = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer->getBufferEnd();</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordtype">unsigned</span> Offs = 0;</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     <span class="comment">// Skip over the contents of the line.</span></div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *NextBuf = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buf;</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> </div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> <span class="preprocessor"></span>    <span class="comment">// Try to skip to the next newline using SSE instructions. This is very</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     <span class="comment">// performance sensitive for programs with lots of diagnostics and in -E</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     <span class="comment">// mode.</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     __m128i CRs = _mm_set1_epi8(<span class="charliteral">'\r'</span>);</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     __m128i LFs = _mm_set1_epi8(<span class="charliteral">'\n'</span>);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     <span class="comment">// First fix up the alignment to 16 bytes.</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     <span class="keywordflow">while</span> (((uintptr_t)NextBuf & 0xF) != 0) {</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>       <span class="keywordflow">if</span> (*NextBuf == <span class="charliteral">'\n'</span> || *NextBuf == <span class="charliteral">'\r'</span> || *NextBuf == <span class="charliteral">'\0'</span>)</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>         <span class="keywordflow">goto</span> FoundSpecialChar;</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>       ++NextBuf;</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>     }</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>     <span class="comment">// Scan 16 byte chunks for '\r' and '\n'. Ignore '\0'.</span></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     <span class="keywordflow">while</span> (NextBuf+16 <= End) {</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>       <span class="keyword">const</span> __m128i Chunk = *(<span class="keyword">const</span> __m128i*)NextBuf;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       __m128i Cmp = _mm_or_si128(_mm_cmpeq_epi8(Chunk, CRs),</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>                                  _mm_cmpeq_epi8(Chunk, LFs));</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>       <span class="keywordtype">unsigned</span> Mask = _mm_movemask_epi8(Cmp);</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">// If we found a newline, adjust the pointer and jump to the handling code.</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>       <span class="keywordflow">if</span> (Mask != 0) {</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>         NextBuf += llvm::countTrailingZeros(Mask);</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>         <span class="keywordflow">goto</span> FoundSpecialChar;</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>       }</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>       NextBuf += 16;</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> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     <span class="keywordflow">while</span> (*NextBuf != <span class="charliteral">'\n'</span> && *NextBuf != <span class="charliteral">'\r'</span> && *NextBuf != <span class="charliteral">'\0'</span>)</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>       ++NextBuf;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> </div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="preprocessor"></span>FoundSpecialChar:</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> <span class="preprocessor"></span>    Offs += NextBuf-Buf;</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>     Buf = NextBuf;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> </div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>     <span class="keywordflow">if</span> (Buf[0] == <span class="charliteral">'\n'</span> || Buf[0] == <span class="charliteral">'\r'</span>) {</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>       <span class="comment">// If this is \n\r or \r\n, skip both characters.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>       <span class="keywordflow">if</span> ((Buf[1] == <span class="charliteral">'\n'</span> || Buf[1] == <span class="charliteral">'\r'</span>) && Buf[0] != Buf[1])</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         ++Offs, ++Buf;</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>       ++Offs, ++Buf;</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>       LineOffsets.push_back(Offs);</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>       <span class="comment">// Otherwise, this is a null.  If end of file, exit.</span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>       <span class="keywordflow">if</span> (Buf == End) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>       <span class="comment">// Otherwise, skip the null.</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       ++Offs, ++Buf;</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>     }</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   }</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> </div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>   <span class="comment">// Copy the offsets into the FileInfo structure.</span></div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>   FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a> = LineOffsets.size();</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>   FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> = Alloc.Allocate<<span class="keywordtype">unsigned</span>>(LineOffsets.size());</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>   std::copy(LineOffsets.begin(), LineOffsets.end(), FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>);</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"></span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment">/// getLineNumber - Given a SourceLocation, return the spelling line number</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment">/// for the position indicated.  This requires building and caching a table of</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment">/// line offsets for the MemoryBuffer, so this is not cheap: use only when</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="comment">/// about to emit a diagnostic.</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236"> 1301</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">SourceManager::getLineNumber</a>(<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, <span class="keywordtype">unsigned</span> FilePos, </div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>                                       <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>       *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   }</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> </div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Content;</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>   <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID)</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     Content = LastLineNoContentCache;</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>     <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     <span class="keywordflow">if</span> (MyInvalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>       <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>         *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>       <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     }</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     </div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     Content = <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>*<span class="keyword">></span>(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>());</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</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>   <span class="comment">// If this is the first use of line information for this buffer, compute the</span><span class="comment"></span></div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> <span class="comment">  /// SourceLineCache for it on demand.</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> <span class="comment"></span>  <span class="keywordflow">if</span> (Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> == 0) {</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>     <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(Diag, Content, ContentCacheAlloc, *<span class="keyword">this</span>, MyInvalid);</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>       *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>     <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>       <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     *Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> </div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>   <span class="comment">// Okay, we know we have a line number table.  Do a binary search to find the</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   <span class="comment">// line number that this character position lands on.</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>   <span class="keywordtype">unsigned</span> *SourceLineCache = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>;</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   <span class="keywordtype">unsigned</span> *SourceLineCacheStart = SourceLineCache;</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   <span class="keywordtype">unsigned</span> *SourceLineCacheEnd = SourceLineCache + Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>;</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>   <span class="keywordtype">unsigned</span> QueriedFilePos = FilePos+1;</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>   <span class="comment">// FIXME: I would like to be convinced that this code is worth being as</span></div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   <span class="comment">// complicated as it is, binary search isn't that slow.</span></div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   <span class="comment">// If it is worth being optimized, then in my opinion it could be more</span></div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>   <span class="comment">// performant, simpler, and more obviously correct by just "galloping" outward</span></div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   <span class="comment">// from the queried file position. In fact, this could be incorporated into a</span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>   <span class="comment">// generic algorithm such as lower_bound_with_hint.</span></div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   <span class="comment">// If someone gives me a test case where this matters, and I will do it! - DWD</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> </div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>   <span class="comment">// If the previous query was to the same file, we know both the file pos from</span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <span class="comment">// that query and the line number returned.  This allows us to narrow the</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   <span class="comment">// search space from the entire file to something near the match.</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>   <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID) {</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>     <span class="keywordflow">if</span> (QueriedFilePos >= LastLineNoFilePos) {</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>       <span class="comment">// FIXME: Potential overflow?</span></div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>       SourceLineCache = SourceLineCache+LastLineNoResult-1;</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>       <span class="comment">// The query is likely to be nearby the previous one.  Here we check to</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>       <span class="comment">// see if it is within 5, 10 or 20 lines.  It can be far away in cases</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       <span class="comment">// where big comment blocks and vertical whitespace eat up lines but</span></div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>       <span class="comment">// contribute no tokens.</span></div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>       <span class="keywordflow">if</span> (SourceLineCache+5 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>         <span class="keywordflow">if</span> (SourceLineCache[5] > QueriedFilePos)</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>           SourceLineCacheEnd = SourceLineCache+5;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SourceLineCache+10 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>           <span class="keywordflow">if</span> (SourceLineCache[10] > QueriedFilePos)</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>             SourceLineCacheEnd = SourceLineCache+10;</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>           <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SourceLineCache+20 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>             <span class="keywordflow">if</span> (SourceLineCache[20] > QueriedFilePos)</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>               SourceLineCacheEnd = SourceLineCache+20;</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>           }</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>         }</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>       }</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>       <span class="keywordflow">if</span> (LastLineNoResult < Content->NumLines)</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>         SourceLineCacheEnd = SourceLineCache+LastLineNoResult+1;</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</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> </div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   <span class="comment">// If the spread is large, do a "radix" test as our initial guess, based on</span></div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   <span class="comment">// the assumption that lines average to approximately the same length.</span></div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>   <span class="comment">// NOTE: This is currently disabled, as it does not appear to be profitable in</span></div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>   <span class="comment">// initial measurements.</span></div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   <span class="keywordflow">if</span> (0 && SourceLineCacheEnd-SourceLineCache > 20) {</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>     <span class="keywordtype">unsigned</span> FileLen = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>[Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>-1];</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">// Take a stab at guessing where it is.</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     <span class="keywordtype">unsigned</span> ApproxPos = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>*QueriedFilePos / FileLen;</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     <span class="comment">// Check for -10 and +10 lines.</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>     <span class="keywordtype">unsigned</span> LowerBound = std::max(<span class="keywordtype">int</span>(ApproxPos-10), 0);</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     <span class="keywordtype">unsigned</span> UpperBound = std::min(ApproxPos+10, FileLen);</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>     <span class="comment">// If the computed lower bound is less than the query location, move it in.</span></div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>     <span class="keywordflow">if</span> (SourceLineCache < SourceLineCacheStart+LowerBound &&</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>         SourceLineCacheStart[LowerBound] < QueriedFilePos)</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       SourceLineCache = SourceLineCacheStart+LowerBound;</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     <span class="comment">// If the computed upper bound is greater than the query location, move it.</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     <span class="keywordflow">if</span> (SourceLineCacheEnd > SourceLineCacheStart+UpperBound &&</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>         SourceLineCacheStart[UpperBound] >= QueriedFilePos)</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>       SourceLineCacheEnd = SourceLineCacheStart+UpperBound;</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   }</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <span class="keywordtype">unsigned</span> *Pos</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>     = std::lower_bound(SourceLineCache, SourceLineCacheEnd, QueriedFilePos);</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="keywordtype">unsigned</span> LineNo = Pos-SourceLineCacheStart;</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> </div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>   LastLineNoFileIDQuery = FID;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>   LastLineNoContentCache = Content;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>   LastLineNoFilePos = QueriedFilePos;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>   LastLineNoResult = LineNo;</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   <span class="keywordflow">return</span> LineNo;</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> }</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div>
+<div class="line"><a name="l01420"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a6fba713e87cd0b876af279e853738e74"> 1420</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a6fba713e87cd0b876af279e853738e74">SourceManager::getSpellingLineNumber</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="l01421"></a><span class="lineno"> 1421</span>                                               <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> }</div>
+<div class="line"><a name="l01426"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#af71b79d2d27b647e3cb1bb922babd587"> 1426</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#af71b79d2d27b647e3cb1bb922babd587">SourceManager::getExpansionLineNumber</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="l01427"></a><span class="lineno"> 1427</span>                                                <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> }</div>
+<div class="line"><a name="l01432"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#ad547682e609a2190dee633ef0a3bf6f6"> 1432</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#ad547682e609a2190dee633ef0a3bf6f6">SourceManager::getPresumedLineNumber</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="l01433"></a><span class="lineno"> 1433</span>                                               <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(Loc).<a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <span class="comment">/// getFileCharacteristic - return the file characteristic of the specified</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> <span class="comment">/// source location, indicating whether this is a normal file, a system</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> <span class="comment">/// header, or an "implicit extern C" system header.</span></div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> <span class="comment">/// This state can be modified with flags on GNU linemarker directives like:</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="comment">///   # 4 "foo.h" 3</span></div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> <span class="comment">/// which changes all source locations in the current file after that to be</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> <span class="comment">/// considered to be from a system header.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> <span class="comment"></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></div>
+<div class="line"><a name="l01447"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a0a6faf535b8f3f23e64be0cb4eac99c3"> 1447</a></span> <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 ...">SourceManager::getFileCharacteristic</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="l01448"></a><span class="lineno"> 1448</span>   assert(!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() && <span class="stringliteral">"Can't get file characteristic of invalid loc!"</span>);</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="keywordflow">if</span> (Invalid || !SEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">C_User</a>;</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   </div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = SEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   <span class="comment">// If there are no #line directives in this file, just return the whole-file</span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="comment">// state.</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <span class="keywordflow">if</span> (!FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>())</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>     <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a89208e39e8a93a665ea3358e5b273f49" title="Return whether this is a system header or not.">getFileCharacteristic</a>();</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>   assert(LineTable && <span class="stringliteral">"Can't have linetable entries without a LineTable!"</span>);</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="comment">// See if there is a #line directive before the location.</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>   <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second);</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">// If this is before the first line marker, use the file characteristic.</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>   <span class="keywordflow">if</span> (!Entry)</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>     <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a89208e39e8a93a665ea3358e5b273f49" title="Return whether this is a system header or not.">getFileCharacteristic</a>();</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">return</span> Entry-><a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> }</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment"></span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment">/// Return the filename or buffer identifier of the buffer the location is in.</span></div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> <span class="comment">/// Note that this name does not respect \#line directives.  Use getPresumedLoc</span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="comment">/// for normal clients.</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#abe4f1b848fbaa9d9ce39c5ceab826965"> 1477</a></span> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1SourceManager.html#abe4f1b848fbaa9d9ce39c5ceab826965" title="Return the filename or buffer identifier of the buffer the location is in.">SourceManager::getBufferName</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="l01478"></a><span class="lineno"> 1478</span>                                          <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> <span class="stringliteral">"<invalid loc>"</span>;</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> </div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc), Invalid)->getBufferIdentifier();</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> }</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> </div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="comment"></span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment">/// getPresumedLoc - This method returns the "presumed" location of a</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">/// SourceLocation specifies.  A "presumed location" can be modified by \#line</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">/// or GNU line marker directives.  This provides a view on the data that a</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment">/// user should see in diagnostics, for example.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment">/// Note that a presumed location is always given as the expansion point of an</span></div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="comment">/// expansion location, not at the spelling location.</span></div>
+<div class="line"><a name="l01492"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d"> 1492</a></span> <span class="comment"></span><a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">SourceManager::getPresumedLoc</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="l01493"></a><span class="lineno"> 1493</span>                                           <span class="keywordtype">bool</span> UseLineDirectives)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> </div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   <span class="comment">// Presumed locations are always for expansion points.</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   <span class="keywordflow">if</span> (Invalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   </div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *C = FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>();</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>   <span class="comment">// To get the source name, first consult the FileEntry (if one exists)</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="comment">// before the MemBuffer as this will avoid unnecessarily paging in the</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>   <span class="comment">// MemBuffer.</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename;</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>   <span class="keywordflow">if</span> (C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>)</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     Filename = C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     Filename = C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>)->getBufferIdentifier();</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> </div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   <span class="keywordtype">unsigned</span> LineNo = <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second, &Invalid);</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>   <span class="keywordtype">unsigned</span> ColNo  = <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, &Invalid);</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   </div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</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> IncludeLoc = FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> </div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>   <span class="comment">// If we have #line directives in this file, update and overwrite the physical</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>   <span class="comment">// location info if appropriate.</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>   <span class="keywordflow">if</span> (UseLineDirectives && FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>()) {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>     assert(LineTable && <span class="stringliteral">"Can't have linetable entries without a LineTable!"</span>);</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>     <span class="comment">// See if there is a #line directive before this.  If so, get it.</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>           LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second)) {</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>       <span class="comment">// If the LineEntry indicates a filename, use it.</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>       <span class="keywordflow">if</span> (Entry->FilenameID != -1)</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>         Filename = LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7">getFilename</a>(Entry->FilenameID);</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> </div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>       <span class="comment">// Use the line number specified by the LineEntry.  This line number may</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>       <span class="comment">// be multiple lines down from the line entry.  Add the difference in</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>       <span class="comment">// physical line numbers from the query point and the line marker to the</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>       <span class="comment">// total.</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>       <span class="keywordtype">unsigned</span> MarkerLineNo = <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, Entry->FileOffset);</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>       LineNo = Entry->LineNo + (LineNo-MarkerLineNo-1);</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="comment">// Note that column numbers are not molested by line markers.</span></div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> </div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>       <span class="comment">// Handle virtual #include manipulation.</span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>       <span class="keywordflow">if</span> (Entry->IncludeOffset) {</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>         IncludeLoc = <a class="code" href="classclang_1_1SourceManager.html#ae1f1d6c242c1db7b224a7a6dd35cb82e" title="Return the source location corresponding to the first byte of the specified file.">getLocForStartOfFile</a>(LocInfo.first);</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>         IncludeLoc = IncludeLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Entry->IncludeOffset);</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>       }</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     }</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>   }</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> </div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>(Filename, LineNo, ColNo, IncludeLoc);</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> }</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="comment"></span></div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="comment">/// \brief Returns whether the PresumedLoc for a given SourceLocation is</span></div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="comment">/// in the main file.</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> <span class="comment">/// This computes the "presumed" location for a SourceLocation, then checks</span></div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> <span class="comment">/// whether it came from a file other than the main file. This is different</span></div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <span class="comment">/// from isWrittenInMainFile() because it takes line marker directives into</span></div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="comment">/// account.</span></div>
+<div class="line"><a name="l01563"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397"> 1563</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397" title="Returns whether the PresumedLoc for a given SourceLocation is in the main file.">SourceManager::isInMainFile</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="l01564"></a><span class="lineno"> 1564</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Presumed locations are always for expansion points.</span></div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>   std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   <span class="keywordflow">if</span> (Invalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> </div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>   <span class="comment">// Check if there is a line directive for this location.</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>   <span class="keywordflow">if</span> (FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>())</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>             LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second))</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>       <span class="keywordflow">if</span> (Entry->IncludeOffset)</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> </div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>   <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>();</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="comment"></span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment">/// \brief The size of the SLocEnty that \arg FID represents.</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db"> 1587</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">SourceManager::getFileIDSize</a>(<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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> </div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>   <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>   <span class="keywordtype">unsigned</span> NextOffset;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   <span class="keywordflow">if</span> ((ID > 0 && <span class="keywordtype">unsigned</span>(ID+1) == <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>()))</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>     NextOffset = <a class="code" href="classclang_1_1SourceManager.html#a8a50989d1a33eb3f72c9c28d399f1a42">getNextLocalOffset</a>();</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID+1 == -1)</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     NextOffset = MaxLoadedOffset;</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>     NextOffset = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FileID::get(ID+1)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>   <span class="keywordflow">return</span> NextOffset - Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() - 1;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</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> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> <span class="comment">// Other miscellaneous methods.</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> <span class="comment"></span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> <span class="comment">/// \brief Retrieve the inode for the given file entry, if possible.</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="comment">/// This routine involves a system call, and therefore should only be used</span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="comment">/// in non-performance-critical code.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a></div>
+<div class="line"><a name="l01614"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d"> 1614</a></span> <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(<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) {</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <span class="keywordflow">if</span> (!File)</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>     <span class="keywordflow">return</span> None;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> </div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>   llvm::sys::fs::UniqueID <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>   <span class="keywordflow">if</span> (llvm::sys::fs::getUniqueID(File-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>))</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="keywordflow">return</span> None;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> </div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> }</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> <span class="comment"></span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> <span class="comment">/// \brief Get the source location for the given file:line:col triplet.</span></div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> <span class="comment">/// If the source file is included multiple times, the source location will</span></div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> <span class="comment">/// be based upon an arbitrary inclusion.</span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a5573aab1578a194e43c7934e6902aeec"> 1629</a></span> <span class="comment"></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_1SourceManager.html#a5573aab1578a194e43c7934e6902aeec" title="Get the source location for the given file:line:col triplet.">SourceManager::translateFileLineCol</a>(<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> *SourceFile,</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>                                                   <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>,</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>                                                   <span class="keywordtype">unsigned</span> Col)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   assert(SourceFile && <span class="stringliteral">"Null source file!"</span>);</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   assert(Line && Col && <span class="stringliteral">"Line and column should start from 1!"</span>);</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</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> FirstFID = <a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028" title="Get the FileID for the given file.">translateFile</a>(SourceFile);</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7" title="Get the source location in FID for the given line:col. Returns null location if FID is not a file SLo...">translateLineCol</a>(FirstFID, Line, Col);</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> }</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="comment"></span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> <span class="comment">/// \brief Get the FileID for the given file.</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="comment">/// If the source file is included multiple times, the FileID will be the</span></div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="comment">/// first inclusion.</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028"> 1643</a></span> <span class="comment"></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> <a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028" title="Get the FileID for the given file.">SourceManager::translateFile</a>(<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> *SourceFile)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   assert(SourceFile && <span class="stringliteral">"Null source file!"</span>);</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   <span class="comment">// Find the first file ID that corresponds to the given file.</span></div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</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> FirstFID;</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>   <span class="comment">// First, check the main file ID, since it is common to look for a</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>   <span class="comment">// location in the main file.</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>   <a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> SourceFileUID;</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>   <a class="code" href="classllvm_1_1Optional.html">Optional<StringRef></a> SourceFileName;</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>   <span class="keywordflow">if</span> (!MainFileID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &MainSLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(MainFileID, &Invalid);</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>       <span class="keywordflow">return</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>();</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>     <span class="keywordflow">if</span> (MainSLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *MainContentCache</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>         = MainSLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>();</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>       <span class="keywordflow">if</span> (!MainContentCache) {</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>         <span class="comment">// Can't do anything</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MainContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>         FirstFID = MainFileID;</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>         <span class="comment">// Fall back: check whether we have the same base name and inode</span></div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>         <span class="comment">// as the main file.</span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</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> *MainFile = MainContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>;</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>         SourceFileName = llvm::sys::path::filename(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>         <span class="keywordflow">if</span> (*SourceFileName == llvm::sys::path::filename(MainFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>())) {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>           SourceFileUID = <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(SourceFile);</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>           <span class="keywordflow">if</span> (SourceFileUID) {</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>             <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> MainFileUID =</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>                     <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(MainFile)) {</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>               <span class="keywordflow">if</span> (*SourceFileUID == *MainFileUID) {</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>                 FirstFID = MainFileID;</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>                 SourceFile = MainFile;</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>               }</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>             }</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>           }</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>         }</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</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> </div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>     <span class="comment">// The location we're looking for isn't in the main file; look</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>     <span class="comment">// through all of the local source locations.</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>       <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#a06bd6d8f9ae3d855d407c226b5ddb8bb" title="Get a local SLocEntry. This is exposed for indexing.">getLocalSLocEntry</a>(I, &Invalid);</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>       <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>         <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>       </div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>       <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() && </div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>           SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>() &&</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>           SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>         FirstFID = FileID::get(I);</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>       }</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>     }</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>     <span class="comment">// If that still didn't help, try the modules.</span></div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>     <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a4e22302f7b387c9c3a887a2fafae236e" title="Get the number of loaded SLocEntries we have.">loaded_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(I);</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>         <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() && </div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>             SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>() &&</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>             SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>           FirstFID = FileID::get(-<span class="keywordtype">int</span>(I) - 2);</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>         }</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>       }</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>     }</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>   }</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> </div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>   <span class="comment">// If we haven't found what we want yet, try again, but this time stat()</span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   <span class="comment">// each of the files in case the files have changed since we originally </span></div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>   <span class="comment">// parsed the file.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>   <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>() &&</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>       (SourceFileName ||</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>        (SourceFileName = llvm::sys::path::filename(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()))) &&</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>       (SourceFileUID || (SourceFileUID = <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(SourceFile)))) {</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</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> IFileID;</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>       IFileID.ID = I;</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(IFileID, &Invalid);</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>       <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>         <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>       </div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>       <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) { </div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FileContentCache </div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>           = SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>();</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</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> *Entry =FileContentCache? FileContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> : 0;</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>         <span class="keywordflow">if</span> (Entry && </div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>             *SourceFileName == llvm::sys::path::filename(Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>())) {</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>           <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> EntryUID =</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>                   <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(Entry)) {</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>             <span class="keywordflow">if</span> (*SourceFileUID == *EntryUID) {</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>               FirstFID = FileID::get(I);</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>               SourceFile = Entry;</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>               <span class="keywordflow">break</span>;</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>           }</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>       }</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>     }      </div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>   }</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   </div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>   (void) SourceFile;</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>   <span class="keywordflow">return</span> FirstFID;</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> }</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> <span class="comment"></span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span> <span class="comment">/// \brief Get the source location in \arg FID for the given line:col.</span></div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> <span class="comment">/// Returns null location if \arg FID is not a file SLocEntry.</span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7"> 1757</a></span> <span class="comment"></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_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7" title="Get the source location in FID for the given line:col. Returns null location if FID is not a file SLo...">SourceManager::translateLineCol</a>(<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,</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>                                                <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>,</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>                                                <span class="keywordtype">unsigned</span> Col)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   <span class="comment">// Lines are used as a one-based index into a zero-based array. This assert</span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="comment">// checks for possible buffer underruns.</span></div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   assert(Line != 0 && <span class="stringliteral">"Passed a zero-based line"</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="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span> </div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>   <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> </div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     <span class="keywordflow">return</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>();</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>   <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> FileLoc = SourceLocation::getFileLoc(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>());</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>   <span class="keywordflow">if</span> (Line == 1 && Col == 1)</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>     <span class="keywordflow">return</span> FileLoc;</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> </div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>   <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Content</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>     = <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *<span class="keyword">></span>(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>());</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>   <span class="keywordflow">if</span> (!Content)</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>     <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> </div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>   <span class="comment">// If this is the first use of line information for this buffer, compute the</span></div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>   <span class="comment">// SourceLineCache for it on demand.</span></div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>   <span class="keywordflow">if</span> (Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> == 0) {</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>     <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>     <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(Diag, Content, ContentCacheAlloc, *<span class="keyword">this</span>, MyInvalid);</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>     <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       <span class="keywordflow">return</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>();</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   }</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> </div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>   <span class="keywordflow">if</span> (Line > Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>) {</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>     <span class="keywordtype">unsigned</span> Size = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>)->getBufferSize();</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>     <span class="keywordflow">if</span> (Size > 0)</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>       --Size;</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>     <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Size);</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>   }</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>   <span class="keyword">const</span> llvm::MemoryBuffer *Buffer = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>   <span class="keywordtype">unsigned</span> FilePos = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>[Line - 1];</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Buf = Buffer->getBufferStart() + FilePos;</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>   <span class="keywordtype">unsigned</span> BufLength = Buffer->getBufferSize() - FilePos;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>   <span class="keywordflow">if</span> (BufLength == 0)</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>     <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(FilePos);</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="keywordtype">unsigned</span> i = 0;</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span> </div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>   <span class="comment">// Check that the given column is valid.</span></div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>   <span class="keywordflow">while</span> (i < BufLength-1 && i < Col-1 && Buf[i] != <span class="charliteral">'\n'</span> && Buf[i] != <span class="charliteral">'\r'</span>)</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>     ++i;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>   <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(FilePos + i);</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> }</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <span class="comment"></span></div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> <span class="comment">/// \brief Compute a map of macro argument chunks to their expanded source</span></div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> <span class="comment">/// location. Chunks that are not part of a macro argument will map to an</span></div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> <span class="comment">/// invalid source location. e.g. if a file contains one macro argument at</span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> <span class="comment">/// offset 100 with length 10, this is how the map will be formed:</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> <span class="comment">///     0   -> SourceLocation()</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> <span class="comment">///     100 -> Expanded macro arg location</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span> <span class="comment">///     110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span> <span class="comment"></span><span class="keywordtype">void</span> SourceManager::computeMacroArgsCache(MacroArgsMap *&CachePtr,</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>   assert(!FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>());</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>   assert(!CachePtr);</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> </div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>   CachePtr = <span class="keyword">new</span> MacroArgsMap();</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>   MacroArgsMap &MacroArgsCache = *CachePtr;</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>   <span class="comment">// Initially no macro argument chunk is present.</span></div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>   MacroArgsCache.insert(std::make_pair(0, <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="l01832"></a><span class="lineno"> 1832</span> </div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>   <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>   <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     ++<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>     <span class="comment">// Stop if there are no more FileIDs to check.</span></div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>     <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>       <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(ID) >= <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>())</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID == -1) {</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>       <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>     <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = getSLocEntryByID(ID, &Invalid);</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>     <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>     <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</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> IncludeLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>       <span class="keywordflow">if</span> (IncludeLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(IncludeLoc, FID))</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>         <span class="keywordflow">return</span>; <span class="comment">// No more files/macros that may be "contained" in this file.</span></div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> </div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>       <span class="comment">// Skip the files/macros of the #include'd file, we only care about macros</span></div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>       <span class="comment">// that lexed macro arguments from our file.</span></div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>       <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().NumCreatedFIDs)</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>         ID += Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().NumCreatedFIDs - 1<span class="comment">/*because of next ++ID*/</span>;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>     }</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> </div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &ExpInfo = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>().<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>(), FID))</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>         <span class="keywordflow">return</span>; <span class="comment">// No more files/macros that may be "contained" in this file.</span></div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>     }</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> </div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>     <span class="keywordflow">if</span> (!ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>())</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       <span class="keywordflow">continue</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>     associateFileChunkWithMacroArgExp(MacroArgsCache, FID,</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>                                  ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>(),</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>                                  SourceLocation::getMacroLoc(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>()),</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>                                  <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">getFileIDSize</a>(FileID::get(ID)));</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>   }</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> }</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> </div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> <span class="keywordtype">void</span> SourceManager::associateFileChunkWithMacroArgExp(</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>                                          MacroArgsMap &MacroArgsCache,</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</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,</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</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> SpellLoc,</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</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> ExpansionLoc,</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>                                          <span class="keywordtype">unsigned</span> ExpansionLength)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>   <span class="keywordflow">if</span> (!SpellLoc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>     <span class="keywordtype">unsigned</span> SpellBeginOffs = SpellLoc.getOffset();</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>     <span class="keywordtype">unsigned</span> SpellEndOffs = SpellBeginOffs + ExpansionLength;</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">// The spelling range for this macro argument expansion can span multiple</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>     <span class="comment">// consecutive FileID entries. Go through each entry contained in the</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>     <span class="comment">// spelling range and if one is itself a macro argument expansion, recurse</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>     <span class="comment">// and associate the file chunk that it represents.</span></div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span> </div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</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> SpellFID; <span class="comment">// Current FileID in the spelling range.</span></div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>     <span class="keywordtype">unsigned</span> SpellRelativeOffs;</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     llvm::tie(SpellFID, SpellRelativeOffs) = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(SpellLoc);</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>     <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(SpellFID);</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>       <span class="keywordtype">unsigned</span> SpellFIDBeginOffs = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>       <span class="keywordtype">unsigned</span> SpellFIDSize = <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">getFileIDSize</a>(SpellFID);</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>       <span class="keywordtype">unsigned</span> SpellFIDEndOffs = SpellFIDBeginOffs + SpellFIDSize;</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Info = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>       <span class="keywordflow">if</span> (Info.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>         <span class="keywordtype">unsigned</span> CurrSpellLength;</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>         <span class="keywordflow">if</span> (SpellFIDEndOffs < SpellEndOffs)</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>           CurrSpellLength = SpellFIDSize - SpellRelativeOffs;</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>           CurrSpellLength = ExpansionLength;</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>         associateFileChunkWithMacroArgExp(MacroArgsCache, FID,</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>                       Info.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(SpellRelativeOffs),</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>                       ExpansionLoc, CurrSpellLength);</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>       }</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span> </div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>       <span class="keywordflow">if</span> (SpellFIDEndOffs >= SpellEndOffs)</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>         <span class="keywordflow">return</span>; <span class="comment">// we covered all FileID entries in the spelling range.</span></div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span> </div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>       <span class="comment">// Move to the next FileID entry in the spelling range.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>       <span class="keywordtype">unsigned</span> advance = SpellFIDSize - SpellRelativeOffs + 1;</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>       ExpansionLoc = ExpansionLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(advance);</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       ExpansionLength -= advance;</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>       ++SpellFID.ID;</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>       SpellRelativeOffs = 0;</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>   }</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span> </div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>   assert(SpellLoc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>   <span class="keywordtype">unsigned</span> BeginOffs;</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(SpellLoc, FID, &BeginOffs))</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span> </div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>   <span class="keywordtype">unsigned</span> EndOffs = BeginOffs + ExpansionLength;</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> </div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>   <span class="comment">// Add a new chunk for this macro argument. A previous macro argument chunk</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>   <span class="comment">// may have been lexed again, so e.g. if the map is</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>   <span class="comment">//     0   -> SourceLocation()</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>   <span class="comment">//     100 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   <span class="comment">//     110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>   <span class="comment">// and we found a new macro FileID that lexed from offet 105 with length 3,</span></div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>   <span class="comment">// the new map will be:</span></div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>   <span class="comment">//     0   -> SourceLocation()</span></div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>   <span class="comment">//     100 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>   <span class="comment">//     105 -> Expanded loc #2</span></div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>   <span class="comment">//     108 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>   <span class="comment">//     110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>   <span class="comment">// Since re-lexed macro chunks will always be the same size or less of</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>   <span class="comment">// previous chunks, we only need to find where the ending of the new macro</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>   <span class="comment">// chunk is mapped to and update the map with new begin/end mappings.</span></div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> </div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>   MacroArgsMap::iterator I = MacroArgsCache.upper_bound(EndOffs);</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>   --I;</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</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> EndOffsMappedLoc = I->second;</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>   MacroArgsCache[BeginOffs] = ExpansionLoc;</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>   MacroArgsCache[EndOffs] = EndOffsMappedLoc;</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> }</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span> <span class="comment"></span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> <span class="comment">/// \brief If \arg Loc points inside a function macro argument, the returned</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> <span class="comment">/// location will be the macro location in which the argument was expanded.</span></div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> <span class="comment">/// If a macro argument is used multiple times, the expanded location will</span></div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">/// be at the first expansion of the argument.</span></div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span> <span class="comment">/// e.g.</span></div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> <span class="comment">///   MY_MACRO(foo);</span></div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> <span class="comment">///             ^</span></div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> <span class="comment">/// Passing a file location pointing at 'foo', will yield a macro location</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> <span class="comment">/// where 'foo' was expanded into.</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span> <span class="comment"></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></div>
+<div class="line"><a name="l01969"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#adbef30eb1b9c876ee96772f16c8e1c50"> 1969</a></span> <a class="code" href="classclang_1_1SourceManager.html#adbef30eb1b9c876ee96772f16c8e1c50" title="If Loc points inside a function macro argument, the returned location will be the macro location in w...">SourceManager::getMacroArgExpandedLocation</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="l01970"></a><span class="lineno"> 1970</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() || !Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>())</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>     <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span> </div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</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;</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>   <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>   llvm::tie(FID, Offset) = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>   <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>   MacroArgsMap *&MacroArgsCache = MacroArgsCacheMap[FID];</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>   <span class="keywordflow">if</span> (!MacroArgsCache)</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>     computeMacroArgsCache(MacroArgsCache, FID);</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> </div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>   assert(!MacroArgsCache->empty());</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>   MacroArgsMap::iterator I = MacroArgsCache->upper_bound(Offset);</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>   --I;</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>   </div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   <span class="keywordtype">unsigned</span> MacroArgBeginOffs = I->first;</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</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> MacroArgExpandedLoc = I->second;</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>   <span class="keywordflow">if</span> (MacroArgExpandedLoc.<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="l01990"></a><span class="lineno"> 1990</span>     <span class="keywordflow">return</span> MacroArgExpandedLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Offset - MacroArgBeginOffs);</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span> </div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>   <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> }</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> </div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l01996"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242"> 1996</a></span> <a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242" title="Returns the "included/expanded in" decomposed location of the given FileID.">SourceManager::getDecomposedIncludedLoc</a>(<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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>   <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <span class="keywordflow">return</span> std::make_pair(<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>(), 0);</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>   <span class="comment">// Uses IncludedLocMap to retrieve/cache the decomposed loc.</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="keyword">typedef</span> std::pair<FileID, unsigned> DecompTy;</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>   <span class="keyword">typedef</span> llvm::DenseMap<FileID, DecompTy> <a class="code" href="ParentMap_8cpp.html#a9678f6646317beaaf39f5b01eba500a4">MapTy</a>;</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>   std::pair<MapTy::iterator, bool></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>     InsertOp = IncludedLocMap.insert(std::make_pair(FID, DecompTy()));</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>   DecompTy &DecompLoc = InsertOp.first->second;</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>   <span class="keywordflow">if</span> (!InsertOp.second)</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     <span class="keywordflow">return</span> DecompLoc; <span class="comment">// already in map.</span></div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> </div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</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> UpperLoc;</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>   <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>   <span class="keywordflow">if</span> (!Invalid) {</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>     <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>       UpperLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>       UpperLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>   }</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> </div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   <span class="keywordflow">if</span> (UpperLoc.<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="l02021"></a><span class="lineno"> 2021</span>     DecompLoc = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(UpperLoc);</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>   <span class="keywordflow">return</span> DecompLoc;</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> <span class="comment"></span></div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> <span class="comment">/// Given a decomposed source location, move it up the include/expansion stack</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> <span class="comment">/// to the parent source location.  If this is possible, return the decomposed</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> <span class="comment">/// version of the parent in Loc and return false.  If Loc is the top-level</span></div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> <span class="comment">/// entry, return true and don't modify it.</span></div>
+<div class="line"><a name="l02030"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5"> 2030</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(std::pair<FileID, unsigned> &Loc,</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>                                    <span class="keyword">const</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>) {</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>   std::pair<FileID, unsigned> UpperLoc = SM.<a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242" title="Returns the "included/expanded in" decomposed location of the given FileID.">getDecomposedIncludedLoc</a>(Loc.first);</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>   <span class="keywordflow">if</span> (UpperLoc.first.isInvalid())</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// We reached the top.</span></div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> </div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>   Loc = UpperLoc;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> }</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span> <span class="comment"></span></div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> <span class="comment">/// Return the cache entry for comparing the given file IDs</span></div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> <span class="comment">/// for isBeforeInTranslationUnit.</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="comment"></span><a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html" title="Holds the cache used by isBeforeInTranslationUnit.">InBeforeInTUCacheEntry</a> &SourceManager::getInBeforeInTUCache(<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> LFID,</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</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> RFID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>   <span class="comment">// This is a magic number for limiting the cache size.  It was experimentally</span></div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>   <span class="comment">// derived from a small Objective-C project (where the cache filled</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   <span class="comment">// out to ~250 items).  We can make it larger if necessary.</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>   <span class="keyword">enum</span> { MagicCacheSize = 300 };</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   IsBeforeInTUCacheKey Key(LFID, RFID);</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>   <span class="comment">// If the cache size isn't too large, do a lookup and if necessary default</span></div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>   <span class="comment">// construct an entry.  We can then return it to the caller for direct</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   <span class="comment">// use.  When they update the value, the cache will get automatically</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>   <span class="comment">// updated as well.</span></div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>   <span class="keywordflow">if</span> (IBTUCache.size() < MagicCacheSize)</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>     <span class="keywordflow">return</span> IBTUCache[Key];</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span> </div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>   <span class="comment">// Otherwise, do a lookup that will not construct a new value.</span></div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>   InBeforeInTUCache::iterator I = IBTUCache.find(Key);</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>   <span class="keywordflow">if</span> (I != IBTUCache.end())</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>     <span class="keywordflow">return</span> I->second;</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">// Fall back to the overflow value.</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>   <span class="keywordflow">return</span> IBTUCacheOverflow;</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"></span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> <span class="comment">/// \brief Determines the order of 2 source locations in the translation unit.</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> <span class="comment">/// \returns true if LHS source location comes before RHS, false otherwise.</span></div>
+<div class="line"><a name="l02069"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc"> 2069</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc" title="Determines the order of 2 source locations in the translation unit.">SourceManager::isBeforeInTranslationUnit</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="l02070"></a><span class="lineno"> 2070</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="l02071"></a><span class="lineno"> 2071</span>   assert(LHS.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && RHS.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && <span class="stringliteral">"Passed invalid source location!"</span>);</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>   <span class="keywordflow">if</span> (LHS == RHS)</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> </div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>   std::pair<FileID, unsigned> LOffs = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(LHS);</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>   std::pair<FileID, unsigned> ROffs = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(RHS);</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> </div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>   <span class="comment">// getDecomposedLoc may have failed to return a valid FileID because, e.g. it</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>   <span class="comment">// is a serialized one referring to a file that was removed after we loaded</span></div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="comment">// the PCH.</span></div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>   <span class="keywordflow">if</span> (LOffs.first.isInvalid() || ROffs.first.isInvalid())</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>     <span class="keywordflow">return</span> LOffs.first.isInvalid() && !ROffs.first.isInvalid();</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> </div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>   <span class="comment">// If the source locations are in the same file, just compare offsets.</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>   <span class="keywordflow">if</span> (LOffs.first == ROffs.first)</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     <span class="keywordflow">return</span> LOffs.second < ROffs.second;</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> </div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   <span class="comment">// If we are comparing a source location with multiple locations in the same</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>   <span class="comment">// file, we get a big win by caching the result.</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   <a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html" title="Holds the cache used by isBeforeInTranslationUnit.">InBeforeInTUCacheEntry</a> &IsBeforeInTUCache =</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>     getInBeforeInTUCache(LOffs.first, ROffs.first);</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> </div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>   <span class="comment">// If we are comparing a source location with multiple locations in the same</span></div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>   <span class="comment">// file, we get a big win by caching the result.</span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>   <span class="keywordflow">if</span> (IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a4e5a760c8f67ee13115afc15f3c33ca2" title="Return true if the currently cached values match up with the specified LHS/RHS query.">isCacheValid</a>(LOffs.first, ROffs.first))</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>     <span class="keywordflow">return</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abb6639284ed9159d7ebe2f2199cab3a0" title="If the cache is valid, compute the result given the specified offsets in the LHS/RHS FileID's...">getCachedResult</a>(LOffs.second, ROffs.second);</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> </div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>   <span class="comment">// Okay, we missed in the cache, start updating the cache for this query.</span></div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a36a96b7c47af4d17a06d0b779eed01f8" title="Set up a new query.">setQueryFIDs</a>(LOffs.first, ROffs.first,</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>                           <span class="comment">/*isLFIDBeforeRFID=*/</span>LOffs.first.ID < ROffs.first.ID);</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> </div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>   <span class="comment">// We need to find the common ancestor. The only way of doing this is to</span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>   <span class="comment">// build the complete include chain for one and then walking up the chain</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>   <span class="comment">// of the other looking for a match.</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>   <span class="comment">// We use a map from FileID to Offset to store the chain. Easier than writing</span></div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>   <span class="comment">// a custom set hash info that only depends on the first part of a pair.</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>   <span class="keyword">typedef</span> llvm::SmallDenseMap<FileID, unsigned, 16> LocSet;</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>   LocSet LChain;</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>     LChain.insert(LOffs);</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>     <span class="comment">// We catch the case where LOffs is in a file included by ROffs and</span></div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="comment">// quit early. The other way round unfortunately remains suboptimal.</span></div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>   } <span class="keywordflow">while</span> (LOffs.first != ROffs.first && !<a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(LOffs, *<span class="keyword">this</span>));</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>   LocSet::iterator I;</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>   <span class="keywordflow">while</span>((I = LChain.find(ROffs.first)) == LChain.end()) {</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>     <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(ROffs, *<span class="keyword">this</span>))</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>       <span class="keywordflow">break</span>; <span class="comment">// Met at topmost file.</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>   }</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>   <span class="keywordflow">if</span> (I != LChain.end())</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>     LOffs = *I;</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span> </div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>   <span class="comment">// If we exited because we found a nearest common ancestor, compare the</span></div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>   <span class="comment">// locations within the common file and cache them.</span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>   <span class="keywordflow">if</span> (LOffs.first == ROffs.first) {</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>     IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a6d8ec5e46c8361388d6fb15022852a83">setCommonLoc</a>(LOffs.first, LOffs.second, ROffs.second);</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>     <span class="keywordflow">return</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abb6639284ed9159d7ebe2f2199cab3a0" title="If the cache is valid, compute the result given the specified offsets in the LHS/RHS FileID's...">getCachedResult</a>(LOffs.second, ROffs.second);</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> </div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>   <span class="comment">// This can happen if a location is in a built-ins buffer.</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>   <span class="comment">// But see PR5662.</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>   <span class="comment">// Clear the lookup cache, it depends on a common location.</span></div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>   IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abe9883ca0cbfc944dcfbe2791e23e531">clear</a>();</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>   <span class="keywordtype">bool</span> LIsBuiltins = strcmp(<span class="stringliteral">"<built-in>"</span>,</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>                             <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(LOffs.first)->getBufferIdentifier()) == 0;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>   <span class="keywordtype">bool</span> RIsBuiltins = strcmp(<span class="stringliteral">"<built-in>"</span>,</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>                             <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(ROffs.first)->getBufferIdentifier()) == 0;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>   <span class="comment">// built-in is before non-built-in</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   <span class="keywordflow">if</span> (LIsBuiltins != RIsBuiltins)</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>     <span class="keywordflow">return</span> LIsBuiltins;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   assert(LIsBuiltins && RIsBuiltins &&</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>          <span class="stringliteral">"Non-built-in locations must be rooted in the main file"</span>);</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <span class="comment">// Both are in built-in buffers, but from different files. We just claim that</span></div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>   <span class="comment">// lower IDs come first.</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>   <span class="keywordflow">return</span> LOffs.first < ROffs.first;</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> }</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div>
+<div class="line"><a name="l02147"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a16451f8ed013f0e35301b40950074a56"> 2147</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a16451f8ed013f0e35301b40950074a56" title="Print statistics to stderr.">SourceManager::PrintStats</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>   llvm::errs() << <span class="stringliteral">"\n*** Source Manager Stats:\n"</span>;</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>   llvm::errs() << FileInfos.size() << <span class="stringliteral">" files mapped, "</span> << MemBufferInfos.size()</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>                << <span class="stringliteral">" mem buffers mapped.\n"</span>;</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>   llvm::errs() << LocalSLocEntryTable.size() << <span class="stringliteral">" local SLocEntry's allocated ("</span></div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>                << llvm::capacity_in_bytes(LocalSLocEntryTable)</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>                << <span class="stringliteral">" bytes of capacity), "</span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>                << NextLocalOffset << <span class="stringliteral">"B of Sloc address space used.\n"</span>;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>   llvm::errs() << LoadedSLocEntryTable.size()</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>                << <span class="stringliteral">" loaded SLocEntries allocated, "</span></div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>                << MaxLoadedOffset - CurrentLoadedOffset</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>                << <span class="stringliteral">"B of Sloc address space used.\n"</span>;</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>   </div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>   <span class="keywordtype">unsigned</span> NumLineNumsComputed = 0;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>   <span class="keywordtype">unsigned</span> NumFileBytesMapped = 0;</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1SourceManager.html#a332403dd0769544846b0fe7673b3a4c5">fileinfo_iterator</a> I = <a class="code" href="classclang_1_1SourceManager.html#aa8f4e80c390577cd148e99ae22d1d06c">fileinfo_begin</a>(), E = <a class="code" href="classclang_1_1SourceManager.html#aac5161c96defcbd56ee7ca4dd5a2c56f">fileinfo_end</a>(); I != E; ++I){</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>     NumLineNumsComputed += I->second->SourceLineCache != 0;</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>     NumFileBytesMapped  += I->second->getSizeBytesMapped();</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>   <span class="keywordtype">unsigned</span> NumMacroArgsComputed = MacroArgsCacheMap.size();</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> </div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>   llvm::errs() << NumFileBytesMapped << <span class="stringliteral">" bytes of files mapped, "</span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>                << NumLineNumsComputed << <span class="stringliteral">" files with line #'s computed, "</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>                << NumMacroArgsComputed << <span class="stringliteral">" files with macro args computed.\n"</span>;</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>   llvm::errs() << <span class="stringliteral">"FileID scans: "</span> << NumLinearScans << <span class="stringliteral">" linear, "</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>                << NumBinaryProbes << <span class="stringliteral">" binary.\n"</span>;</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> }</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> </div>
+<div class="line"><a name="l02175"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSLocEntrySource.html#aab51e6e582b1f04347e2b8276ea1e927"> 2175</a></span> <a class="code" href="classclang_1_1ExternalSLocEntrySource.html#aab51e6e582b1f04347e2b8276ea1e927">ExternalSLocEntrySource::~ExternalSLocEntrySource</a>() { }</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment"></span></div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> <span class="comment">/// Return the amount of memory used by memory buffers, breaking down</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> <span class="comment">/// by heap-backed versus mmap'ed memory.</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a4f3f9f3eae850e1f58923ceb708c0c60"> 2179</a></span> <span class="comment"></span><a class="code" href="structclang_1_1SourceManager_1_1MemoryBufferSizes.html">SourceManager::MemoryBufferSizes</a> <a class="code" href="classclang_1_1SourceManager.html#a4f3f9f3eae850e1f58923ceb708c0c60" title="Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...">SourceManager::getMemoryBufferSizes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>   <span class="keywordtype">size_t</span> malloc_bytes = 0;</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   <span class="keywordtype">size_t</span> mmap_bytes = 0;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>   </div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MemBufferInfos.size(); i != e; ++i)</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>     <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span> sized_mapped = MemBufferInfos[i]->getSizeBytesMapped())</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>       <span class="keywordflow">switch</span> (MemBufferInfos[i]->getMemoryBufferKind()) {</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>         <span class="keywordflow">case</span> llvm::MemoryBuffer::MemoryBuffer_MMap:</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>           mmap_bytes += sized_mapped;</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>         <span class="keywordflow">case</span> llvm::MemoryBuffer::MemoryBuffer_Malloc:</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>           malloc_bytes += sized_mapped;</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>           <span class="keywordflow">break</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>   </div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   <span class="keywordflow">return</span> <a class="code" href="structclang_1_1SourceManager_1_1MemoryBufferSizes.html">MemoryBufferSizes</a>(malloc_bytes, mmap_bytes);</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> </div>
+<div class="line"><a name="l02197"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a33363f160ce74156d81d75db5edb0223"> 2197</a></span> <span class="keywordtype">size_t</span> <a class="code" href="classclang_1_1SourceManager.html#a33363f160ce74156d81d75db5edb0223" title="Return the amount of memory used for various side tables and data structures in the SourceManager...">SourceManager::getDataStructureSizes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>   <span class="keywordtype">size_t</span> size = llvm::capacity_in_bytes(MemBufferInfos)</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>     + llvm::capacity_in_bytes(LocalSLocEntryTable)</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     + llvm::capacity_in_bytes(LoadedSLocEntryTable)</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>     + llvm::capacity_in_bytes(SLocEntryLoaded)</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     + llvm::capacity_in_bytes(FileInfos);</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   </div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>   <span class="keywordflow">if</span> (OverriddenFilesInfo)</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>     size += llvm::capacity_in_bytes(OverriddenFilesInfo->OverriddenFiles);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>   <span class="keywordflow">return</span> size;</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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/SourceManager_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,226 @@
+<!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: SourceManager.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_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li><li class="navelem"><a class="el" href="dir_d56b91025ffac0ac634c9045c122e791.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SourceManager.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManager_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/Basic/Release+Asserts/SourceManager.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceManager.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  SourceManager.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManagerInternals.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/Support/Capacity.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</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> /home/tstellar/llvm/include/llvm/Support/type_traits.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/include/llvm/Support/DataTypes.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/include/llvm/ADT/None.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/include/llvm/ADT/DenseMap.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/ADT/DenseMapInfo.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/PointerLikeTypeTraits.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/AlignOf.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/Support/Compiler.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/Config/llvm-config.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/Support/MathExtras.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/SwapByteOrder.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/include/llvm/ADT/IntrusiveRefCntPtr.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/include/llvm/ADT/OwningPtr.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/SmallVector.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/StringMap.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/include/llvm/ADT/StringRef.h:</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/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/include/llvm/Support/FileSystem.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/include/llvm/ADT/SmallString.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/include/llvm/ADT/Twine.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/Support/ErrorHandling.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/Support/TimeValue.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/system_error.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/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.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/ADT/ArrayRef.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/DenseSet.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/PointerIntPair.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/PointerUnion.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/MemoryBuffer.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/CBindingWrapping.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-c/Core.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/tools/clang/lib/Basic/../../include/clang/Basic/Diagnostic.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/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticIDs.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/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticCommonKinds.inc:</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/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.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/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.def:</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/tools/clang/lib/Basic/../../include/clang/Basic/SourceManagerInternals.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/Optional.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/STLExtras.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/ADT/StringSwitch.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/Capacity.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/Support/Path.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/include/llvm/Support/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 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>





More information about the llvm-commits mailing list