[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/CodeGenTBAA_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,400 @@
+<!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: CodeGenTBAA.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_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTBAA.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTBAA_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">//===--- CodeGenTypes.cpp - TBAA information for LLVM CodeGen -------------===//</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 is the code that manages TBAA information and defines the TBAA policy</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// for the optimizer to use. Relevant standards text includes:</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">//   C99 6.5p7</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//   C++ [basic.lval] (p10 in n3126, p15 in some earlier versions)</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CodeGenTBAA_8h.html">CodeGenTBAA.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Attr_8h.html">clang/AST/Attr.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="Mangle_8h.html">clang/AST/Mangle.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="RecordLayout_8h.html">clang/AST/RecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/SmallSet.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/IR/Constants.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/IR/LLVMContext.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/IR/Metadata.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/Type.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a1d09f67ffda863f87d84e7160fc82bdd">   32</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a1d09f67ffda863f87d84e7160fc82bdd">CodeGenTBAA::CodeGenTBAA</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx, llvm::LLVMContext& VMContext,</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGenOptions.html">CodeGenOptions</a> &CGO,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Features, <a class="code" href="classclang_1_1MangleContext.html">MangleContext</a> &MContext)</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   : <a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>(Ctx), CodeGenOpts(CGO), Features(Features), MContext(MContext),</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     MDHelper(VMContext), Root(0), Char(0) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a80dfa542b4ae0ac519f367c77f0dceab">   39</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a80dfa542b4ae0ac519f367c77f0dceab">CodeGenTBAA::~CodeGenTBAA</a>() {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> }</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> llvm::MDNode *CodeGenTBAA::getRoot() {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="comment">// Define the root of the tree. This identifies the tree, so that</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="comment">// if our LLVM IR is linked with LLVM IR from a different front-end</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="comment">// (or a different version of this front-end), their TBAA trees will</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="comment">// remain distinct, and the optimizer will treat them conservatively.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">if</span> (!Root)</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     Root = MDHelper.createTBAARoot(<span class="stringliteral">"Simple C/C++ TBAA"</span>);</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>   <span class="keywordflow">return</span> Root;</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> </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">// For both scalar TBAA and struct-path aware TBAA, the scalar type has the</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">// same format: name, parent node, and offset.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> llvm::MDNode *CodeGenTBAA::createTBAAScalarType(StringRef Name,</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>                                                 llvm::MDNode *Parent) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordflow">return</span> MDHelper.createTBAAScalarTypeNode(Name, Parent);</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> </div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> llvm::MDNode *CodeGenTBAA::getChar() {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="comment">// Define the root of the tree for user-accessible memory. C and C++</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="comment">// give special powers to char and certain similar types. However,</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="comment">// these special powers only cover user-accessible memory, and doesn't</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="comment">// include things like vtables.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">if</span> (!Char)</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     Char = createTBAAScalarType(<span class="stringliteral">"omnipotent char"</span>, getRoot());</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="keywordflow">return</span> Char;</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"><a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">   71</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">TypeHasMayAlias</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="comment">// Tagged types have declarations, and therefore may have attributes.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TagType.html">TagType</a> *TTy = dyn_cast<TagType>(QTy))</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="keywordflow">return</span> TTy->getDecl()->hasAttr<<a class="code" href="classclang_1_1MayAliasAttr.html">MayAliasAttr</a>>();</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>   <span class="comment">// Typedef types have declarations, and therefore may have attributes.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefType.html">TypedefType</a> *TTy = dyn_cast<TypedefType>(QTy)) {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keywordflow">if</span> (TTy->getDecl()->hasAttr<<a class="code" href="classclang_1_1MayAliasAttr.html">MayAliasAttr</a>>())</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="comment">// Also, their underlying types may have relevant attributes.</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keywordflow">return</span> <a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">TypeHasMayAlias</a>(TTy->desugar());</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> </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> }</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> llvm::MDNode *</div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">   88</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">CodeGenTBAA::getTBAAInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="comment">// At -O0 or relaxed aliasing, TBAA is not emitted for regular types.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordflow">if</span> (CodeGenOpts.OptimizationLevel == 0 || CodeGenOpts.RelaxedAliasing)</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</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>   <span class="comment">// If the type has the may_alias attribute (even on a typedef), it is</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="comment">// effectively in the general char alias class.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">if</span> (<a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">TypeHasMayAlias</a>(QTy))</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     <span class="keywordflow">return</span> getChar();</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(QTy).<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</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>   <span class="keywordflow">if</span> (llvm::MDNode *N = MetadataCache[Ty])</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     <span class="keywordflow">return</span> N;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="comment">// Handle builtin types.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a> *BTy = dyn_cast<BuiltinType>(Ty)) {</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">switch</span> (BTy->getKind()) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="comment">// Character types are special and can alias anything.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="comment">// In C++, this technically only includes "char" and "unsigned char",</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="comment">// and not "signed char". In C, it includes all three. For now,</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="comment">// the risk of exploiting this detail in C++ seems likely to outweigh</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="comment">// the benefit.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordflow">case</span> BuiltinType::Char_U:</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordflow">case</span> BuiltinType::Char_S:</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">case</span> BuiltinType::UChar:</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     <span class="keywordflow">case</span> BuiltinType::SChar:</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>       <span class="keywordflow">return</span> getChar();</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>     <span class="comment">// Unsigned types can alias their corresponding signed types.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">case</span> BuiltinType::UShort:</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#ac369991763a2aa6bf9a8a3ded653afd8">ShortTy</a>);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="keywordflow">case</span> BuiltinType::UInt:</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a873a1148a8ffe184f0e5bd27bf90c0dc">IntTy</a>);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="keywordflow">case</span> BuiltinType::ULong:</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a0ba7f01d5d975ce7f18b482b052f10fb">LongTy</a>);</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordflow">case</span> BuiltinType::ULongLong:</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#adca2e7646f51ee1e280cfad7b108bc60">LongLongTy</a>);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="keywordflow">case</span> BuiltinType::UInt128:</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a12c1d73a7d8d53d467364a3befc0163a">Int128Ty</a>);</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="comment">// Treat all other builtin types as distinct types. This includes</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="comment">// treating wchar_t, char16_t, and char32_t as distinct from their</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="comment">// "underlying types".</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">return</span> MetadataCache[Ty] =</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         createTBAAScalarType(BTy->getName(Features), getChar());</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>   }</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="comment">// Handle pointers.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="comment">// TODO: Implement C++'s type "similarity" and consider dis-"similar"</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="comment">// pointers distinct.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   <span class="keywordflow">if</span> (Ty->isPointerType())</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">return</span> MetadataCache[Ty] = createTBAAScalarType(<span class="stringliteral">"any pointer"</span>,</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>                                                     getChar());</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>   <span class="comment">// Enum types are distinct types. In C++ they have "underlying types",</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="comment">// however they aren't related for TBAA.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1EnumType.html">EnumType</a> *ETy = dyn_cast<EnumType>(Ty)) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="comment">// In C++ mode, types have linkage, so we can rely on the ODR and</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="comment">// on their mangled names, if they're external.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="comment">// TODO: Is there a way to get a program-wide unique name for a</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="comment">// decl with local linkage or no linkage?</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span> (!Features.CPlusPlus || !ETy->getDecl()->isExternallyVisible())</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <span class="keywordflow">return</span> MetadataCache[Ty] = getChar();</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> OutName;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     llvm::raw_svector_ostream Out(OutName);</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     MContext.<a class="code" href="classclang_1_1MangleContext.html#a8dbd5ac3e3befe7eec6b87f3679d75a2">mangleTypeName</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(ETy, 0), Out);</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     Out.flush();</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keywordflow">return</span> MetadataCache[Ty] = createTBAAScalarType(OutName, getChar());</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="comment">// For now, handle any other kind of type conservatively.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="keywordflow">return</span> MetadataCache[Ty] = getChar();</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> }</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a8f82b5b9013374a4c2c270030fed8082">  166</a></span> llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a8f82b5b9013374a4c2c270030fed8082">CodeGenTBAA::getTBAAInfoForVTablePtr</a>() {</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">return</span> createTBAAScalarType(<span class="stringliteral">"vtable pointer"</span>, getRoot());</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> CodeGenTBAA::CollectFields(uint64_t BaseOffset,</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>                            <a class="code" href="classclang_1_1QualType.html">QualType</a> QTy,</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>                            <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::MDBuilder::TBAAStructField></a> &</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>                              Fields,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                            <span class="keywordtype">bool</span> MayAlias) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="comment">/* Things not handled yet include: C++ base classes, bitfields, */</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>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *TTy = QTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = TTy->getDecl()-><a class="code" href="classclang_1_1RecordDecl.html#ace12add36d1accb71a7d53bacad696af">getDefinition</a>();</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1RecordDecl.html#aaacf26482f17281507bd198e82ee7a7e">hasFlexibleArrayMember</a>())</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">return</span> <span class="keyword">false</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">  183</span>     <span class="comment">// TODO: Handle C++ base classes.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1Decl.html">Decl</a> = dyn_cast<CXXRecordDecl>(RD))</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html">Decl</a>->bases_begin() != <a class="code" href="classclang_1_1Decl.html">Decl</a>->bases_end())</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = Context.<a class="code" href="classclang_1_1ASTContext.html#a47d9de77f967abb78dd8d1b8228a0d2a" title="Get or compute information about the layout of the specified record (struct/union/class) D...">getASTRecordLayout</a>(RD);</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="keywordtype">unsigned</span> idx = 0;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>          e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); i != e; ++i, ++idx) {</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = BaseOffset +</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>                         Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a5469e46f4a69644ac8747cef95095f3a">getFieldOffset</a>(idx) / Context.<a class="code" href="classclang_1_1ASTContext.html#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>();</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldQTy = i->getType();</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">if</span> (!CollectFields(Offset, FieldQTy, Fields,</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                          MayAlias || <a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">TypeHasMayAlias</a>(FieldQTy)))</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     }</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   }</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="comment">/* Otherwise, treat whatever it is as a field. */</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   uint64_t Offset = BaseOffset;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   uint64_t Size = Context.<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(QTy).<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>();</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   llvm::MDNode *TBAAInfo = MayAlias ? getChar() : <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(QTy);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   llvm::MDNode *TBAATag = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#abc2337c0d2717dbc19ee07190c983f71" title="Get the scalar tag MDNode for a given scalar type.">getTBAAScalarTagInfo</a>(TBAAInfo);</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   Fields.push_back(llvm::MDBuilder::TBAAStructField(Offset, Size, TBAATag));</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> }</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> llvm::MDNode *</div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ab822d180f4184e9525e7970c8649d7ed">  213</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ab822d180f4184e9525e7970c8649d7ed">CodeGenTBAA::getTBAAStructInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy) {</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(QTy).<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">if</span> (llvm::MDNode *N = StructMetadataCache[Ty])</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     <span class="keywordflow">return</span> N;</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>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::MDBuilder::TBAAStructField, 4></a> Fields;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordflow">if</span> (CollectFields(0, QTy, Fields, <a class="code" href="CodeGenTBAA_8cpp.html#a19a409323090e6b1bfff9cb7491bc300">TypeHasMayAlias</a>(QTy)))</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     <span class="keywordflow">return</span> MDHelper.createTBAAStructNode(Fields);</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">// For now, handle any other kind of type conservatively.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">return</span> StructMetadataCache[Ty] = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> }</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment"></span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">/// Check if the given type can be handled by path-aware TBAA.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="CodeGenTBAA_8cpp.html#acefb99e49f34c07b684cf2ecae7e33bf">  228</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CodeGenTBAA_8cpp.html#acefb99e49f34c07b684cf2ecae7e33bf" title="Check if the given type can be handled by path-aware TBAA.">isTBAAPathStruct</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy) {</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *TTy = QTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = TTy->getDecl()-><a class="code" href="classclang_1_1RecordDecl.html#ace12add36d1accb71a7d53bacad696af">getDefinition</a>();</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1RecordDecl.html#aaacf26482f17281507bd198e82ee7a7e">hasFlexibleArrayMember</a>())</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="comment">// RD can be struct, union, class, interface or enum.</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="comment">// For now, we only handle struct and class.</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1TagDecl.html#a14a0aad0b347c014f9520cd8e3388747">isStruct</a>() || RD-><a class="code" href="classclang_1_1TagDecl.html#a1464cb92234a2d9aea7441cbb5a07ac2">isClass</a>())</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   }</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="keywordflow">return</span> <span class="keyword">false</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">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> llvm::MDNode *</div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ad189481221d93f6ce2ac06a45bfa508f">  242</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ad189481221d93f6ce2ac06a45bfa508f" title="Get the MDNode in the type DAG for given struct type QType.">CodeGenTBAA::getTBAAStructTypeInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy) {</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(QTy).<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   assert(<a class="code" href="CodeGenTBAA_8cpp.html#acefb99e49f34c07b684cf2ecae7e33bf" title="Check if the given type can be handled by path-aware TBAA.">isTBAAPathStruct</a>(QTy));</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="keywordflow">if</span> (llvm::MDNode *N = StructTypeMetadataCache[Ty])</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordflow">return</span> N;</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *TTy = QTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = TTy->getDecl()-><a class="code" href="classclang_1_1RecordDecl.html#ace12add36d1accb71a7d53bacad696af">getDefinition</a>();</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = Context.<a class="code" href="classclang_1_1ASTContext.html#a47d9de77f967abb78dd8d1b8228a0d2a" title="Get or compute information about the layout of the specified record (struct/union/class) D...">getASTRecordLayout</a>(RD);</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector <std::pair<llvm::MDNode*, uint64_t></a>, 4> Fields;</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     <span class="keywordtype">unsigned</span> idx = 0;</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> i = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>          e = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); i != e; ++i, ++idx) {</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldQTy = i->getType();</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>       llvm::MDNode *FieldNode;</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="keywordflow">if</span> (<a class="code" href="CodeGenTBAA_8cpp.html#acefb99e49f34c07b684cf2ecae7e33bf" title="Check if the given type can be handled by path-aware TBAA.">isTBAAPathStruct</a>(FieldQTy))</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         FieldNode = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ad189481221d93f6ce2ac06a45bfa508f" title="Get the MDNode in the type DAG for given struct type QType.">getTBAAStructTypeInfo</a>(FieldQTy);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>         FieldNode = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(FieldQTy);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="keywordflow">if</span> (!FieldNode)</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         <span class="keywordflow">return</span> StructTypeMetadataCache[Ty] = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>       Fields.push_back(std::make_pair(</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>           FieldNode, Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a5469e46f4a69644ac8747cef95095f3a">getFieldOffset</a>(idx) / Context.<a class="code" href="classclang_1_1ASTContext.html#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>()));</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> OutName;</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     <span class="keywordflow">if</span> (Features.CPlusPlus) {</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>       <span class="comment">// Don't use the mangler for C code.</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       llvm::raw_svector_ostream Out(OutName);</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       MContext.<a class="code" href="classclang_1_1MangleContext.html#a8dbd5ac3e3befe7eec6b87f3679d75a2">mangleTypeName</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(Ty, 0), Out);</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       Out.flush();</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       OutName = RD-><a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>();</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">// Create the struct type node with a vector of pairs (offset, type).</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="keywordflow">return</span> StructTypeMetadataCache[Ty] =</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       MDHelper.createTBAAStructTypeNode(OutName, Fields);</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> </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordflow">return</span> StructMetadataCache[Ty] = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</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">/// Return a TBAA tag node for both scalar TBAA and struct-path aware TBAA.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment"></span>llvm::MDNode *</div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a0bf6389ad1286b88263371816bf9536c">  288</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a0bf6389ad1286b88263371816bf9536c" title="Return a TBAA tag node for both scalar TBAA and struct-path aware TBAA.">CodeGenTBAA::getTBAAStructTagInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> BaseQTy, llvm::MDNode *AccessNode,</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>                                   uint64_t Offset) {</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="keywordflow">if</span> (!AccessNode)</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</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="keywordflow">if</span> (!CodeGenOpts.StructPathTBAA)</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#abc2337c0d2717dbc19ee07190c983f71" title="Get the scalar tag MDNode for a given scalar type.">getTBAAScalarTagInfo</a>(AccessNode);</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *BTy = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(BaseQTy).<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">TBAAPathTag</a> PathTag = <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">TBAAPathTag</a>(BTy, AccessNode, Offset);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="keywordflow">if</span> (llvm::MDNode *N = StructTagMetadataCache[PathTag])</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <span class="keywordflow">return</span> N;</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   llvm::MDNode *BNode = 0;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordflow">if</span> (<a class="code" href="CodeGenTBAA_8cpp.html#acefb99e49f34c07b684cf2ecae7e33bf" title="Check if the given type can be handled by path-aware TBAA.">isTBAAPathStruct</a>(BaseQTy))</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     BNode  = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ad189481221d93f6ce2ac06a45bfa508f" title="Get the MDNode in the type DAG for given struct type QType.">getTBAAStructTypeInfo</a>(BaseQTy);</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">if</span> (!BNode)</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">return</span> StructTagMetadataCache[PathTag] =</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>        MDHelper.createTBAAStructTagNode(AccessNode, AccessNode, 0);</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="keywordflow">return</span> StructTagMetadataCache[PathTag] =</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     MDHelper.createTBAAStructTagNode(BNode, AccessNode, Offset);</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> }</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> llvm::MDNode *</div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#abc2337c0d2717dbc19ee07190c983f71">  313</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#abc2337c0d2717dbc19ee07190c983f71" title="Get the scalar tag MDNode for a given scalar type.">CodeGenTBAA::getTBAAScalarTagInfo</a>(llvm::MDNode *AccessNode) {</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordflow">if</span> (!AccessNode)</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="keywordflow">if</span> (llvm::MDNode *N = ScalarTagMetadataCache[AccessNode])</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">return</span> N;</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordflow">return</span> ScalarTagMetadataCache[AccessNode] =</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     MDHelper.createTBAAStructTagNode(AccessNode, AccessNode, 0);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:28 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/CodeGenTBAA_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,492 @@
+<!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: CodeGenTBAA.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_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li><li class="navelem"><a class="el" href="dir_e8103833ce80ba077e945e011f96d4ad.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTBAA.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTBAA_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/CodeGen/Release+Asserts/CodeGenTBAA.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CodeGenTBAA.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CodeGenTBAA.cpp CodeGenTBAA.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/IR/MDBuilder.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.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/IR/Constant.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/IR/Use.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</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>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.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> CodeGenTBAA.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/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.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/Casting.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/type_traits.h:</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> /home/tstellar/llvm/include/llvm/IR/MDBuilder.h:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> /home/tstellar/llvm/include/llvm/IR/Constants.h:</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> /home/tstellar/llvm/include/llvm/IR/Constant.h:</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> /home/tstellar/llvm/include/llvm/IR/User.h:</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h:</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> /home/tstellar/llvm/include/llvm/IR/Use.h:</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</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> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> /home/tstellar/llvm/include/llvm/IR/OperandTraits.h:</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> /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> /home/tstellar/llvm/include/llvm/IR/Type.h:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</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> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> /home/tstellar/llvm/include/llvm/ADT/ilist_node.h:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</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> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> </div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> </div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> </div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</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> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</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> /home/tstellar/llvm/include/llvm/Support/system_error.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> </div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> </div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</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> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> </div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> </div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h:</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h:</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h:</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> </div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h:</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def:</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> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> /home/tstellar/llvm/include/llvm/IR/LLVMContext.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:28 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/CodeGenTBAA_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTBAA_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,239 @@
+<!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: CodeGenTBAA.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_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTBAA.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTBAA_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">//===--- CodeGenTBAA.h - TBAA information for LLVM CodeGen ------*- 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 is the code that manages TBAA information and defines the TBAA policy</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// for the optimizer to use.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#ifndef CLANG_CODEGEN_CODEGENTBAA_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_CODEGEN_CODEGENTBAA_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/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/IR/MDBuilder.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>   <span class="keyword">class </span>LLVMContext;</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keyword">class </span>MDNode;</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> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">class </span>ASTContext;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">class </span>CodeGenOptions;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">class </span>LangOptions;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">class </span>MangleContext;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keyword">class </span>QualType;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keyword">class </span>Type;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">class </span>CGRecordLayout;</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="structclang_1_1CodeGen_1_1TBAAPathTag.html">   38</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">TBAAPathTag</a> {</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a4d4c36732412262ad28be26602bd76ae">   39</a></span>     <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a4d4c36732412262ad28be26602bd76ae">TBAAPathTag</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *B, <span class="keyword">const</span> llvm::MDNode *A, uint64_t O)</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>       : <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">BaseT</a>(B), <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">AccessN</a>(A), <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">Offset</a>(O) {}</div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">   41</a></span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">BaseT</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">   42</a></span>     <span class="keyword">const</span> llvm::MDNode *<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">AccessN</a>;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">   43</a></span>     uint64_t <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">Offset</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   };</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/// CodeGenTBAA - This class organizes the cross-module state that is used</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">/// while lowering AST types to LLVM types.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html">   48</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html">CodeGenTBAA</a> {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGenOptions.html">CodeGenOptions</a> &CodeGenOpts;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Features;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <a class="code" href="classclang_1_1MangleContext.html">MangleContext</a> &MContext;</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>   <span class="comment">// MDHelper - Helper for creating metadata.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   llvm::MDBuilder MDHelper;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment"></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">  /// MetadataCache - This maps clang::Types to scalar llvm::MDNodes describing</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">  /// them.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment"></span>  llvm::DenseMap<const Type *, llvm::MDNode *> MetadataCache;<span class="comment"></span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">  /// This maps clang::Types to a struct node in the type DAG.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"></span>  llvm::DenseMap<const Type *, llvm::MDNode *> StructTypeMetadataCache;<span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">  /// This maps TBAAPathTags to a tag node.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span>  llvm::DenseMap<TBAAPathTag, llvm::MDNode *> StructTagMetadataCache;<span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">  /// This maps a scalar type to a scalar tag node.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment"></span>  llvm::DenseMap<const llvm::MDNode *, llvm::MDNode *> ScalarTagMetadataCache;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">  /// StructMetadataCache - This maps clang::Types to llvm::MDNodes describing</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">  /// them for struct assignments.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment"></span>  llvm::DenseMap<const Type *, llvm::MDNode *> StructMetadataCache;</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>   llvm::MDNode *Root;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   llvm::MDNode *Char;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// getRoot - This is the mdnode for the root of the metadata type graph</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// for this translation unit.</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment"></span>  llvm::MDNode *getRoot();</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// getChar - This is the mdnode for "char", which is special, and any types</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  /// considered to be equivalent to it.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment"></span>  llvm::MDNode *getChar();</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// CollectFields - Collect information about the fields of a type for</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  /// !tbaa.struct metadata formation. Return false for an unsupported type.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment"></span>  <span class="keywordtype">bool</span> CollectFields(uint64_t BaseOffset,</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>                      <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>                      <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::MDBuilder::TBAAStructField></a> &Fields,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                      <span class="keywordtype">bool</span> MayAlias);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment"></span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">  /// A wrapper function to create a scalar type. For struct-path aware TBAA,</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">  /// the scalar type has the same format as the struct type: name, offset,</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// pointer to another node in the type DAG.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment"></span>  llvm::MDNode *createTBAAScalarType(StringRef Name, llvm::MDNode *Parent);</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> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a1d09f67ffda863f87d84e7160fc82bdd">CodeGenTBAA</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx, llvm::LLVMContext &VMContext,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>               <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGenOptions.html">CodeGenOptions</a> &CGO,</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>               <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Features,</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>               <a class="code" href="classclang_1_1MangleContext.html">MangleContext</a> &MContext);</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a80dfa542b4ae0ac519f367c77f0dceab">~CodeGenTBAA</a>();</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  /// getTBAAInfo - Get the TBAA MDNode to be used for a dereference</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// of the given type.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a2234363be9e9ff7292da575555b1d009">getTBAAInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// getTBAAInfoForVTablePtr - Get the TBAA MDNode to be used for a</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// dereference of a vtable pointer.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a8f82b5b9013374a4c2c270030fed8082">getTBAAInfoForVTablePtr</a>();</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// getTBAAStructInfo - Get the TBAAStruct MDNode to be used for a memcpy of</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">  /// the given type.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ab822d180f4184e9525e7970c8649d7ed">getTBAAStructInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QTy);</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// Get the MDNode in the type DAG for given struct type QType.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#ad189481221d93f6ce2ac06a45bfa508f" title="Get the MDNode in the type DAG for given struct type QType.">getTBAAStructTypeInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> QType);<span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">  /// Get the tag MDNode for a given base type, the actual scalar access MDNode</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// and offset into the base type.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#a0bf6389ad1286b88263371816bf9536c" title="Return a TBAA tag node for both scalar TBAA and struct-path aware TBAA.">getTBAAStructTagInfo</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> BaseQType,</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                                      llvm::MDNode *AccessNode, uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// Get the scalar tag MDNode for a given scalar type.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment"></span>  llvm::MDNode *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTBAA.html#abc2337c0d2717dbc19ee07190c983f71" title="Get the scalar tag MDNode for a given scalar type.">getTBAAScalarTagInfo</a>(llvm::MDNode *AccessNode);</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> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> }  <span class="comment">// end namespace CodeGen</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> }  <span class="comment">// end namespace clang</span></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> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html">  129</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo</a><clang::CodeGen::TBAAPathTag> {</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#a9f750fb300a7d4e88e16ee6090a0cbe6">  130</a></span>   <span class="keyword">static</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#a9f750fb300a7d4e88e16ee6090a0cbe6">getEmptyKey</a>() {</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a>(</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const clang::Type *>::getEmptyKey</a>(),</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const MDNode *>::getEmptyKey</a>(),</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<uint64_t>::getEmptyKey</a>());</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> </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#aada95262e9e9659682d153f3ab47aa74">  137</a></span>   <span class="keyword">static</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#aada95262e9e9659682d153f3ab47aa74">getTombstoneKey</a>() {</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a>(</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const clang::Type *>::getTombstoneKey</a>(),</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const MDNode *>::getTombstoneKey</a>(),</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<uint64_t>::getTombstoneKey</a>());</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> </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#a005e9242afb87553b98f60410bbe76d7">  144</a></span>   <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#a005e9242afb87553b98f60410bbe76d7">getHashValue</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a> &Val) {</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const clang::Type *>::getHashValue</a>(Val.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">BaseT</a>) ^</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>            <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<const MDNode *>::getHashValue</a>(Val.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">AccessN</a>) ^</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>            <a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo<uint64_t>::getHashValue</a>(Val.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">Offset</a>);</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   }</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1CodeGen_1_1TBAAPathTag_01_4.html#aa3c822428faea2df1ff0d3b865543eaa">  150</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> isEqual(<span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a> &LHS,</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>                       <span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html">clang::CodeGen::TBAAPathTag</a> &RHS) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">BaseT</a> == RHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#ab0ddd40cb3d2c3e36f3e91d8cfacdf50">BaseT</a> &&</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>            LHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">AccessN</a> == RHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#afa1ef8553a175beec5f2d851637f14f6">AccessN</a> &&</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>            LHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">Offset</a> == RHS.<a class="code" href="structclang_1_1CodeGen_1_1TBAAPathTag.html#a2c53064b3ca8c5ad5a601013d6085a2f">Offset</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> };</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> }  <span class="comment">// end namespace llvm</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:28 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/CodeGenTypes_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,810 @@
+<!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: CodeGenTypes.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_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTypes.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTypes_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">//===--- CodeGenTypes.cpp - Type translation for LLVM CodeGen -------------===//</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 is the code that handles AST -> LLVM type lowering.</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="CodeGenTypes_8h.html">CodeGenTypes.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGCall_8h.html">CGCall.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CGOpenCLRuntime_8h.html">CGOpenCLRuntime.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CGRecordLayout_8h.html">CGRecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="lib_2CodeGen_2TargetInfo_8h.html">TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="RecordLayout_8h.html">clang/AST/RecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/IR/DataLayout.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/IR/DerivedTypes.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/Module.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a028e8d017ebdc1ba1a8df8f097907c99">   32</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a028e8d017ebdc1ba1a8df8f097907c99">CodeGenTypes::CodeGenTypes</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &cgm)</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   : CGM(cgm), <a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>(cgm.getContext()), TheModule(cgm.getModule()),</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     TheDataLayout(cgm.getDataLayout()),</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     Target(cgm.getTarget()), TheCXXABI(cgm.getCXXABI()),</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>     TheABIInfo(cgm.getTargetCodeGenInfo().getABIInfo()) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   SkippedLayout = <span class="keyword">false</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">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#affb24902d2ea7329018c69da8ac2d60f">   40</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#affb24902d2ea7329018c69da8ac2d60f">CodeGenTypes::~CodeGenTypes</a>() {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">for</span> (llvm::DenseMap<const Type *, CGRecordLayout *>::iterator</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>          I = CGRecordLayouts.begin(), E = CGRecordLayouts.end();</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>       I != E; ++I)</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keyword">delete</span> I->second;</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>   <a class="code" href="namespaceclang.html#a355ba9af5ac2c9c6089bd5e5754f406a">for</a> (llvm::FoldingSet<CGFunctionInfo>::iterator</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>        I = FunctionInfos.begin(), E = FunctionInfos.end(); I != E; )</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keyword">delete</span> &*I++;</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> </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae29d61a5c3ea569bf9ab242304c731e2">   51</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae29d61a5c3ea569bf9ab242304c731e2">CodeGenTypes::addRecordTypeName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD,</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>                                      llvm::StructType *Ty,</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                                      StringRef suffix) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> TypeName;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   llvm::raw_svector_ostream OS(TypeName);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   OS << RD-><a class="code" href="classclang_1_1TagDecl.html#a2da55b637d31c004ef3e673a8bd39b60">getKindName</a>() << <span class="charliteral">'.'</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   </div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">// Name the codegen type after the typedef name</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// if there is no tag type name available</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()) {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="comment">// FIXME: We should not have to check for a null decl context here.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="comment">// Right now we do it because the implicit Obj-C decls don't have one.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>())</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       RD-><a class="code" href="classclang_1_1NamedDecl.html#a5ed2658f1cbf3c115b1eef667aab45da">printQualifiedName</a>(OS);</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>       RD-><a class="code" href="classclang_1_1NamedDecl.html#a88c1844adc67035bbf9192732a8221fd">printName</a>(OS);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> *TDD = RD-><a class="code" href="classclang_1_1TagDecl.html#a52132644e689627f869ec01064fe69b6">getTypedefNameForAnonDecl</a>()) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="comment">// FIXME: We should not have to check for a null decl context here.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="comment">// Right now we do it because the implicit Obj-C decls don't have one.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (TDD->getDeclContext())</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       TDD->printQualifiedName(OS);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       TDD->printName(OS);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     OS << <span class="stringliteral">"anon"</span>;</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordflow">if</span> (!suffix.empty())</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     OS << suffix;</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>   Ty->setName(OS.str());</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> <span class="comment"></span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">/// ConvertTypeForMem - Convert type T into a llvm::Type.  This differs from</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">/// ConvertType in that it is used to convert to the memory representation for</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">/// a type.  For example, the scalar representation for _Bool is i1, but the</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">/// memory representation is usually i8 or i32, depending on the target.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">   87</a></span> <span class="comment"></span>llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">CodeGenTypes::ConvertTypeForMem</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T){</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   llvm::Type *R = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(T);</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>   <span class="comment">// If this is a non-bool type, don't map it.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <span class="keywordflow">if</span> (!R->isIntegerTy(1))</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">return</span> R;</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>   <span class="comment">// Otherwise, return an integer of the target-specified size.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">return</span> llvm::IntegerType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                                 (<span class="keywordtype">unsigned</span>)Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(T));</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> }</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">/// isRecordLayoutComplete - Return true if the specified type is already</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">/// completely laid out.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae942a58a407e3de713afdc13d0a9f882">  102</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae942a58a407e3de713afdc13d0a9f882">CodeGenTypes::isRecordLayoutComplete</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   llvm::DenseMap<const Type*, llvm::StructType *>::const_iterator I = </div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   RecordDeclTypes.find(Ty);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordflow">return</span> I != RecordDeclTypes.end() && !I->second->isOpaque();</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> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                 llvm::SmallPtrSet<const RecordDecl*, 16> &AlreadyChecked);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">/// isSafeToConvert - Return true if it is safe to convert the specified record</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">/// decl to IR and lay it out, false if doing so would cause us to get into a</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">/// recursive compilation mess.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="code" href="CodeGenTypes_8cpp.html#a503dccfa2777c957ced27929c51190aa">  117</a></span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                 llvm::SmallPtrSet<const RecordDecl*, 16> &AlreadyChecked) {</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="comment">// If we have already checked this type (maybe the same type is used by-value</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="comment">// multiple times in multiple structure fields, don't check again.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">if</span> (!AlreadyChecked.insert(RD)) <span class="keywordflow">return</span> <span class="keyword">true</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">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Key = CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a92752b8dd75428a63b2e787642db884a" title="Return the unique reference to the type for the specified TagDecl (struct/union/class/enum) decl...">getTagDeclType</a>(RD).<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>();</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>   <span class="comment">// If this type is already laid out, converting it is a noop.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="keywordflow">if</span> (CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae942a58a407e3de713afdc13d0a9f882">isRecordLayoutComplete</a>(Key)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   </div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="comment">// If this type is currently being laid out, we can't recursively compile it.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">if</span> (CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ac1db6d81b9cb2ad17292303076938151">isRecordBeingLaidOut</a>(Key))</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// If this type would require laying out bases that are currently being laid</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="comment">// out, don't do it.  This includes virtual base classes which get laid out</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="comment">// when a class is translated, even though they aren't embedded by-value into</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="comment">// the class.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *CRD = dyn_cast<CXXRecordDecl>(RD)) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> I = CRD->bases_begin(),</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>          E = CRD->bases_end(); I != E; ++I)</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <span class="keywordflow">if</span> (!<a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(I->getType()->getAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl(),</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                            CGT, AlreadyChecked))</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>   </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="comment">// If this type would require laying out members that are currently being laid</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="comment">// out, don't do it.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> I = RD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>        E = RD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span> (!<a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(I->getType(), CGT, AlreadyChecked))</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       <span class="keywordflow">return</span> <span class="keyword">false</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 there are no problems, lets do it.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment"></span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">/// isSafeToConvert - Return true if it is safe to convert this field type,</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">/// which requires the structure elements contained by-value to all be</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">/// recursively safe to convert.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">  159</a></span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT,</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                 llvm::SmallPtrSet<const RecordDecl*, 16> &AlreadyChecked) {</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   T = T.<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>();</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="comment">// If this is a record, check it.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = dyn_cast<RecordType>(T))</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">return</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(RT->getDecl(), CGT, AlreadyChecked);</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">// If this is an array, check the elements, which are embedded inline.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *AT = dyn_cast<ArrayType>(T))</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">return</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(AT->getElementType(), CGT, AlreadyChecked);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// Otherwise, there is no concern about transforming this.  We only care about</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">// things that are contained by-value in a structure that can have another </span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">// structure as a member.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> }</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment"></span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">/// isSafeToConvert - Return true if it is safe to convert the specified record</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">/// decl to IR and lay it out, false if doing so would cause us to get into a</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">/// recursive compilation mess.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"><a class="code" href="CodeGenTypes_8cpp.html#a5b7de7f50ade172484e39e6a18722860">  181</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &CGT) {</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="comment">// If no structs are being laid out, we can certainly do this one.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">if</span> (CGT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aba9a9d38ae5d1b0d38e003db6793fa0d">noRecordsBeingLaidOut</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   llvm::SmallPtrSet<const RecordDecl*, 16> AlreadyChecked;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <span class="keywordflow">return</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(RD, CGT, AlreadyChecked);</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> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment"></span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">/// isFuncTypeArgumentConvertible - Return true if the specified type in a </span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">/// function argument or result position can be converted to an IR type at this</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">/// point.  This boils down to being whether it is complete, as well as whether</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">/// we've temporarily deferred expanding the type because we're in a recursive</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">/// context.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3334030437e401948b77913ebe2f557a">  195</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3334030437e401948b77913ebe2f557a">CodeGenTypes::isFuncTypeArgumentConvertible</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="comment">// If this isn't a tagged type, we can convert it!</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TagType.html">TagType</a> *TT = Ty-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1TagType.html">TagType</a>>();</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">if</span> (TT == 0) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">// Incomplete types cannot be converted.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordflow">if</span> (TT-><a class="code" href="classclang_1_1Type.html#a6d84e779575f1e510f7ddc98119662bd" title="Def If non-NULL, and the type refers to some kind of declaration that can be completed (such as a C s...">isIncompleteType</a>())</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="comment">// If this is an enum, then it is always safe to convert.</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = dyn_cast<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>(TT);</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">if</span> (RT == 0) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="comment">// Otherwise, we have to be careful.  If it is a struct that we're in the</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="comment">// process of expanding, then we can't convert the function type.  That's ok</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="comment">// though because we must be in a pointer context under the struct, so we can</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="comment">// just convert it to a dummy type.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="comment">// We decide this by checking whether ConvertRecordDeclType returns us an</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="comment">// opaque type for a struct that we know is defined.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordflow">return</span> <a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>(), *<span class="keyword">this</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> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment"></span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">/// Code to verify a given function type is complete, i.e. the return type</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">/// and all of the argument types are complete.  Also check to see if we are in</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">/// a RS_StructPointer context, and if so whether any struct types have been</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">/// pended.  If so, we don't want to ask the ABI lowering code to handle a type</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">/// that cannot be converted to an IR type.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">  224</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">CodeGenTypes::isFuncTypeConvertible</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *FT) {</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3334030437e401948b77913ebe2f557a">isFuncTypeArgumentConvertible</a>(FT-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>()))</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = dyn_cast<FunctionProtoType>(FT))</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = FPT->getNumArgs(); i != e; i++)</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3334030437e401948b77913ebe2f557a">isFuncTypeArgumentConvertible</a>(FPT->getArgType(i)))</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordflow">return</span> <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> <span class="comment"></span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">/// UpdateCompletedType - When we find the full definition for a TagDecl,</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">/// replace the 'opaque' type we previously made for it if applicable.</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aab1cc9a7994aff2bfbc3a79f6d47a7c7">  238</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aab1cc9a7994aff2bfbc3a79f6d47a7c7">CodeGenTypes::UpdateCompletedType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TagDecl.html" title="TagDecl - Represents the declaration of a struct/union/class/enum.">TagDecl</a> *TD) {</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="comment">// If this is an enum being completed, then we flush all non-struct types from</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="comment">// the cache.  This allows function types and other things that may be derived</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="comment">// from the enum to be recomputed.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1EnumDecl.html">EnumDecl</a> *ED = dyn_cast<EnumDecl>(TD)) {</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="comment">// Only flush the cache if we've actually already converted this type.</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">if</span> (TypeCache.count(ED->getTypeForDecl())) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="comment">// Okay, we formed some types based on this.  We speculated that the enum</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>       <span class="comment">// would be lowered to i32, so we only need to flush the cache if this</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="comment">// didn't happen.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(ED->getIntegerType())->isIntegerTy(32))</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>         TypeCache.clear();</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     }</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   }</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="comment">// If we completed a RecordDecl that we previously used and converted to an</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="comment">// anonymous type, then go ahead and complete it now.</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD = cast<RecordDecl>(TD);</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1TagDecl.html#a5086412e1f9c59bb60163aa459b9e439" title="Whether this declaration declares a type that is dependent, i.e., a type that somehow depends on temp...">isDependentType</a>()) <span class="keywordflow">return</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">// Only complete it if we converted it already.  If we haven't converted it</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="comment">// yet, we'll just do it lazily.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span> (RecordDeclTypes.count(Context.<a class="code" href="classclang_1_1ASTContext.html#a92752b8dd75428a63b2e787642db884a" title="Return the unique reference to the type for the specified TagDecl (struct/union/class/enum) decl...">getTagDeclType</a>(RD).<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>()))</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(RD);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="comment">// If necessary, provide the full definition of a type only used with a</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="comment">// declaration so far.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a919ba4c672da9093f64b9bef0484302f">getModuleDebugInfo</a>())</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     DI->completeType(RD);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> }</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="CodeGenTypes_8cpp.html#a5ec6bf075c57d86bd81c26028ff12e97">  270</a></span> <span class="keyword">static</span> llvm::Type *<a class="code" href="CodeGenTypes_8cpp.html#a5ec6bf075c57d86bd81c26028ff12e97">getTypeForFormat</a>(llvm::LLVMContext &VMContext,</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>                                     <span class="keyword">const</span> llvm::fltSemantics &format,</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>                                     <span class="keywordtype">bool</span> UseNativeHalf = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::IEEEhalf) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="keywordflow">if</span> (UseNativeHalf)</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="keywordflow">return</span> llvm::Type::getHalfTy(VMContext);</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       <span class="keywordflow">return</span> llvm::Type::getInt16Ty(VMContext);</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   }</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::IEEEsingle)</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">return</span> llvm::Type::getFloatTy(VMContext);</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::IEEEdouble)</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">return</span> llvm::Type::getDoubleTy(VMContext);</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::IEEEquad)</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="keywordflow">return</span> llvm::Type::getFP128Ty(VMContext);</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::PPCDoubleDouble)</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="keywordflow">return</span> llvm::Type::getPPC_FP128Ty(VMContext);</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="keywordflow">if</span> (&format == &llvm::APFloat::x87DoubleExtended)</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="keywordflow">return</span> llvm::Type::getX86_FP80Ty(VMContext);</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   llvm_unreachable(<span class="stringliteral">"Unknown float format!"</span>);</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> }</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment"></span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="comment">/// ConvertType - Convert the specified type to its LLVM form.</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f">  293</a></span> <span class="comment"></span>llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">CodeGenTypes::ConvertType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   T = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(T);</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty = T.<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>();</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="comment">// RecordTypes are cached and processed specially.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = dyn_cast<RecordType>(Ty))</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(RT->getDecl());</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="comment">// See if type is already cached.</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   llvm::DenseMap<const Type *, llvm::Type *>::iterator TCI = TypeCache.find(Ty);</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="comment">// If type is found in map then use it. Otherwise, convert type T.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>   <span class="keywordflow">if</span> (TCI != TypeCache.end())</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="keywordflow">return</span> TCI->second;</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">// If we don't have it in the cache, convert it now.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   llvm::Type *ResultType = 0;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   switch (Ty-><a class="code" href="classclang_1_1Type.html#a34cea2e4e1895806fbbac92110b66db0">getTypeClass</a>()) {</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordflow">case</span> Type::Record: <span class="comment">// Handled above.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="preprocessor">#define TYPE(Class, Base)</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="preprocessor"></span><span class="preprocessor">#define ABSTRACT_TYPE(Class, Base)</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="preprocessor"></span><span class="preprocessor">#define NON_CANONICAL_TYPE(Class, Base) case Type::Class:</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> <span class="preprocessor"></span><span class="preprocessor">#define DEPENDENT_TYPE(Class, Base) case Type::Class:</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="preprocessor"></span><span class="preprocessor">#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class:</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeNodes.def"</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>     llvm_unreachable(<span class="stringliteral">"Non-canonical or dependent types aren't possible."</span>);</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keywordflow">case</span> Type::Builtin: {</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">switch</span> (cast<BuiltinType>(Ty)-><a class="code" href="DeclBase_8cpp.html#a37d13911f1772d0ed90b6b2e89cf3c60">getKind</a>()) {</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="keywordflow">case</span> BuiltinType::Void:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <span class="keywordflow">case</span> BuiltinType::ObjCId:</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">case</span> BuiltinType::ObjCClass:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordflow">case</span> BuiltinType::ObjCSel:</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <span class="comment">// LLVM void type can only be used as the result of a function call.  Just</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       <span class="comment">// map to the same as char.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       ResultType = llvm::Type::getInt8Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">case</span> BuiltinType::Bool:</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="comment">// Note that we always return bool as i1 for use as a scalar type.</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       ResultType = llvm::Type::getInt1Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>       <span class="keywordflow">break</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="keywordflow">case</span> BuiltinType::Char_S:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     <span class="keywordflow">case</span> BuiltinType::Char_U:</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keywordflow">case</span> BuiltinType::SChar:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">case</span> BuiltinType::UChar:</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keywordflow">case</span> BuiltinType::Short:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     <span class="keywordflow">case</span> BuiltinType::UShort:</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">case</span> BuiltinType::Int:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     <span class="keywordflow">case</span> BuiltinType::UInt:</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">case</span> BuiltinType::Long:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <span class="keywordflow">case</span> BuiltinType::ULong:</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">case</span> BuiltinType::LongLong:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">case</span> BuiltinType::ULongLong:</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">case</span> BuiltinType::WChar_S:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">case</span> BuiltinType::WChar_U:</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     <span class="keywordflow">case</span> BuiltinType::Char16:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">case</span> BuiltinType::Char32:</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       ResultType = llvm::IntegerType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>                                  static_cast<unsigned>(Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(T)));</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="keywordflow">case</span> BuiltinType::Half:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       <span class="comment">// Half FP can either be storage-only (lowered to i16) or native.</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       ResultType = <a class="code" href="CodeGenTypes_8cpp.html#a5ec6bf075c57d86bd81c26028ff12e97">getTypeForFormat</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>           Context.<a class="code" href="classclang_1_1ASTContext.html#a0adac8ecae63731c2bf1d9a1e09f80f4" title="Return the APFloat 'semantics' for the specified scalar floating point type.">getFloatTypeSemantics</a>(T),</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>           Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().NativeHalfType);</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     <span class="keywordflow">case</span> BuiltinType::Float:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <span class="keywordflow">case</span> BuiltinType::Double:</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">case</span> BuiltinType::LongDouble:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       ResultType = <a class="code" href="CodeGenTypes_8cpp.html#a5ec6bf075c57d86bd81c26028ff12e97">getTypeForFormat</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>                                     Context.<a class="code" href="classclang_1_1ASTContext.html#a0adac8ecae63731c2bf1d9a1e09f80f4" title="Return the APFloat 'semantics' for the specified scalar floating point type.">getFloatTypeSemantics</a>(T),</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>                                     <span class="comment">/* UseNativeHalf = */</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">case</span> BuiltinType::NullPtr:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       <span class="comment">// Model std::nullptr_t as i8*</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>       ResultType = llvm::Type::getInt8PtrTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>         </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">case</span> BuiltinType::UInt128:</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordflow">case</span> BuiltinType::Int128:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       ResultType = llvm::IntegerType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(), 128);</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage1d:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage1dArray:</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage1dBuffer:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage2d:</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage2dArray:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">case</span> BuiltinType::OCLImage3d:</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <span class="keywordflow">case</span> BuiltinType::OCLSampler:</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">case</span> BuiltinType::OCLEvent:</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       ResultType = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a64db0ce8ad84fe5df41bf044ae24a3d3" title="getOpenCLRuntime() - Return a reference to the configured OpenCL runtime.">getOpenCLRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGOpenCLRuntime.html#a9d25bcd2a96fe311b7e0d59a5f5ef17d">convertOpenCLSpecificType</a>(Ty);</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     <span class="keywordflow">case</span> BuiltinType::Dependent:</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="preprocessor">#define BUILTIN_TYPE(Id, SingletonId)</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="preprocessor"></span><span class="preprocessor">#define PLACEHOLDER_TYPE(Id, SingletonId) \</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> <span class="preprocessor">    case BuiltinType::Id:</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/BuiltinTypes.def"</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>       llvm_unreachable(<span class="stringliteral">"Unexpected placeholder builtin type!"</span>);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     }</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   }</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <span class="keywordflow">case</span> Type::Auto:</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     llvm_unreachable(<span class="stringliteral">"Unexpected undeduced auto type!"</span>);</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   <span class="keywordflow">case</span> Type::Complex: {</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     llvm::Type *EltTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(cast<ComplexType>(Ty)-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>());</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     ResultType = llvm::StructType::get(EltTy, EltTy, <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     <span class="keywordflow">break</span>;</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">case</span> Type::LValueReference:</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="keywordflow">case</span> Type::RValueReference: {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a> *RTy = cast<ReferenceType>(Ty);</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ETy = RTy-><a class="code" href="classclang_1_1ReferenceType.html#a365c62bb573a3c4b55b4ce408f975ae3">getPointeeType</a>();</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     llvm::Type *PointeeType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(ETy);</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="keywordtype">unsigned</span> AS = Context.<a class="code" href="classclang_1_1ASTContext.html#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(ETy);</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>     ResultType = llvm::PointerType::get(PointeeType, AS);</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <span class="keywordflow">break</span>;</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>   <span class="keywordflow">case</span> Type::Pointer: {</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PTy = cast<PointerType>(Ty);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ETy = PTy-><a class="code" href="classclang_1_1PointerType.html#a3d0af079431148f7da7e2c400052cc66">getPointeeType</a>();</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     llvm::Type *PointeeType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(ETy);</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <span class="keywordflow">if</span> (PointeeType->isVoidTy())</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       PointeeType = llvm::Type::getInt8Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <span class="keywordtype">unsigned</span> AS = Context.<a class="code" href="classclang_1_1ASTContext.html#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(ETy);</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     ResultType = llvm::PointerType::get(PointeeType, AS);</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   }</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   <span class="keywordflow">case</span> Type::VariableArray: {</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VariableArrayType.html">VariableArrayType</a> *A = cast<VariableArrayType>(Ty);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     assert(A-><a class="code" href="classclang_1_1ArrayType.html#af1482f3b4fdc5bc2b166d70c99f17746">getIndexTypeCVRQualifiers</a>() == 0 &&</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>            <span class="stringliteral">"FIXME: We only handle trivial array types so far!"</span>);</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     <span class="comment">// VLAs resolve to the innermost element type; this matches</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="comment">// the return of alloca, and there isn't any obviously better choice.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     ResultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(A-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>());</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     <span class="keywordflow">break</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="keywordflow">case</span> Type::IncompleteArray: {</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1IncompleteArrayType.html">IncompleteArrayType</a> *A = cast<IncompleteArrayType>(Ty);</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     assert(A-><a class="code" href="classclang_1_1ArrayType.html#af1482f3b4fdc5bc2b166d70c99f17746">getIndexTypeCVRQualifiers</a>() == 0 &&</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>            <span class="stringliteral">"FIXME: We only handle trivial array types so far!"</span>);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     <span class="comment">// int X[] -> [0 x int], unless the element type is not sized.  If it is</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="comment">// unsized (e.g. an incomplete struct) just use [0 x i8].</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     ResultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(A-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>());</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">if</span> (!ResultType->isSized()) {</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       SkippedLayout = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       ResultType = llvm::Type::getInt8Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     }</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     ResultType = llvm::ArrayType::get(ResultType, 0);</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   }</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">case</span> Type::ConstantArray: {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *A = cast<ConstantArrayType>(Ty);</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     llvm::Type *EltTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(A-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>());</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="comment">// Lower arrays of undefined struct type to arrays of i8 just to have a </span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="comment">// concrete type.</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordflow">if</span> (!EltTy->isSized()) {</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       SkippedLayout = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       EltTy = llvm::Type::getInt8Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     }</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     ResultType = llvm::ArrayType::get(EltTy, A-><a class="code" href="classclang_1_1ConstantArrayType.html#add90924c309ad1f353431f2b63e9ba2b">getSize</a>().getZExtValue());</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">break</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>   <span class="keywordflow">case</span> Type::ExtVector:</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   <span class="keywordflow">case</span> Type::Vector: {</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VectorType.html">VectorType</a> *VT = cast<VectorType>(Ty);</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     ResultType = llvm::VectorType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(VT-><a class="code" href="classclang_1_1VectorType.html#aa82693de604f63a6366f39372252ab42">getElementType</a>()),</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>                                        VT-><a class="code" href="classclang_1_1VectorType.html#adfa7e090380e24449722cc934b2a71b1">getNumElements</a>());</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>   }</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="keywordflow">case</span> Type::FunctionNoProto:</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="keywordflow">case</span> Type::FunctionProto: {</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *FT = cast<FunctionType>(Ty);</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="comment">// First, check whether we can build the full function type.  If the</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     <span class="comment">// function type depends on an incomplete type (e.g. a struct or enum), we</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     <span class="comment">// cannot lower the function type.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">isFuncTypeConvertible</a>(FT)) {</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       <span class="comment">// This function's type depends on an incomplete tag type.</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       <span class="comment">// Force conversion of all the relevant record types, to make sure</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <span class="comment">// we re-convert the FunctionType when appropriate.</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = FT-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>())</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(RT->getDecl());</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = dyn_cast<FunctionProtoType>(FT))</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = FPT->getNumArgs(); i != e; i++)</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>           <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = FPT->getArgType(i)-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>())</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(RT->getDecl());</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> </div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       <span class="comment">// Return a placeholder type.</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>       ResultType = llvm::StructType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       SkippedLayout = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     }</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="comment">// While we're converting the argument types for a function, we don't want</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <span class="comment">// to recursively convert any pointed-to structs.  Converting directly-used</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="comment">// structs is ok though.</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>     <span class="keywordflow">if</span> (!RecordsBeingLaidOut.insert(Ty)) {</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       ResultType = llvm::StructType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</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>       SkippedLayout = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     }</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <span class="comment">// The function type can be built; call the appropriate routines to</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="comment">// build it.</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *FI;</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = dyn_cast<FunctionProtoType>(FT)) {</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       FI = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>                    <a class="code" href="classclang_1_1CanQual.html" title="Represents a canonical, potentially-qualified type.">CanQual<FunctionProtoType>::CreateUnsafe</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(FPT, 0)));</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionNoProtoType.html">FunctionNoProtoType</a> *FNPT = cast<FunctionNoProtoType>(FT);</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       FI = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>                 <a class="code" href="classclang_1_1CanQual.html" title="Represents a canonical, potentially-qualified type.">CanQual<FunctionNoProtoType>::CreateUnsafe</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(FNPT, 0)));</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     }</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     <span class="comment">// If there is something higher level prodding our CGFunctionInfo, then</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <span class="comment">// don't recurse into it again.</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">if</span> (FunctionsBeingProcessed.count(FI)) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       ResultType = llvm::StructType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>       SkippedLayout = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     } <span class="keywordflow">else</span> {</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">// Otherwise, we're good to go, go ahead and convert it.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>       ResultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(*FI);</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     }</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     RecordsBeingLaidOut.erase(Ty);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keywordflow">if</span> (SkippedLayout)</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       TypeCache.clear();</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <span class="keywordflow">if</span> (RecordsBeingLaidOut.empty())</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       <span class="keywordflow">while</span> (!DeferredRecords.empty())</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(DeferredRecords.pop_back_val());</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <span class="keywordflow">case</span> Type::ObjCObject:</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     ResultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(cast<ObjCObjectType>(Ty)->getBaseType());</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">break</span>;</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="keywordflow">case</span> Type::ObjCInterface: {</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="comment">// Objective-C interfaces are always opaque (outside of the</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>     <span class="comment">// runtime, which can do whatever it likes); we never refine</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="comment">// these.</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     llvm::Type *&T = InterfaceTypes[cast<ObjCInterfaceType>(Ty)];</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordflow">if</span> (!T)</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       T = <a class="code" href="namespaceclang_1_1serialized__diags.html#a36bc44b1b04b3c0c421e02761c2d0282" title="Returns a DiagnosticConsumer that serializes diagnostics to a bitcode file.">llvm::StructType::create</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     ResultType = T;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">break</span>;</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">case</span> Type::ObjCObjectPointer: {</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     <span class="comment">// Protocol qualifications do not influence the LLVM type, we just return a</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="comment">// pointer to the underlying interface type. We don't need to worry about</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     <span class="comment">// recursive conversion.</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     llvm::Type *T =</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(cast<ObjCObjectPointerType>(Ty)->getPointeeType());</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     ResultType = T->getPointerTo();</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     <span class="keywordflow">break</span>;</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> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keywordflow">case</span> Type::Enum: {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1EnumDecl.html">EnumDecl</a> *ED = cast<EnumType>(Ty)->getDecl();</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <span class="keywordflow">if</span> (ED-><a class="code" href="classclang_1_1TagDecl.html#a05518a8ffe57a8add6b7777796c12362">isCompleteDefinition</a>() || ED-><a class="code" href="classclang_1_1EnumDecl.html#a0af07c1f3c99e599d4be203599a0b820" title="Returns true if this is an Objective-C, C++11, or Microsoft-style enumeration with a fixed underlying...">isFixed</a>())</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(ED-><a class="code" href="classclang_1_1EnumDecl.html#a09e5024add120a01ec710f0189c24616">getIntegerType</a>());</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="comment">// Return a placeholder 'i32' type.  This can be changed later when the</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="comment">// type is defined (see UpdateCompletedType), but is likely to be the</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="comment">// "right" answer.</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     ResultType = llvm::Type::getInt32Ty(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="keywordflow">case</span> Type::BlockPointer: {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> FTy = cast<BlockPointerType>(Ty)->getPointeeType();</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     llvm::Type *PointeeType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(FTy);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     <span class="keywordtype">unsigned</span> AS = Context.<a class="code" href="classclang_1_1ASTContext.html#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(FTy);</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     ResultType = llvm::PointerType::get(PointeeType, AS);</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   }</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> </div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="keywordflow">case</span> Type::MemberPointer: {</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     ResultType = </div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab38e94be7040f21ccd7fe7f246710336">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a408f3be572813397ce83bd95492bea32">ConvertMemberPointerType</a>(cast<MemberPointerType>(Ty));</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   }</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   <span class="keywordflow">case</span> Type::Atomic: {</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> valueType = cast<AtomicType>(Ty)->getValueType();</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     ResultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(valueType);</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> </div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     <span class="comment">// Pad out to the inflated size if necessary.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     uint64_t valueSize = Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(valueType);</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>     uint64_t atomicSize = Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(Ty);</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <span class="keywordflow">if</span> (valueSize != atomicSize) {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       assert(valueSize < atomicSize);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       llvm::Type *elts[] = {</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         ResultType,</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>         llvm::ArrayType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a329e1a1ea4a981895ad14b70611e163b" title="i8, i16, i32, and i64">Int8Ty</a>, (atomicSize - valueSize) / 8)</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       };</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       ResultType = llvm::StructType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>                                          llvm::makeArrayRef(elts));</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     }</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>   }</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   }</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>   </div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   assert(ResultType && <span class="stringliteral">"Didn't convert a type?"</span>);</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>   TypeCache[Ty] = ResultType;</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>   <span class="keywordflow">return</span> ResultType;</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> }</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> </div>
+<div class="line"><a name="l00617"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3551cf69f87a1cfe3e5bcd8c7e3137ce">  617</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3551cf69f87a1cfe3e5bcd8c7e3137ce">CodeGenModule::isPaddedAtomicType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3551cf69f87a1cfe3e5bcd8c7e3137ce">isPaddedAtomicType</a>(type-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1AtomicType.html">AtomicType</a>>());</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span> }</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span> </div>
+<div class="line"><a name="l00621"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6a30a768649b64240a8f8a75c76f3f30">  621</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3551cf69f87a1cfe3e5bcd8c7e3137ce">CodeGenModule::isPaddedAtomicType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1AtomicType.html">AtomicType</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(type) != Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(type-><a class="code" href="classclang_1_1AtomicType.html#a00c483aa6cbb1980e6aa1c3d1f4ee847">getValueType</a>());</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> }</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span> <span class="comment"></span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="comment">/// ConvertRecordDeclType - Lay out a tagged decl type like struct or union.</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822">  626</a></span> <span class="comment"></span>llvm::StructType *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">CodeGenTypes::ConvertRecordDeclType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD) {</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="comment">// TagDecl's are not necessarily unique, instead use the (clang)</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="comment">// type connected to the decl.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Key = Context.<a class="code" href="classclang_1_1ASTContext.html#a92752b8dd75428a63b2e787642db884a" title="Return the unique reference to the type for the specified TagDecl (struct/union/class/enum) decl...">getTagDeclType</a>(RD).<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>();</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span> </div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   llvm::StructType *&Entry = RecordDeclTypes[Key];</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span> </div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   <span class="comment">// If we don't have a StructType at all yet, create the forward declaration.</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <span class="keywordflow">if</span> (Entry == 0) {</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     Entry = <a class="code" href="namespaceclang_1_1serialized__diags.html#a36bc44b1b04b3c0c421e02761c2d0282" title="Returns a DiagnosticConsumer that serializes diagnostics to a bitcode file.">llvm::StructType::create</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>());</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae29d61a5c3ea569bf9ab242304c731e2">addRecordTypeName</a>(RD, Entry, <span class="stringliteral">""</span>);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>   }</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>   llvm::StructType *Ty = Entry;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span> </div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="comment">// If this is still a forward declaration, or the LLVM type is already</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>   <span class="comment">// complete, there's nothing more to do.</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   RD = RD-><a class="code" href="classclang_1_1RecordDecl.html#ace12add36d1accb71a7d53bacad696af">getDefinition</a>();</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="keywordflow">if</span> (RD == 0 || !RD-><a class="code" href="classclang_1_1TagDecl.html#a05518a8ffe57a8add6b7777796c12362">isCompleteDefinition</a>() || !Ty->isOpaque())</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="keywordflow">return</span> Ty;</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   </div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="comment">// If converting this type would cause us to infinitely loop, don't do it!</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>   <span class="keywordflow">if</span> (!<a class="code" href="CodeGenTypes_8cpp.html#a769db63c768feccb13365c0485e2200c">isSafeToConvert</a>(RD, *<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     DeferredRecords.push_back(RD);</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     <span class="keywordflow">return</span> Ty;</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   }</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> </div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   <span class="comment">// Okay, this is a definition of a type.  Compile the implementation now.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="keywordtype">bool</span> InsertResult = RecordsBeingLaidOut.insert(Key); (void)InsertResult;</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   assert(InsertResult && <span class="stringliteral">"Recursively compiling a struct?"</span>);</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   </div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="comment">// Force conversion of non-virtual base classes recursively.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *CRD = dyn_cast<CXXRecordDecl>(RD)) {</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> i = CRD->bases_begin(),</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>          e = CRD->bases_end(); i != e; ++i) {</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>       <span class="keywordflow">if</span> (i->isVirtual()) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>       </div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(i->getType()->getAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     }</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">  666</span>   <span class="comment">// Layout fields.</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> *Layout = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a889f521e57c3b93e343c47728cee651d" title="Compute a new LLVM record layout object for the given record.">ComputeRecordLayout</a>(RD, Ty);</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   CGRecordLayouts[Key] = Layout;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span> </div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="comment">// We're done laying out this struct.</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="keywordtype">bool</span> EraseResult = RecordsBeingLaidOut.erase(Key); (void)EraseResult;</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   assert(EraseResult && <span class="stringliteral">"struct not in RecordsBeingLaidOut set?"</span>);</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>    </div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   <span class="comment">// If this struct blocked a FunctionType conversion, then recompute whatever</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="comment">// was derived from that.</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="comment">// FIXME: This is hugely overconservative.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="keywordflow">if</span> (SkippedLayout)</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     TypeCache.clear();</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     </div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="comment">// If we're done converting the outer-most record, then convert any deferred</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="comment">// structs as well.</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">if</span> (RecordsBeingLaidOut.empty())</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     <span class="keywordflow">while</span> (!DeferredRecords.empty())</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(DeferredRecords.pop_back_val());</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span> </div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="keywordflow">return</span> Ty;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> <span class="comment">/// getCGRecordLayout - Return record layout info for the given record decl.</span></div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> &</div>
+<div class="line"><a name="l00691"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a917013c470207686c04a181aa2a73b5f">  691</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a917013c470207686c04a181aa2a73b5f" title="getCGRecordLayout - Return record layout info for the given record decl.">CodeGenTypes::getCGRecordLayout</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD) {</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Key = Context.<a class="code" href="classclang_1_1ASTContext.html#a92752b8dd75428a63b2e787642db884a" title="Return the unique reference to the type for the specified TagDecl (struct/union/class/enum) decl...">getTagDeclType</a>(RD).<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>();</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span> </div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> *Layout = CGRecordLayouts.lookup(Key);</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">if</span> (!Layout) {</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     <span class="comment">// Compute the type information.</span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(RD);</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>     <span class="comment">// Now try again.</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     Layout = CGRecordLayouts.lookup(Key);</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   }</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> </div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   assert(Layout && <span class="stringliteral">"Unable to find record layout information for type"</span>);</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keywordflow">return</span> *Layout;</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span> }</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
+<div class="line"><a name="l00707"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">  707</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">CodeGenTypes::isZeroInitializable</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   <span class="comment">// No need to check for member pointers when not compiling C++.</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">if</span> (!Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus)</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   </div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   T = Context.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(T);</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   </div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="comment">// Records are non-zero-initializable if they contain any</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="comment">// non-zero-initializable subobjects.</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = cast<CXXRecordDecl>(RT->getDecl());</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(RD);</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> </div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   <span class="comment">// We have to ask the ABI about member pointers.</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>())</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab38e94be7040f21ccd7fe7f246710336">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ad809ff429ed2a5da05c2e1144d891244">isZeroInitializable</a>(MPT);</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   </div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <span class="comment">// Everything else is okay.</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> }</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> </div>
+<div class="line"><a name="l00729"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aea4b7bdfaddb134aa7593a6e5fa22e6f">  729</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">CodeGenTypes::isZeroInitializable</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD) {</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a917013c470207686c04a181aa2a73b5f" title="getCGRecordLayout - Return record layout info for the given record decl.">getCGRecordLayout</a>(RD).<a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html#aab2ec117dadd263063ff91424d46d3eb" title="Check whether this struct can be C++ zero-initialized with a zeroinitializer.">isZeroInitializable</a>();</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:28 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/CodeGenTypes_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,668 @@
+<!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: CodeGenTypes.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_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li><li class="navelem"><a class="el" href="dir_e8103833ce80ba077e945e011f96d4ad.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTypes.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTypes_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/CodeGen/Release+Asserts/CodeGenTypes.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CodeGenTypes.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CodeGenTypes.cpp CodeGenTypes.h CGCall.h CGValue.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/IR/Use.h EHScopeStack.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/include/llvm/Support/DebugLoc.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h ABIInfo.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h CGCXXABI.h \
+ CodeGenFunction.h CGBuilder.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CodeGenModule.h \
+ CGVTables.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/include/llvm/Support/Debug.h CGOpenCLRuntime.h \
+ CGRecordLayout.h TargetInfo.h</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> CodeGenTypes.h:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> CGCall.h:</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> CGValue.h:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</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> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</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> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</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> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</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> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</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> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</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> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</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> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h:</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> /home/tstellar/llvm/include/llvm/IR/Use.h:</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> EHScopeStack.h:</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> /home/tstellar/llvm/include/llvm/IR/BasicBlock.h:</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> /home/tstellar/llvm/include/llvm/ADT/ilist.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/include/llvm/IR/Instruction.h:</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> /home/tstellar/llvm/include/llvm/ADT/ilist_node.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/include/llvm/IR/User.h:</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> /home/tstellar/llvm/include/llvm/Support/DebugLoc.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/include/llvm/IR/Instruction.def:</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> /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h:</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> /home/tstellar/llvm/include/llvm/IR/Instructions.h:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/include/llvm/IR/Attributes.h:</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> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h:</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> /home/tstellar/llvm/include/llvm/IR/Type.h:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/include/llvm/IR/InstrTypes.h:</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> /home/tstellar/llvm/include/llvm/IR/OperandTraits.h:</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> ABIInfo.h:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h:</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> /home/tstellar/llvm/include/llvm/IR/Module.h:</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> /home/tstellar/llvm/include/llvm/IR/Function.h:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> /home/tstellar/llvm/include/llvm/IR/Argument.h:</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> /home/tstellar/llvm/include/llvm/IR/GlobalValue.h:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> /home/tstellar/llvm/include/llvm/IR/Constant.h:</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h:</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h:</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</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> CGCXXABI.h:</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> CodeGenFunction.h:</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> CGBuilder.h:</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> /home/tstellar/llvm/include/llvm/IR/DataLayout.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> /home/tstellar/llvm/include/llvm/PassSupport.h:</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> /home/tstellar/llvm/include/llvm/Pass.h:</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> /home/tstellar/llvm/include/llvm/InitializePasses.h:</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> /home/tstellar/llvm/include/llvm/PassRegistry.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/include/llvm/Support/Atomic.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/include/llvm/Support/Valgrind.h:</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h:</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> </div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> /home/tstellar/llvm/include/llvm/IR/LLVMContext.h:</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> /home/tstellar/llvm/include/llvm/IR/Operator.h:</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> /home/tstellar/llvm/include/llvm/IR/Constants.h:</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h:</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> /home/tstellar/llvm/include/llvm/Support/ValueHandle.h:</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> CGDebugInfo.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def:</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> /home/tstellar/llvm/include/llvm/Support/Dwarf.h:</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> CodeGenModule.h:</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> CGVTables.h:</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h:</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h:</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h:</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> </div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h:</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> </div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> </div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> </div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> /home/tstellar/llvm/include/llvm/Support/Debug.h:</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> </div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> CGOpenCLRuntime.h:</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> </div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> CGRecordLayout.h:</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> </div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> TargetInfo.h:</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:29 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/CodeGenTypes_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGenTypes_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,343 @@
+<!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: CodeGenTypes.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_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGenTypes.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGenTypes_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">//===--- CodeGenTypes.h - Type translation for LLVM CodeGen -----*- 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 is the code that handles AST -> LLVM type lowering.</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">#ifndef CLANG_CODEGEN_CODEGENTYPES_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_CODEGEN_CODEGENTYPES_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CGCall_8h.html">CGCall.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="GlobalDecl_8h.html">clang/AST/GlobalDecl.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/IR/Module.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keyword">class </span>FunctionType;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keyword">class </span>Module;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">class </span>DataLayout;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">class </span>Type;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">class </span>LLVMContext;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">class </span>StructType;</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> </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keyword">class </span>ABIInfo;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">class </span>ASTContext;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">template</span> <<span class="keyword">typename</span>> <span class="keyword">class </span>CanQual;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keyword">class </span>CXXConstructorDecl;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">class </span>CXXDestructorDecl;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keyword">class </span>CXXMethodDecl;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">class </span>CodeGenOptions;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">class </span>FieldDecl;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keyword">class </span>FunctionProtoType;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">class </span>ObjCInterfaceDecl;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keyword">class </span>ObjCIvarDecl;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">class </span>PointerType;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">class </span>QualType;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">class </span>RecordDecl;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">class </span>TagDecl;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">class </span>TargetInfo;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keyword">class </span>Type;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">typedef</span> CanQual<Type> <a class="code" href="namespaceclang.html#a52095c698d148a30b0d24c75f6abfda4" title="Represents a canonical, potentially-qualified type.">CanQualType</a>;</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> <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keyword">class </span>CGCXXABI;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keyword">class </span>CGRecordLayout;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keyword">class </span>CodeGenModule;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">class </span>RequiredArgs;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">/// CodeGenTypes - This class organizes the cross-module state that is used</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">/// while lowering AST types to LLVM types.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">   61</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> {</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="comment">// Some of this stuff should probably be left on the CGM.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context;</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   llvm::Module &TheModule;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keyword">const</span> llvm::DataLayout &TheDataLayout;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &Target;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CGCXXABI</a> &TheCXXABI;</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>   <span class="comment">// This should not be moved earlier, since its initialization depends on some</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="comment">// of the previous reference members being already initialized</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ABIInfo.html">ABIInfo</a> &TheABIInfo;</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// The opaque type map for Objective-C interfaces. All direct</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// manipulation is done by the runtime interfaces, which are</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// responsible for coercing to the appropriate type; these opaque</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// types are never refined.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"></span>  llvm::DenseMap<const ObjCInterfaceType*, llvm::Type *> InterfaceTypes;</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">  /// CGRecordLayouts - This maps llvm struct type with corresponding</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">  /// record layout info.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment"></span>  llvm::DenseMap<const Type*, CGRecordLayout *> CGRecordLayouts;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// RecordDeclTypes - This contains the LLVM IR type for any converted</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// RecordDecl.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment"></span>  llvm::DenseMap<const Type*, llvm::StructType *> RecordDeclTypes;</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  /// FunctionInfos - Hold memoized CGFunctionInfo results.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment"></span>  llvm::FoldingSet<CGFunctionInfo> FunctionInfos;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// RecordsBeingLaidOut - This set keeps track of records that we're currently</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  /// converting to an IR type.  For example, when converting:</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  /// struct A { struct B { int x; } } when processing 'x', the 'A' and 'B'</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// types will be in this set.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment"></span>  llvm::SmallPtrSet<const Type*, 4> RecordsBeingLaidOut;</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>   llvm::SmallPtrSet<const CGFunctionInfo*, 4> FunctionsBeingProcessed;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">  /// SkippedLayout - True if we didn't layout a function due to a being inside</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">  /// a recursive struct conversion, set this to true.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment"></span>  <span class="keywordtype">bool</span> SkippedLayout;</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>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const RecordDecl *, 8></a> DeferredRecords;</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="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// TypeCache - This map keeps cache of llvm::Types</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  /// and maps llvm::Types to corresponding clang::Type.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment"></span>  llvm::DenseMap<const Type *, llvm::Type *> TypeCache;</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">public</span>:</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a028e8d017ebdc1ba1a8df8f097907c99">CodeGenTypes</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &cgm);</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#affb24902d2ea7329018c69da8ac2d60f">~CodeGenTypes</a>();</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3c95ae1c35fd38167e754745ef1c20ca">  114</a></span>   <span class="keyword">const</span> llvm::DataLayout &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3c95ae1c35fd38167e754745ef1c20ca">getDataLayout</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TheDataLayout; }</div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">  115</a></span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a39fa73c411423d91a296ff183a85a612">getContext</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Context; }</div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a6590a13901a37293b67eb2d3a0a6836f">  116</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ABIInfo.html">ABIInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a6590a13901a37293b67eb2d3a0a6836f">getABIInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TheABIInfo; }</div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad2b80b5e4aed0a1ac94db1ffb1a8b3ac">  117</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad2b80b5e4aed0a1ac94db1ffb1a8b3ac">getTarget</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Target; }</div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab38e94be7040f21ccd7fe7f246710336">  118</a></span>   <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CGCXXABI</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab38e94be7040f21ccd7fe7f246710336">getCXXABI</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TheCXXABI; }</div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">  119</a></span>   llvm::LLVMContext &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af72e7d5223712ca6f07ba8bff256106c">getLLVMContext</a>() { <span class="keywordflow">return</span> TheModule.getContext(); }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// ConvertType - Convert type T into a llvm::Type.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment"></span>  llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment"></span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">  /// ConvertTypeForMem - Convert type T into a llvm::Type.  This differs from</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// ConvertType in that it is used to convert to the memory representation for</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">  /// a type.  For example, the scalar representation for _Bool is i1, but the</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// memory representation is usually i8 or i32, depending on the target.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment"></span>  llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T);</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment"></span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// GetFunctionType - Get the LLVM function type for \arg Info.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment"></span>  llvm::FunctionType *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &Info);</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>   llvm::FunctionType *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD);</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment"></span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">  /// isFuncTypeConvertible - Utility to check whether a function type can</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">  /// be converted to an LLVM type (i.e. doesn't depend on an incomplete tag</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">  /// type).</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">isFuncTypeConvertible</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *FT);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a3334030437e401948b77913ebe2f557a">isFuncTypeArgumentConvertible</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty);</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">  /// GetFunctionTypeForVTable - Get the LLVM function type for use in a vtable,</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// given a CXXMethodDecl. If the method to has an incomplete return type,</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">  /// and/or incomplete argument types, this will return the opaque type.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment"></span>  llvm::Type *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#adf3d6dee03712ff8e0c12848df1cacbf">GetFunctionTypeForVTable</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a917013c470207686c04a181aa2a73b5f" title="getCGRecordLayout - Return record layout info for the given record decl.">getCGRecordLayout</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a>*);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment"></span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// UpdateCompletedType - When we find the full definition for a TagDecl,</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  /// replace the 'opaque' type we previously made for it if applicable.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aab1cc9a7994aff2bfbc3a79f6d47a7c7">UpdateCompletedType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TagDecl.html" title="TagDecl - Represents the declaration of a struct/union/class/enum.">TagDecl</a> *TD);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment"></span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">  /// getNullaryFunctionInfo - Get the function info for a void()</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">  /// function with standard CC.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#afd84f2333757f99d56c12f73e6f56490">arrangeNullaryFunction</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">// The arrangement methods are split into three families:</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="comment">//   - those meant to drive the signature and prologue/epilogue</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="comment">//     of a function declaration or definition,</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">//   - those meant for the computation of the LLVM type for an abstract</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">//     appearance of a function, and</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="comment">//   - those meant for performing the IR-generation of a call.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="comment">// They differ mainly in how they deal with optional (i.e. variadic)</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   <span class="comment">// arguments, as well as unprototyped functions.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="comment">// Key points:</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="comment">// - The CGFunctionInfo for emitting a specific call site must include</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="comment">//   entries for the optional arguments.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="comment">// - The function type used at the call site must reflect the formal</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="comment">//   signature of the declaration being called, or else the call will</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="comment">//   go awry.</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// - For the most part, unprototyped functions are called by casting to</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="comment">//   a formal signature inferred from the specific argument types used</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">//   at the call-site.  However, some targets (e.g. x86-64) screw with</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="comment">//   this for compatibility reasons.</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ab8d78176cc0855b9620a98f32b0379c5">arrangeGlobalDeclaration</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD);</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">arrangeFunctionDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD);</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad7efb9a499023cd3c642a5d7da8a5050">arrangeFunctionDeclaration</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> ResTy,</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>                                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> &Info,</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>                                                    <span class="keywordtype">bool</span> isVariadic);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aa0a3712dac69644328d7d9ca209c18ac">arrangeObjCMethodDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD);</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#af46a93b855143dbf86a428e50205d105">arrangeObjCMessageSendSignature</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD,</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>                                                         <a class="code" href="classclang_1_1QualType.html">QualType</a> receiverType);</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD);</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a95d432af179284f5cd1117fa13621acb">arrangeCXXConstructorDeclaration</a>(</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>                                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D,</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>                                                     <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a>);</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a50b6ae880f9bcf0b6b8c13cba50860d7">arrangeCXXDestructor</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D,</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>                                              <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a>);</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>                                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *Ty);</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> ResTy,</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>                                                 <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> info,</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>                                                 <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required);</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a67981599f34fc2387104bb8dde94889b">arrangeBlockFunctionCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>                                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionType.html">FunctionType</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae4184432046c5c971e0256b32ef7deac" title="Arrange a call to a C++ method, passing the given arguments.">arrangeCXXMethodCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &args,</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>                                              <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required);</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="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(<a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionProtoType></a> Ty);</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a567b6f63658d328c7c26434ec5ab8d45">arrangeFreeFunctionType</a>(<a class="code" href="classclang_1_1CanQual.html">CanQual<FunctionNoProtoType></a> Ty);</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a632450159b2d644ada4a80586860b3db">arrangeCXXMethodType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FTP);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment"></span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// "Arrange" the LLVM information for a call or type with the given</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// signature.  This is largely an internal method; other clients</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// should use one of the above routines, which ultimately defer to</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  /// this.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  /// \param argTypes - must all actually be canonical as params</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad50f56f1ab179aee5818314106a147f9">arrangeLLVMFunctionInfo</a>(<a class="code" href="classclang_1_1CanQual.html">CanQualType</a> returnType,</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>                                                 <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<CanQualType></a> argTypes,</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>                                                 <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> info,</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>                                                 <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> args);</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">  /// \brief Compute a new LLVM record layout object for the given record.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment"></span>  <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a889f521e57c3b93e343c47728cee651d" title="Compute a new LLVM record layout object for the given record.">ComputeRecordLayout</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *D,</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>                                       llvm::StructType *Ty);</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment"></span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">  /// addRecordTypeName - Compute a name from the given record decl with an</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">  /// optional suffix and name the given LLVM type using it.</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae29d61a5c3ea569bf9ab242304c731e2">addRecordTypeName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *RD, llvm::StructType *Ty,</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>                          StringRef suffix);</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="keyword">public</span>:  <span class="comment">// These are internal details of CGT that shouldn't be used externally.</span><span class="comment"></span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">  /// ConvertRecordDeclType - Lay out a tagged decl type like struct or union.</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment"></span>  llvm::StructType *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a98a1ee63305bd2a6a91b89c302549822" title="ConvertRecordDeclType - Lay out a tagged decl type like struct or union.">ConvertRecordDeclType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *TD);</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment"></span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  /// GetExpandedTypes - Expand the type \arg Ty into the LLVM</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// argument types it would be passed as on the provided vector \arg</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// ArgTys. See ABIArgInfo::Expand.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a930db80d2ce386e4d39183c834eec177">GetExpandedTypes</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<llvm::Type*></a> &expanded);</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment"></span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">  /// IsZeroInitializable - Return whether a type can be</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// zero-initialized (in the C++ sense) with an LLVM zeroinitializer.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T);</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">  /// IsZeroInitializable - Return whether a record type can be</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  /// zero-initialized (in the C++ sense) with an LLVM zeroinitializer.</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ae942a58a407e3de713afdc13d0a9f882">isRecordLayoutComplete</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aba9a9d38ae5d1b0d38e003db6793fa0d">  252</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#aba9a9d38ae5d1b0d38e003db6793fa0d">noRecordsBeingLaidOut</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">return</span> RecordsBeingLaidOut.empty();</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   }</div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ac1db6d81b9cb2ad17292303076938151">  255</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ac1db6d81b9cb2ad17292303076938151">isRecordBeingLaidOut</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *Ty)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     <span class="keywordflow">return</span> RecordsBeingLaidOut.count(Ty);</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> };</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> }  <span class="comment">// end namespace CodeGen</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> }  <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:29 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/CodeGen_2ItaniumCXXABI_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGen_2ItaniumCXXABI_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGen_2ItaniumCXXABI_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CodeGen_2ItaniumCXXABI_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1753 @@
+<!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: ItaniumCXXABI.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_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodeGen/ItaniumCXXABI.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CodeGen_2ItaniumCXXABI_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">//===------- ItaniumCXXABI.cpp - Emit LLVM Code from ASTs for a Module ----===//</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 provides C++ code generation targeting the Itanium C++ ABI.  The class</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// in this file generates structures that follow the Itanium C++ ABI, which is</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">// documented at:</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//  http://www.codesourcery.com/public/cxx-abi/abi.html</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//  http://www.codesourcery.com/public/cxx-abi/abi-eh.html</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">// It also supports the closely-related ARM ABI, documented at:</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">// http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041c/IHI0041C_cppabi.pdf</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="CGRecordLayout_8h.html">CGRecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="CGVTables_8h.html">CGVTables.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="Mangle_8h.html">clang/AST/Mangle.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/DataLayout.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "llvm/IR/Value.h"</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">using namespace </span>clang;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">class </span>ItaniumCXXABI : <span class="keyword">public</span> <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CodeGen::CGCXXABI</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">  /// VTables - All the vtables which have been defined.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment"></span>  llvm::DenseMap<const CXXRecordDecl *, llvm::GlobalVariable *> VTables;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordtype">bool</span> UseARMMethodPtrABI;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordtype">bool</span> UseARMGuardVarABI;</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>   <a class="code" href="classclang_1_1ItaniumMangleContext.html">ItaniumMangleContext</a> &getMangleContext() {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keywordflow">return</span> cast<ItaniumMangleContext>(<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a81a311530d5d52bac2afe472091b3e6b" title="Gets the mangle context.">CodeGen::CGCXXABI::getMangleContext</a>());</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> </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   ItaniumCXXABI(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>                 <span class="keywordtype">bool</span> UseARMMethodPtrABI = <span class="keyword">false</span>,</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>                 <span class="keywordtype">bool</span> UseARMGuardVarABI = <span class="keyword">false</span>) :</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CGCXXABI</a>(CGM), UseARMMethodPtrABI(UseARMMethodPtrABI),</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     UseARMGuardVarABI(UseARMGuardVarABI) { }</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="keywordtype">bool</span> isReturnTypeIndirect(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="comment">// Structures with either a non-trivial destructor or a non-trivial</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="comment">// copy constructor are always indirect.</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <span class="keywordflow">return</span> !RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>() || RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad297bf5844cf9d6f1fd36074daf19ef0" title="Determine whether this class has a non-trivial copy constructor (C++ [class.copy]p6, C++11 [class.copy]p12)">hasNonTrivialCopyConstructor</a>();</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>   RecordArgABI <a class="code" href="CodeGen_2TargetInfo_8cpp.html#a66a9e71c49b43e57cfa70d26c0e8e1ca">getRecordArgABI</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="comment">// Structures with either a non-trivial destructor or a non-trivial</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="comment">// copy constructor are always indirect.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">if</span> (!RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>() || RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad297bf5844cf9d6f1fd36074daf19ef0" title="Determine whether this class has a non-trivial copy constructor (C++ [class.copy]p6, C++11 [class.copy]p12)">hasNonTrivialCopyConstructor</a>())</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       <span class="keywordflow">return</span> RAA_Indirect;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <span class="keywordflow">return</span> RAA_Default;</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> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordtype">bool</span> isZeroInitializable(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   llvm::Type *ConvertMemberPointerType(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitLoadOfMemberFunctionPointer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&This,</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemFnPtr,</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitMemberDataPointerAddress(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1Base.html">Base</a>,</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemPtr,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitMemberPointerConversion(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E,</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   llvm::Constant *EmitMemberPointerConversion(<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                                               llvm::Constant *Src);</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>   llvm::Constant *EmitNullMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   llvm::Constant *EmitMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD);</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   llvm::Constant *EmitMemberDataPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT,</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>                                         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> offset);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   llvm::Constant *EmitMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1APValue.html">APValue</a> &MP, <a class="code" href="classclang_1_1QualType.html">QualType</a> MPT);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   llvm::Constant *BuildMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                                      <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a>);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitMemberPointerComparison(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *L,</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *R,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT,</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                                            <span class="keywordtype">bool</span> Inequality);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EmitMemberPointerIsNotNull(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a>,</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *adjustToCompleteObject(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                                       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ptr,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *GetVirtualBaseClassOffset(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl,</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseClassDecl);</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>   <span class="keywordtype">void</span> BuildConstructorSignature(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Ctor,</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                                  <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> T,</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                                  <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> &ResTy,</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>                                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &ArgTys);</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>   <span class="keywordtype">void</span> EmitCXXConstructors(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keywordtype">void</span> BuildDestructorSignature(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>                                 <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> T,</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>                                 <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> &ResTy,</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                                 <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &ArgTys);</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="keywordtype">bool</span> useThunkForDtorVariant(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>                               <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DT)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="comment">// Itanium does not emit any destructor variant as an inline thunk.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="comment">// Delegating may occur as an optimization, but all variants are either</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="comment">// emitted with external linkage or as linkonce if they are inline and used.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     <span class="keywordflow">return</span> <span class="keyword">false</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> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordtype">void</span> EmitCXXDestructors(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D);</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="keywordtype">void</span> BuildInstanceFunctionParams(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                                    <a class="code" href="classclang_1_1QualType.html">QualType</a> &ResTy,</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Params);</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>   <span class="keywordtype">void</span> EmitInstanceFunctionProlog(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF);</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>   <span class="keywordtype">void</span> EmitConstructorCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a>,</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>                            <span class="keywordtype">bool</span> ForVirtualBase, <span class="keywordtype">bool</span> Delegating,</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>                            <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgBeg,</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>                            <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgEnd);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordtype">void</span> emitVTableDefinitions(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html">CodeGenVTables</a> &CGVT, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *getVTableAddressPointInStructor(</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VTableClass,</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       <a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a> <a class="code" href="classclang_1_1Base.html">Base</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *NearestVBase,</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <span class="keywordtype">bool</span> &NeedsVirtualOffset);</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   llvm::Constant *</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   getVTableAddressPointForConstExpr(<a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a> <a class="code" href="classclang_1_1Base.html">Base</a>,</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VTableClass);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   llvm::GlobalVariable *getAddrOfVTable(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                                         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> VPtrOffset);</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *getVirtualFunctionPointer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD,</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This, llvm::Type *Ty);</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordtype">void</span> EmitVirtualDestructorCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                                  <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DtorType, <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> CallLoc,</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>                                  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This);</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> emitVirtualInheritanceTables(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD);</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordtype">void</span> setThunkLinkage(llvm::Function *Thunk, <span class="keywordtype">bool</span> ForVTable) {</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="comment">// Allow inlining of thunks by emitting them with available_externally</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="comment">// linkage together with vtables when needed.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span> (ForVTable)</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       Thunk->setLinkage(llvm::GlobalValue::AvailableExternallyLinkage);</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">  183</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *performThisAdjustment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>                                      <span class="keyword">const</span> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a> &TA);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *performReturnAdjustment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ret,</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>                                        <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &RA);</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   StringRef GetPureVirtualCallName() { <span class="keywordflow">return</span> <span class="stringliteral">"__cxa_pure_virtual"</span>; }</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   StringRef GetDeletedVirtualCallName() { <span class="keywordflow">return</span> <span class="stringliteral">"__cxa_deleted_virtual"</span>; }</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> getArrayCookieSizeImpl(<a class="code" href="classclang_1_1QualType.html">QualType</a> elementType);</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *InitializeArrayCookie(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr,</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements,</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>,</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType);</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *readArrayCookieImpl(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>                                    <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocPtr,</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>                                    <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordtype">void</span> EmitGuardedInit(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>                        llvm::GlobalVariable *DeclPtr, <span class="keywordtype">bool</span> PerformInit);</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordtype">void</span> registerGlobalDtor(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>                           llvm::Constant *dtor, llvm::Constant *addr);</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>   llvm::Function *getOrCreateThreadLocalWrapper(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD,</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>                                                 llvm::GlobalVariable *Var);</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordtype">void</span> EmitThreadLocalInitFuncs(</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       <a class="code" href="classllvm_1_1ArrayRef.html">llvm::ArrayRef</a><std::pair<const VarDecl *, llvm::GlobalVariable *> > Decls,</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       llvm::Function *InitFunc);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> EmitThreadLocalDeclRefExpr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE);</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordtype">bool</span> NeedsVTTParameter(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD);</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> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="keyword">class </span>ARMCXXABI : <span class="keyword">public</span> ItaniumCXXABI {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   ARMCXXABI(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM) :</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>     ItaniumCXXABI(CGM, <span class="comment">/* UseARMMethodPtrABI = */</span> <a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>,</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>                   <span class="comment">/* UseARMGuardVarABI = */</span> <a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>) {}</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordtype">bool</span> HasThisReturn(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">return</span> (isa<CXXConstructorDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>()) || (</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>               isa<CXXDestructorDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>()) &&</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>               GD.<a class="code" href="classclang_1_1GlobalDecl.html#acf7986531ee9edab4d776465d455c82f">getDtorType</a>() != <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>));</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   }</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <span class="keywordtype">void</span> EmitReturnFromThunk(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV, <a class="code" href="classclang_1_1QualType.html">QualType</a> ResTy);</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> getArrayCookieSizeImpl(<a class="code" href="classclang_1_1QualType.html">QualType</a> elementType);</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *InitializeArrayCookie(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr,</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements,</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>,</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *readArrayCookieImpl(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocPtr,</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>                                    <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize);</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> };</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> }</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="namespaceclang_1_1CodeGen.html#affd5e26bdb431e095a4cf72929b0161d">  243</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html" title="Implements C++ ABI-specific code generation functions.">CodeGen::CGCXXABI</a> *<a class="code" href="namespaceclang_1_1CodeGen.html#affd5e26bdb431e095a4cf72929b0161d" title="Creates an Itanium-family ABI.">CodeGen::CreateItaniumCXXABI</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordflow">switch</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a775f59ee5320dd4b20abde5d724a43f3" title="Get the C++ ABI currently in use.">getCXXABI</a>().<a class="code" href="classclang_1_1TargetCXXABI.html#aaca8cbc064362d76b5800e4b5ffcacee">getKind</a>()) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="comment">// For IR-generation purposes, there's no significant difference</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="comment">// between the ARM and iOS ABIs.</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TargetCXXABI.html#ace0aba180cab1d18b093a540a11ca4eba6e0bdc095e9710eff7deafab930f12d7">TargetCXXABI::GenericARM</a>:</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TargetCXXABI.html#ace0aba180cab1d18b093a540a11ca4eba8df39aa651b6d2f9c126895f11ddd3de">TargetCXXABI::iOS</a>:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">return</span> <span class="keyword">new</span> ARMCXXABI(CGM);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="comment">// Note that AArch64 uses the generic ItaniumCXXABI class since it doesn't</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <span class="comment">// include the other 32-bit ARM oddities: constructor/destructor return values</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// and array cookies.</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TargetCXXABI.html#ace0aba180cab1d18b093a540a11ca4eba66e5cb24d5e363a525df122b32d30f20">TargetCXXABI::GenericAArch64</a>:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     <span class="keywordflow">return</span> <span class="keyword">new</span> ItaniumCXXABI(CGM, <span class="comment">/* UseARMMethodPtrABI = */</span> <span class="keyword">true</span>,</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>                              <span class="comment">/* UseARMGuardVarABI = */</span> <span class="keyword">true</span>);</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>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TargetCXXABI.html#ace0aba180cab1d18b093a540a11ca4ebacf21c8838eb41d517c3f27c3c9c66ea9">TargetCXXABI::GenericItanium</a>:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a1f86013f3f8d32eec61a74c21d26b2a4">getTargetInfo</a>().<a class="code" href="classclang_1_1TargetInfo.html#a20f1dc9686f1a537a03975c7603774e7" title="Returns the target triple of the primary target.">getTriple</a>().getArch()</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         == llvm::Triple::le32) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="comment">// For PNaCl, use ARM-style method pointers so that PNaCl code</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       <span class="comment">// does not assume anything about the alignment of function</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="comment">// pointers.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="keywordflow">return</span> <span class="keyword">new</span> ItaniumCXXABI(CGM, <span class="comment">/* UseARMMethodPtrABI = */</span> <span class="keyword">true</span>,</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>                                <span class="comment">/* UseARMGuardVarABI = */</span> <span class="keyword">false</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="keywordflow">return</span> <span class="keyword">new</span> ItaniumCXXABI(CGM);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TargetCXXABI.html#ace0aba180cab1d18b093a540a11ca4eba9832ee860c2b6d4050727dda508e5234">TargetCXXABI::Microsoft</a>:</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     llvm_unreachable(<span class="stringliteral">"Microsoft ABI is not Itanium-based"</span>);</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   }</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   llvm_unreachable(<span class="stringliteral">"bad ABI kind"</span>);</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> }</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> </div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> llvm::Type *</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> ItaniumCXXABI::ConvertMemberPointerType(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">if</span> (MPT-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>())</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">return</span> CGM.PtrDiffTy;</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">return</span> llvm::StructType::get(CGM.PtrDiffTy, CGM.PtrDiffTy, <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment">/// In the Itanium and ARM ABIs, method pointers have the form:</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="comment">///   struct { ptrdiff_t ptr; ptrdiff_t adj; } memptr;</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment">/// In the Itanium ABI:</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">///  - method pointers are virtual if (memptr.ptr & 1) is nonzero</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment">///  - the this-adjustment is (memptr.adj)</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="comment">///  - the virtual offset is (memptr.ptr - 1)</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="comment">/// In the ARM ABI:</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment">///  - method pointers are virtual if (memptr.adj & 1) is nonzero</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="comment">///  - the this-adjustment is (memptr.adj >> 1)</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment">///  - the virtual offset is (memptr.ptr)</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment">/// ARM uses 'adj' for the virtual flag because Thumb functions</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">/// may be only single-byte aligned.</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">/// If the member is virtual, the adjusted 'this' pointer points</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> <span class="comment">/// to a vtable pointer from which the virtual offset is applied.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="comment">/// If the member is non-virtual, memptr.ptr is the address of</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="comment">/// the function to call.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&This,</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemFnPtr,</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</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="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a3f0b2f25c4ad91d2e8bd2752d9552199">getPointeeType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     cast<CXXRecordDecl>(MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a74f40efdd2bcca293720459931fba7ea">getClass</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   llvm::FunctionType *FTy = </div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     CGM.getTypes().GetFunctionType(</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       CGM.getTypes().arrangeCXXMethodType(RD, FPT));</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   llvm::Constant *ptrdiff_1 = llvm::ConstantInt::get(CGM.PtrDiffTy, 1);</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   llvm::BasicBlock *FnVirtual = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"memptr.virtual"</span>);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   llvm::BasicBlock *FnNonVirtual = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"memptr.nonvirtual"</span>);</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   llvm::BasicBlock *FnEnd = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"memptr.end"</span>);</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="comment">// Extract memptr.adj, which is in the second field.</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RawAdj = Builder.CreateExtractValue(MemFnPtr, 1, <span class="stringliteral">"memptr.adj"</span>);</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="comment">// Compute the true adjustment.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Adj = RawAdj;</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI)</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     Adj = Builder.CreateAShr(Adj, ptrdiff_1, <span class="stringliteral">"memptr.adj.shifted"</span>);</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="comment">// Apply the adjustment and cast back to the original struct type</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="comment">// for consistency.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr = Builder.CreateBitCast(This, Builder.getInt8PtrTy());</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>   Ptr = Builder.CreateInBoundsGEP(Ptr, Adj);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   This = Builder.CreateBitCast(Ptr, This->getType(), <span class="stringliteral">"this.adjusted"</span>);</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <span class="comment">// Load the function pointer.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *FnAsInt = Builder.CreateExtractValue(MemFnPtr, 0, <span class="stringliteral">"memptr.ptr"</span>);</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>   <span class="comment">// If the LSB in the function pointer is 1, the function pointer points to</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="comment">// a virtual function.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsVirtual;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI)</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     IsVirtual = Builder.CreateAnd(RawAdj, ptrdiff_1);</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     IsVirtual = Builder.CreateAnd(FnAsInt, ptrdiff_1);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   IsVirtual = Builder.CreateIsNotNull(IsVirtual, <span class="stringliteral">"memptr.isvirtual"</span>);</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   Builder.CreateCondBr(IsVirtual, FnVirtual, FnNonVirtual);</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="comment">// In the virtual path, the adjustment left 'This' pointing to the</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="comment">// vtable of the correct base subobject.  The "function pointer" is an</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="comment">// offset within the vtable (+1 for the virtual flag on non-ARM).</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(FnVirtual);</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="comment">// Cast the adjusted this to a pointer to vtable pointer and load.</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   llvm::Type *VTableTy = Builder.getInt8PtrTy();</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTable = Builder.CreateBitCast(This, VTableTy->getPointerTo());</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   VTable = Builder.CreateLoad(VTable, <span class="stringliteral">"memptr.vtable"</span>);</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="comment">// Apply the offset.</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTableOffset = FnAsInt;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="keywordflow">if</span> (!UseARMMethodPtrABI)</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     VTableOffset = Builder.CreateSub(VTableOffset, ptrdiff_1);</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   VTable = Builder.CreateGEP(VTable, VTableOffset);</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="comment">// Load the virtual function to call.</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   VTable = Builder.CreateBitCast(VTable, FTy->getPointerTo()->getPointerTo());</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VirtualFn = Builder.CreateLoad(VTable, <span class="stringliteral">"memptr.virtualfn"</span>);</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd75804886d9542735d748f04de9efa1">EmitBranch</a>(FnEnd);</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="comment">// In the non-virtual path, the function pointer is actually a</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="comment">// function pointer.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(FnNonVirtual);</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NonVirtualFn =</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     Builder.CreateIntToPtr(FnAsInt, FTy->getPointerTo(), <span class="stringliteral">"memptr.nonvirtualfn"</span>);</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="comment">// We're done.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(FnEnd);</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   llvm::PHINode *Callee = Builder.CreatePHI(FTy->getPointerTo(), 2);</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   Callee->addIncoming(VirtualFn, FnVirtual);</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   Callee->addIncoming(NonVirtualFn, FnNonVirtual);</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="keywordflow">return</span> Callee;</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> }</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment"></span></div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> <span class="comment">/// Compute an l-value by applying the given pointer-to-member to a</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="comment">/// base object.</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::EmitMemberDataPointerAddress(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>                                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1Base.html">Base</a>,</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>                                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemPtr,</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   assert(MemPtr->getType() == CGM.PtrDiffTy);</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>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &Builder = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>;</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="keywordtype">unsigned</span> AS = Base->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">// Cast to char*.</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   Base = Builder.CreateBitCast(Base, Builder.getInt8Ty()->getPointerTo(AS));</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <span class="comment">// Apply the offset, which we assume is non-null.</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a> = Builder.CreateInBoundsGEP(Base, MemPtr, <span class="stringliteral">"memptr.offset"</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="comment">// Cast the address to the appropriate pointer type, adopting the</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="comment">// address space of the base pointer.</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   llvm::Type *PType</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a3f0b2f25c4ad91d2e8bd2752d9552199">getPointeeType</a>())->getPointerTo(AS);</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="keywordflow">return</span> Builder.CreateBitCast(Addr, PType);</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> }</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> <span class="comment"></span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> <span class="comment">/// Perform a bitcast, derived-to-base, or base-to-derived member pointer</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> <span class="comment">/// conversion.</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> <span class="comment">/// Bitcast conversions are always a no-op under Itanium.</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> <span class="comment">/// Obligatory offset/adjustment diagram:</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> <span class="comment">///         <-- offset -->          <-- adjustment --></span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> <span class="comment">///   |--------------------------|----------------------|--------------------|</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> <span class="comment">///   ^Derived address point     ^Base address point    ^Member address point</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> <span class="comment">/// So when converting a base member pointer to a derived member pointer,</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> <span class="comment">/// we add the offset to the adjustment because the address point has</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="comment">/// decreased;  and conversely, when converting a derived MP to a base MP</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="comment">/// we subtract the offset from the adjustment because the address point</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="comment">/// has increased.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="comment">/// The standard forbids (at compile time) conversion to and from</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="comment">/// virtual bases, which is why we don't have to consider them here.</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment">/// The standard forbids (at run time) casting a derived MP to a base</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">/// MP when the derived MP does not point to a member of the base.</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">/// This is why -1 is a reasonable choice for null data member</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment">/// pointers.</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> ItaniumCXXABI::EmitMemberPointerConversion(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E,</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src) {</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   assert(E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a> ||</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>          E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a> ||</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>          E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>);</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">// Under Itanium, reinterprets don't require any additional processing.</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>) <span class="keywordflow">return</span> src;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="comment">// Use constant emission if we can.</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="keywordflow">if</span> (isa<llvm::Constant>(src))</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="keywordflow">return</span> EmitMemberPointerConversion(E, cast<llvm::Constant>(src));</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>   llvm::Constant *adj = getMemberPointerAdjustment(E);</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">if</span> (!adj) <span class="keywordflow">return</span> src;</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &Builder = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   <span class="keywordtype">bool</span> isDerivedToBase = (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>);</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *destTy =</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <span class="comment">// For member data pointers, this is just a matter of adding the</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="comment">// offset if the source is non-null.</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="keywordflow">if</span> (destTy-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>()) {</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dst;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">if</span> (isDerivedToBase)</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       dst = Builder.CreateNSWSub(src, adj, <span class="stringliteral">"adj"</span>);</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>       dst = Builder.CreateNSWAdd(src, adj, <span class="stringliteral">"adj"</span>);</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="comment">// Null check.</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *null = llvm::Constant::getAllOnesValue(src->getType());</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isNull = Builder.CreateICmpEQ(src, null, <span class="stringliteral">"memptr.isnull"</span>);</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="keywordflow">return</span> Builder.CreateSelect(isNull, src, dst);</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   }</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> </div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <span class="comment">// The this-adjustment is left-shifted by 1 on ARM.</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI) {</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     uint64_t offset = cast<llvm::ConstantInt>(adj)->getZExtValue();</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     offset <<= 1;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     adj = llvm::ConstantInt::get(adj->getType(), offset);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   }</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *srcAdj = Builder.CreateExtractValue(src, 1, <span class="stringliteral">"src.adj"</span>);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dstAdj;</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   <span class="keywordflow">if</span> (isDerivedToBase)</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     dstAdj = Builder.CreateNSWSub(srcAdj, adj, <span class="stringliteral">"adj"</span>);</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     dstAdj = Builder.CreateNSWAdd(srcAdj, adj, <span class="stringliteral">"adj"</span>);</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> </div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   <span class="keywordflow">return</span> Builder.CreateInsertValue(src, dstAdj, 1);</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> }</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> llvm::Constant *</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> ItaniumCXXABI::EmitMemberPointerConversion(<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E,</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>                                            llvm::Constant *src) {</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   assert(E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a> ||</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>          E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a> ||</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>          E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>);</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   <span class="comment">// Under Itanium, reinterprets don't require any additional processing.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>) <span class="keywordflow">return</span> src;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="comment">// If the adjustment is trivial, we don't need to do anything.</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   llvm::Constant *adj = getMemberPointerAdjustment(E);</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="keywordflow">if</span> (!adj) <span class="keywordflow">return</span> src;</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>   <span class="keywordtype">bool</span> isDerivedToBase = (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>);</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *destTy =</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="comment">// For member data pointers, this is just a matter of adding the</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   <span class="comment">// offset if the source is non-null.</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="keywordflow">if</span> (destTy-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>()) {</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     <span class="comment">// null maps to null.</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     <span class="keywordflow">if</span> (src->isAllOnesValue()) <span class="keywordflow">return</span> src;</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> </div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span> (isDerivedToBase)</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       <span class="keywordflow">return</span> llvm::ConstantExpr::getNSWSub(src, adj);</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       <span class="keywordflow">return</span> llvm::ConstantExpr::getNSWAdd(src, adj);</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   }</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> </div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   <span class="comment">// The this-adjustment is left-shifted by 1 on ARM.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI) {</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     uint64_t offset = cast<llvm::ConstantInt>(adj)->getZExtValue();</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     offset <<= 1;</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     adj = llvm::ConstantInt::get(adj->getType(), offset);</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   }</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   llvm::Constant *srcAdj = llvm::ConstantExpr::getExtractValue(src, 1);</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   llvm::Constant *dstAdj;</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>   <span class="keywordflow">if</span> (isDerivedToBase)</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     dstAdj = llvm::ConstantExpr::getNSWSub(srcAdj, adj);</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     dstAdj = llvm::ConstantExpr::getNSWAdd(srcAdj, adj);</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   <span class="keywordflow">return</span> llvm::ConstantExpr::getInsertValue(src, dstAdj, 1);</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> }</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> llvm::Constant *</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> ItaniumCXXABI::EmitNullMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>   <span class="comment">// Itanium C++ ABI 2.3:</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <span class="comment">//   A NULL pointer is represented as -1.</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <span class="keywordflow">if</span> (MPT-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>()) </div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">return</span> llvm::ConstantInt::get(CGM.PtrDiffTy, -1ULL, <span class="comment">/*isSigned=*/</span><span class="keyword">true</span>);</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>   llvm::Constant *Zero = llvm::ConstantInt::get(CGM.PtrDiffTy, 0);</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   llvm::Constant *Values[2] = { Zero, Zero };</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="keywordflow">return</span> llvm::ConstantStruct::getAnon(Values);</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> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> llvm::Constant *</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> ItaniumCXXABI::EmitMemberDataPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT,</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>                                      <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> offset) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   <span class="comment">// Itanium C++ ABI 2.3:</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   <span class="comment">//   A pointer to data member is an offset from the base address of</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   <span class="comment">//   the class object containing it, represented as a ptrdiff_t</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   <span class="keywordflow">return</span> llvm::ConstantInt::get(CGM.PtrDiffTy, offset.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</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> </div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> llvm::Constant *ItaniumCXXABI::EmitMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="keywordflow">return</span> BuildMemberPointer(MD, <a class="code" href="classclang_1_1CharUnits.html#ae8fbc6063b513b85cd488904994ac8c2" title="Zero - Construct a CharUnits quantity of zero.">CharUnits::Zero</a>());</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> }</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> llvm::Constant *ItaniumCXXABI::BuildMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD,</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>                                                   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="structclang_1_1ThisAdjustment.html" title="A this pointer adjustment.">ThisAdjustment</a>) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   assert(MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>() && <span class="stringliteral">"Member function must not be static!"</span>);</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   MD = MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#aa8d27f88a980ce80102d34870e352738" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>();</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &Types = CGM.getTypes();</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <span class="comment">// Get the function pointer (or index if this is a virtual function).</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   llvm::Constant *MemPtr[2];</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <span class="keywordflow">if</span> (MD->isVirtual()) {</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     uint64_t Index = CGM.getItaniumVTableContext().getMethodVTableIndex(MD);</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> </div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = getContext();</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> PointerWidth =</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       Context.<a class="code" href="classclang_1_1ASTContext.html#a5d5f812ba1100ca9ef1c1a812b2f5a24" title="Convert a size in bits to a size in characters.">toCharUnitsFromBits</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a1f86013f3f8d32eec61a74c21d26b2a4">getTargetInfo</a>().<a class="code" href="classclang_1_1TargetInfo.html#a79ccbed497a604ca6d9dbfd9b8ac548f" title="Return the width of pointers on this target, for the specified address space.">getPointerWidth</a>(0));</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     uint64_t VTableOffset = (Index * PointerWidth.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> </div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     <span class="keywordflow">if</span> (UseARMMethodPtrABI) {</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>       <span class="comment">// ARM C++ ABI 3.2.1:</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>       <span class="comment">//   This ABI specifies that adj contains twice the this</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>       <span class="comment">//   adjustment, plus 1 if the member function is virtual. The</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       <span class="comment">//   least significant bit of adj then makes exactly the same</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="comment">//   discrimination as the least significant bit of ptr does for</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       <span class="comment">//   Itanium.</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>       MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset);</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy,</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>                                          2 * ThisAdjustment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>() + 1);</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="comment">// Itanium C++ ABI 2.3:</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       <span class="comment">//   For a virtual function, [the pointer field] is 1 plus the</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="comment">//   virtual table offset (in bytes) of the function,</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="comment">//   represented as a ptrdiff_t.</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       MemPtr[0] = llvm::ConstantInt::get(CGM.PtrDiffTy, VTableOffset + 1);</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy,</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>                                          ThisAdjustment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     }</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = MD->getType()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>();</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>     llvm::Type *Ty;</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     <span class="comment">// Check whether the function has a computable LLVM signature.</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     <span class="keywordflow">if</span> (Types.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a61b9bc55253d2cfa6660b0c8627acffb">isFuncTypeConvertible</a>(FPT)) {</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <span class="comment">// The function has a computable LLVM signature; use the correct type.</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       Ty = Types.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(Types.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(MD));</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="comment">// Use an arbitrary non-function type to tell GetAddrOfFunction that the</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="comment">// function type is incomplete.</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       Ty = CGM.PtrDiffTy;</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     }</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     llvm::Constant *addr = CGM.GetAddrOfFunction(MD, Ty);</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>     MemPtr[0] = llvm::ConstantExpr::getPtrToInt(addr, CGM.PtrDiffTy);</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     MemPtr[1] = llvm::ConstantInt::get(CGM.PtrDiffTy,</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>                                        (UseARMMethodPtrABI ? 2 : 1) *</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>                                        ThisAdjustment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   }</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   </div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="keywordflow">return</span> llvm::ConstantStruct::getAnon(MemPtr);</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span> }</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> llvm::Constant *ItaniumCXXABI::EmitMemberPointer(<span class="keyword">const</span> <a class="code" href="classclang_1_1APValue.html">APValue</a> &MP,</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>                                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> MPType) {</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = MPType-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *MPD = MP.<a class="code" href="classclang_1_1APValue.html#a09eb8447b018545715ce1eafd688d378">getMemberPointerDecl</a>();</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   <span class="keywordflow">if</span> (!MPD)</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="keywordflow">return</span> EmitNullMemberPointer(MPT);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span> </div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> ThisAdjustment = getMemberPointerPathAdjustment(MP);</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span> </div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<CXXMethodDecl>(MPD))</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordflow">return</span> BuildMemberPointer(MD, ThisAdjustment);</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>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> FieldOffset =</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     getContext().toCharUnitsFromBits(getContext().<a class="code" href="RecordLayoutBuilder_8cpp.html#ad663c047027a7ce6a179bcd23e2d6397">getFieldOffset</a>(MPD));</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   <span class="keywordflow">return</span> EmitMemberDataPointer(MPT, ThisAdjustment + FieldOffset);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> }</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="comment"></span></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span> <span class="comment">/// The comparison algorithm is pretty easy: the member pointers are</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="comment">/// the same if they're either bitwise identical *or* both null.</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="comment">/// ARM is different here only because null-ness is more complicated.</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span> ItaniumCXXABI::EmitMemberPointerComparison(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *L,</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>                                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *R,</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT,</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>                                            <span class="keywordtype">bool</span> Inequality) {</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &Builder = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>;</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> </div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   llvm::ICmpInst::Predicate Eq;</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   llvm::Instruction::BinaryOps <a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">And</a>, Or;</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="keywordflow">if</span> (Inequality) {</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     Eq = llvm::ICmpInst::ICMP_NE;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     And = llvm::Instruction::Or;</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     Or = <a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">llvm::Instruction::And</a>;</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     Eq = llvm::ICmpInst::ICMP_EQ;</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     And = <a class="code" href="namespaceclang_1_1prec.html#a9bfbe31f4770359ea44ad42e7c7ed8ffa9d7a7abf42694a4a2d4f1f322cf62d5c">llvm::Instruction::And</a>;</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     Or = llvm::Instruction::Or;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   }</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> </div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <span class="comment">// Member data pointers are easy because there's a unique null</span></div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="comment">// value, so it just comes down to bitwise equality.</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordflow">if</span> (MPT-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>())</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <span class="keywordflow">return</span> Builder.CreateICmp(Eq, L, R);</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span> </div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <span class="comment">// For member function pointers, the tautologies are more complex.</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="comment">// The Itanium tautology is:</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="comment">//   (L == R) <==> (L.ptr == R.ptr && (L.ptr == 0 || L.adj == R.adj))</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="comment">// The ARM tautology is:</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <span class="comment">//   (L == R) <==> (L.ptr == R.ptr &&</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   <span class="comment">//                  (L.adj == R.adj ||</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   <span class="comment">//                   (L.ptr == 0 && ((L.adj|R.adj) & 1) == 0)))</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="comment">// The inequality tautologies have exactly the same structure, except</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="comment">// applying De Morgan's laws.</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">  678</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LPtr = Builder.CreateExtractValue(L, 0, <span class="stringliteral">"lhs.memptr.ptr"</span>);</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RPtr = Builder.CreateExtractValue(R, 0, <span class="stringliteral">"rhs.memptr.ptr"</span>);</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span> </div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="comment">// This condition tests whether L.ptr == R.ptr.  This must always be</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="comment">// true for equality to hold.</span></div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *PtrEq = Builder.CreateICmp(Eq, LPtr, RPtr, <span class="stringliteral">"cmp.ptr"</span>);</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="comment">// This condition, together with the assumption that L.ptr == R.ptr,</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="comment">// tests whether the pointers are both null.  ARM imposes an extra</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="comment">// condition.</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(LPtr->getType());</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EqZero = Builder.CreateICmp(Eq, LPtr, Zero, <span class="stringliteral">"cmp.ptr.null"</span>);</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> </div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   <span class="comment">// This condition tests whether L.adj == R.adj.  If this isn't</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="comment">// true, the pointers are unequal unless they're both null.</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LAdj = Builder.CreateExtractValue(L, 1, <span class="stringliteral">"lhs.memptr.adj"</span>);</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RAdj = Builder.CreateExtractValue(R, 1, <span class="stringliteral">"rhs.memptr.adj"</span>);</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AdjEq = Builder.CreateICmp(Eq, LAdj, RAdj, <span class="stringliteral">"cmp.adj"</span>);</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>   <span class="comment">// Null member function pointers on ARM clear the low bit of Adj,</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   <span class="comment">// so the zero condition has to check that neither low bit is set.</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI) {</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *One = llvm::ConstantInt::get(LPtr->getType(), 1);</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> </div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     <span class="comment">// Compute (l.adj | r.adj) & 1 and test it against zero.</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OrAdj = Builder.CreateOr(LAdj, RAdj, <span class="stringliteral">"or.adj"</span>);</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OrAdjAnd1 = Builder.CreateAnd(OrAdj, One);</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OrAdjAnd1EqZero = Builder.CreateICmp(Eq, OrAdjAnd1, Zero,</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>                                                       <span class="stringliteral">"cmp.or.adj"</span>);</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     EqZero = Builder.CreateBinOp(And, EqZero, OrAdjAnd1EqZero);</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</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>   <span class="comment">// Tie together all our conditions.</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Result = Builder.CreateBinOp(Or, EqZero, AdjEq);</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   Result = Builder.CreateBinOp(And, PtrEq, Result,</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>                                Inequality ? <span class="stringliteral">"memptr.ne"</span> : <span class="stringliteral">"memptr.eq"</span>);</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> }</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> </div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span> ItaniumCXXABI::EmitMemberPointerIsNotNull(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemPtr,</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &Builder = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>;</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="comment"></span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span> <span class="comment">  /// For member data pointers, this is just a check against -1.</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span> <span class="comment"></span>  <span class="keywordflow">if</span> (MPT-><a class="code" href="classclang_1_1MemberPointerType.html#af216918a1df6922c046957d94e6b6b27">isMemberDataPointer</a>()) {</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     assert(MemPtr->getType() == CGM.PtrDiffTy);</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NegativeOne =</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>       llvm::Constant::getAllOnesValue(MemPtr->getType());</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     <span class="keywordflow">return</span> Builder.CreateICmpNE(MemPtr, NegativeOne, <span class="stringliteral">"memptr.tobool"</span>);</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   }</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   </div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="comment">// In Itanium, a member function pointer is not null if 'ptr' is not null.</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr = Builder.CreateExtractValue(MemPtr, 0, <span class="stringliteral">"memptr.ptr"</span>);</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> </div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>   llvm::Constant *Zero = llvm::ConstantInt::get(Ptr->getType(), 0);</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Result = Builder.CreateICmpNE(Ptr, Zero, <span class="stringliteral">"memptr.tobool"</span>);</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span> </div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="comment">// On ARM, a member function pointer is also non-null if the low bit of 'adj'</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="comment">// (the virtual bit) is set.</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   <span class="keywordflow">if</span> (UseARMMethodPtrABI) {</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     llvm::Constant *One = llvm::ConstantInt::get(Ptr->getType(), 1);</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Adj = Builder.CreateExtractValue(MemPtr, 1, <span class="stringliteral">"memptr.adj"</span>);</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VirtualBit = Builder.CreateAnd(Adj, One, <span class="stringliteral">"memptr.virtualbit"</span>);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsVirtual = Builder.CreateICmpNE(VirtualBit, Zero,</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>                                                   <span class="stringliteral">"memptr.isvirtual"</span>);</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>     Result = Builder.CreateOr(Result, IsVirtual);</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>   }</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span> </div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordflow">return</span> Result;</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"></span></div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span> <span class="comment">/// The Itanium ABI requires non-zero initialization only for data</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> <span class="comment">/// member pointers, for which '0' is a valid offset.</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span> <span class="comment"></span><span class="keywordtype">bool</span> ItaniumCXXABI::isZeroInitializable(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT) {</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="keywordflow">return</span> MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a3f0b2f25c4ad91d2e8bd2752d9552199">getPointeeType</a>()-><a class="code" href="classclang_1_1Type.html#af0ae1f40cbbc07fabfefc86af91072e3">isFunctionType</a>();</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> }</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> <span class="comment"></span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment">/// The Itanium ABI always places an offset to the complete object</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span> <span class="comment">/// at entry -2 in the vtable.</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::adjustToCompleteObject(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                                                    <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ptr,</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>                                                    <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="comment">// Grab the vtable pointer as an intptr_t*.</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *vtable = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">GetVTablePtr</a>(ptr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>->getPointerTo());</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span> </div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   <span class="comment">// Track back to entry -2 and pull out the offset there.</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *offsetPtr = </div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(vtable, -2, <span class="stringliteral">"complete-offset.ptr"</span>);</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   llvm::LoadInst *offset = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(offsetPtr);</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>   offset->setAlignment(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#abae4acd5bac9daf9bffb74d6ef40d4a6">PointerAlignInBytes</a>);</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>   <span class="comment">// Apply the offset.</span></div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   ptr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ptr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(ptr, offset);</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span> }</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span> </div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span> ItaniumCXXABI::GetVirtualBaseClassOffset(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl,</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseClassDecl) {</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTablePtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">GetVTablePtr</a>(This, CGM.Int8PtrTy);</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> VBaseOffsetOffset =</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>       CGM.getItaniumVTableContext().getVirtualBaseOffsetOffset(ClassDecl,</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>                                                                BaseClassDecl);</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> </div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VBaseOffsetPtr =</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_64(VTablePtr, VBaseOffsetOffset.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(),</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>                                    <span class="stringliteral">"vbase.offset.ptr"</span>);</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>   VBaseOffsetPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(VBaseOffsetPtr,</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>                                              CGM.PtrDiffTy->getPointerTo());</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span> </div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VBaseOffset =</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(VBaseOffsetPtr, <span class="stringliteral">"vbase.offset"</span>);</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span> </div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>   <span class="keywordflow">return</span> VBaseOffset;</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span> }</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> <span class="comment"></span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span> <span class="comment">/// The generic ABI passes 'this', plus a VTT if it's initializing a</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span> <span class="comment">/// base subobject.</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span> <span class="comment"></span><span class="keywordtype">void</span> ItaniumCXXABI::BuildConstructorSignature(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Ctor,</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>                                               <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a>,</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>                                               <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> &ResTy,</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>                                 <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &ArgTys) {</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = getContext();</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span> </div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="comment">// 'this' parameter is already there, as well as 'this' return if</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>   <span class="comment">// HasThisReturn(GlobalDecl(Ctor, Type)) is true</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> </div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>   <span class="comment">// Check if we need to add a VTT parameter (which has type void **).</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>   <span class="keywordflow">if</span> (Type == <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a> && Ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#ae9cacadb059ecb46224d537be149d565" title="Retrieves the number of virtual base classes of this class.">getNumVBases</a>() != 0)</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>     ArgTys.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>));</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</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> <span class="keywordtype">void</span> ItaniumCXXABI::EmitCXXConstructors(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D) {</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   <span class="comment">// Just make sure we're in sync with TargetCXXABI.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   assert(CGM.getTarget().getCXXABI().hasConstructorVariants());</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span> </div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="comment">// The constructor used for constructing this as a complete class;</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="comment">// constucts the virtual bases, then calls the base constructor.</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="keywordflow">if</span> (!D-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#a25efa8396ce5a920bda100caf5173e3f" title="Determine whether this class has a pure virtual function.">isAbstract</a>()) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <span class="comment">// We don't need to emit the complete ctor if the class is abstract.</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>     CGM.EmitGlobal(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>));</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   }</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span> </div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>   <span class="comment">// The constructor used for constructing this as a base class;</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>   <span class="comment">// ignores virtual bases.</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   CGM.EmitGlobal(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>));</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"></span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> <span class="comment">/// The generic ABI passes 'this', plus a VTT if it's destroying a</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> <span class="comment">/// base subobject.</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> <span class="comment"></span><span class="keywordtype">void</span> ItaniumCXXABI::BuildDestructorSignature(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>                                              <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> Type,</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>                                              <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> &ResTy,</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>                                 <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CanQualType></a> &ArgTys) {</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = getContext();</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> </div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>   <span class="comment">// 'this' parameter is already there, as well as 'this' return if</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   <span class="comment">// HasThisReturn(GlobalDecl(Dtor, Type)) is true</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span> </div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>   <span class="comment">// Check if we need to add a VTT parameter (which has type void **).</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>   <span class="keywordflow">if</span> (Type == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a> && Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#ae9cacadb059ecb46224d537be149d565" title="Retrieves the number of virtual base classes of this class.">getNumVBases</a>() != 0)</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     ArgTys.push_back(Context.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>));</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> </div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="keywordtype">void</span> ItaniumCXXABI::EmitCXXDestructors(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D) {</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>   <span class="comment">// The destructor in a virtual table is always a 'deleting'</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   <span class="comment">// destructor, which calls the complete destructor and then uses the</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   <span class="comment">// appropriate operator delete.</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1CXXMethodDecl.html#abcaff495a9ded37cbe66b06973308b62">isVirtual</a>())</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     CGM.EmitGlobal(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>));</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> </div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>   <span class="comment">// The destructor used for destructing this as a most-derived class;</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   <span class="comment">// call the base destructor and then destructs any virtual bases.</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   CGM.EmitGlobal(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>));</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> </div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   <span class="comment">// The destructor used for destructing this as a base class; ignores</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <span class="comment">// virtual bases.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   CGM.EmitGlobal(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>));</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span> }</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> </div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> <span class="keywordtype">void</span> ItaniumCXXABI::BuildInstanceFunctionParams(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>                                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> &ResTy,</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>                                                 <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Params) {<span class="comment"></span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span> <span class="comment">  /// Create the 'this' variable.</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> <span class="comment"></span>  BuildThisParam(CGF, Params);</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = cast<CXXMethodDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>());</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>   assert(MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>());</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> </div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>   <span class="comment">// Check if we need a VTT parameter as well.</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   <span class="keywordflow">if</span> (NeedsVTTParameter(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>)) {</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = getContext();</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span> </div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="comment">// FIXME: avoid the fake decl</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T = Context.<a class="code" href="classclang_1_1ASTContext.html#a3574cad49cba0fc48ab7b4c953e7e31e" title="Return the uniqued reference to the type for a pointer to the specified type.">getPointerType</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> *VTTDecl</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       = <a class="code" href="classclang_1_1ImplicitParamDecl.html#add66002b6973118b8203af49374faf84">ImplicitParamDecl::Create</a>(Context, 0, MD-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>                                   &Context.<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"vtt"</span>), T);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     Params.push_back(VTTDecl);</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     getVTTDecl(CGF) = VTTDecl;</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> }</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="keywordtype">void</span> ItaniumCXXABI::EmitInstanceFunctionProlog(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {<span class="comment"></span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> <span class="comment">  /// Initialize the 'this' slot.</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> <span class="comment"></span>  EmitThisParam(CGF);</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span> <span class="comment"></span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <span class="comment">  /// Initialize the 'vtt' slot if needed.</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span> <span class="comment"></span>  <span class="keywordflow">if</span> (getVTTDecl(CGF)) {</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>     getVTTValue(CGF)</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a82621c86a6f95d33ae07868357749654" title="GetAddrOfLocalVar - Return the address of a local variable.">GetAddrOfLocalVar</a>(getVTTDecl(CGF)),</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>                                <span class="stringliteral">"vtt"</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="comment"></span></div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span> <span class="comment">  /// If this is a function that the ABI specifies returns 'this', initialize</span></div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span> <span class="comment">  /// the return slot to 'this' at the start of the function.</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span> <span class="comment">  /// Unlike the setting of return types, this is done within the ABI</span></div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span> <span class="comment">  /// implementation instead of by clients of CGCXXABI because:</span></div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span> <span class="comment">  /// 1) getThisValue is currently protected</span></div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span> <span class="comment">  /// 2) in theory, an ABI could implement 'this' returns some other way;</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span> <span class="comment">  ///    HasThisReturn only specifies a contract, not the implementation</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> <span class="comment"></span>  <span class="keywordflow">if</span> (HasThisReturn(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>))</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(getThisValue(CGF), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span> }</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> <span class="keywordtype">void</span> ItaniumCXXABI::EmitConstructorCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *D,</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>                                         <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> Type,</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>                                         <span class="keywordtype">bool</span> ForVirtualBase, <span class="keywordtype">bool</span> Delegating,</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgBeg,</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgEnd) {</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTT = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad7641cb509db3ec241eb5b8176ee0474">GetVTTParameter</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(D, Type), ForVirtualBase,</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>                                          Delegating);</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> VTTTy = getContext().getPointerType(getContext().VoidPtrTy);</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee = CGM.GetAddrOfCXXConstructor(D, Type);</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span> </div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>   <span class="comment">// FIXME: Provide a source location here.</span></div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(D, <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>(), Callee, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>                         This, VTT, VTTTy, ArgBeg, ArgEnd);</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> </div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> <span class="keywordtype">void</span> ItaniumCXXABI::emitVTableDefinitions(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html">CodeGenVTables</a> &CGVT,</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD) {</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>   llvm::GlobalVariable *VTable = getAddrOfVTable(RD, <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a>());</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>   <span class="keywordflow">if</span> (VTable->hasInitializer())</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span> </div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   <a class="code" href="classclang_1_1ItaniumVTableContext.html">ItaniumVTableContext</a> &VTContext = CGM.getItaniumVTableContext();</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VTableLayout.html">VTableLayout</a> &VTLayout = VTContext.<a class="code" href="classclang_1_1ItaniumVTableContext.html#ab107e2accc02aa4f9386442d857346a1">getVTableLayout</a>(RD);</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>   llvm::GlobalVariable::LinkageTypes <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a> = CGM.getVTableLinkage(RD);</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span> </div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   <span class="comment">// Create and set the initializer.</span></div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>   llvm::Constant *Init = CGVT.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html#a3c3e7f1dc068618be69110aeb7ed7ec0">CreateVTableInitializer</a>(</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       RD, VTLayout.<a class="code" href="classclang_1_1VTableLayout.html#ab86adb719e54f1fe90c5bc184d220f6b">vtable_component_begin</a>(), VTLayout.<a class="code" href="classclang_1_1VTableLayout.html#a309375a4b08ad1fd7189ec75b94ffadc">getNumVTableComponents</a>(),</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>       VTLayout.<a class="code" href="classclang_1_1VTableLayout.html#a35cdfe970de2afdb6d87591e451f6cd8">vtable_thunk_begin</a>(), VTLayout.<a class="code" href="classclang_1_1VTableLayout.html#a65d521d92812ea5c6d0c16f3d16ab7d1">getNumVTableThunks</a>());</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   VTable->setInitializer(Init);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span> </div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   <span class="comment">// Set the correct linkage.</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   VTable->setLinkage(Linkage);</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span> </div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   <span class="comment">// Set the right visibility.</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>   CGM.setTypeVisibility(VTable, RD, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a83e0bdf7e055b9b39ca6653fdd4da6a3a342a23591fce5a3c5f48937132e4da1b">CodeGenModule::TVK_ForVTable</a>);</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>   <span class="comment">// If this is the magic class __cxxabiv1::__fundamental_type_info,</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>   <span class="comment">// we will emit the typeinfo for the fundamental types. This is the</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>   <span class="comment">// same behaviour as GCC.</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = RD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>();</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() &&</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>       RD-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()-><a class="code" href="classclang_1_1IdentifierInfo.html#a6cc09d0b74aca49bbdb23bcc4c35cf82" title="Return true if this is the identifier for the specified string.">isStr</a>(<span class="stringliteral">"__fundamental_type_info"</span>) &&</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       isa<NamespaceDecl>(DC) && cast<NamespaceDecl>(DC)->getIdentifier() &&</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       cast<NamespaceDecl>(DC)->getIdentifier()->isStr(<span class="stringliteral">"__cxxabiv1"</span>) &&</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>       DC-><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>()-><a class="code" href="classclang_1_1DeclContext.html#add710d53ebeab05385a08e978862c149">isTranslationUnit</a>())</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     CGM.EmitFundamentalRTTIDescriptors();</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span> }</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::getVTableAddressPointInStructor(</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VTableClass, <a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a> Base,</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *NearestVBase, <span class="keywordtype">bool</span> &NeedsVirtualOffset) {</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   <span class="keywordtype">bool</span> NeedsVTTParam = CGM.getCXXABI().NeedsVTTParameter(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>);</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   NeedsVirtualOffset = (NeedsVTTParam && NearestVBase);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTableAddressPoint;</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>   <span class="keywordflow">if</span> (NeedsVTTParam && (Base.<a class="code" href="classclang_1_1BaseSubobject.html#a6cf1870b3f6f1dcf5660eb36cf2fa408" title="getBase - Returns the base class declaration.">getBase</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#ae9cacadb059ecb46224d537be149d565" title="Retrieves the number of virtual base classes of this class.">getNumVBases</a>() || NearestVBase)) {</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     <span class="comment">// Get the secondary vpointer index.</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     uint64_t VirtualPointerIndex =</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>         CGM.getVTables().getSecondaryVirtualPointerIndex(VTableClass, Base);</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span> <span class="comment"></span></div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> <span class="comment">    /// Load the VTT.</span></div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> <span class="comment"></span>    <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTT = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a46a4b6b54527d3fff0380e943580addf">LoadCXXVTT</a>();</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="keywordflow">if</span> (VirtualPointerIndex)</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       VTT = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(VTT, VirtualPointerIndex);</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span> </div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <span class="comment">// And load the address point from the VTT.</span></div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>     VTableAddressPoint = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(VTT);</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     llvm::Constant *VTable =</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>         CGM.getCXXABI().getAddrOfVTable(VTableClass, <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a>());</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     uint64_t AddressPoint = CGM.getItaniumVTableContext()</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>                                 .getVTableLayout(VTableClass)</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>                                 .getAddressPoint(Base);</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>     VTableAddressPoint =</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP2_64(VTable, 0, AddressPoint);</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>   }</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span> </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   <span class="keywordflow">return</span> VTableAddressPoint;</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span> }</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span> </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span> llvm::Constant *ItaniumCXXABI::getVTableAddressPointForConstExpr(</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a> Base, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VTableClass) {</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   llvm::Constant *VTable = getAddrOfVTable(VTableClass, <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a>());</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> </div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>   <span class="comment">// Find the appropriate vtable within the vtable group.</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>   uint64_t AddressPoint = CGM.getItaniumVTableContext()</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>                               .getVTableLayout(VTableClass)</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>                               .getAddressPoint(Base);</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Indices[] = {</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     llvm::ConstantInt::get(CGM.Int64Ty, 0),</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>     llvm::ConstantInt::get(CGM.Int64Ty, AddressPoint)</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>   };</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   <span class="keywordflow">return</span> llvm::ConstantExpr::getInBoundsGetElementPtr(VTable, Indices);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> }</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>                                                      <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> VPtrOffset) {</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>   assert(VPtrOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>() && <span class="stringliteral">"Itanium ABI only supports zero vptr offsets"</span>);</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>   llvm::GlobalVariable *&VTable = VTables[RD];</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>   <span class="keywordflow">if</span> (VTable)</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     <span class="keywordflow">return</span> VTable;</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   <span class="comment">// Queue up this v-table for possible deferred emission.</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>   CGM.addDeferredVTable(RD);</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> OutName;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   llvm::raw_svector_ostream Out(OutName);</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>   getMangleContext().mangleCXXVTable(RD, Out);</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>   Out.flush();</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>   StringRef Name = OutName.str();</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> </div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>   <a class="code" href="classclang_1_1ItaniumVTableContext.html">ItaniumVTableContext</a> &VTContext = CGM.getItaniumVTableContext();</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>   llvm::ArrayType *<a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> = llvm::ArrayType::get(</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       CGM.Int8PtrTy, VTContext.<a class="code" href="classclang_1_1ItaniumVTableContext.html#ab107e2accc02aa4f9386442d857346a1">getVTableLayout</a>(RD).<a class="code" href="classclang_1_1VTableLayout.html#a309375a4b08ad1fd7189ec75b94ffadc">getNumVTableComponents</a>());</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>   VTable = CGM.CreateOrReplaceCXXRuntimeVariable(</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       Name, ArrayType, <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6abf301cfab14d2b8fac6176f45e6bb54a" title="External linkage, which indicates that the entity can be referred to from other translation units...">llvm::GlobalValue::ExternalLinkage</a>);</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>   VTable->setUnnamedAddr(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>   <span class="keywordflow">return</span> VTable;</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> </div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::getVirtualFunctionPointer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>                                                       <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD,</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>                                                       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>                                                       llvm::Type *Ty) {</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>   GD = GD.<a class="code" href="classclang_1_1GlobalDecl.html#afe9cece001fcb63f1c922fca581bd855">getCanonicalDecl</a>();</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   Ty = Ty->getPointerTo()->getPointerTo();</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTable = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">GetVTablePtr</a>(This, Ty);</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>   uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VFuncPtr =</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(VTable, VTableIndex, <span class="stringliteral">"vfn"</span>);</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(VFuncPtr);</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> }</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="keywordtype">void</span> ItaniumCXXABI::EmitVirtualDestructorCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>                                               <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DtorType,</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> CallLoc,</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>                                               <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This) {</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>   assert(DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a> || DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>);</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *FInfo</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     = &CGM.getTypes().arrangeCXXDestructor(Dtor, DtorType);</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   llvm::Type *Ty = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(*FInfo);</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee =</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>       getVirtualFunctionPointer(CGF, <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(Dtor, DtorType), This, Ty);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> </div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(Dtor, CallLoc, Callee, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), This,</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>                         <span class="comment">/*ImplicitParam=*/</span>0, <a class="code" href="classclang_1_1QualType.html">QualType</a>(), 0, 0);</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> }</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="keywordtype">void</span> ItaniumCXXABI::emitVirtualInheritanceTables(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD) {</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html">CodeGenVTables</a> &VTables = CGM.getVTables();</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>   llvm::GlobalVariable *VTT = VTables.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html#a01982a16b7b39e0e8ba9e43d75203a3a" title="GetAddrOfVTable - Get the address of the VTT for the given record decl.">GetAddrOfVTT</a>(RD);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   VTables.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html#afc8d265474dfef0c120c92a82d3a6dd5" title="EmitVTTDefinition - Emit the definition of the given vtable.">EmitVTTDefinition</a>(VTT, CGM.getVTableLinkage(RD), RD);</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> }</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div>
+<div class="line"><a name="l01071"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae8114f7a111aebb29e38dfcf0dc9f669"> 1071</a></span> <span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae8114f7a111aebb29e38dfcf0dc9f669">performTypeAdjustment</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>                                           int64_t NonVirtualAdjustment,</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>                                           int64_t VirtualAdjustment,</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>                                           <span class="keywordtype">bool</span> IsReturnAdjustment) {</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keywordflow">if</span> (!NonVirtualAdjustment && !VirtualAdjustment)</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     <span class="keywordflow">return</span> Ptr;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   llvm::Type *Int8PtrTy = CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>;</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr, Int8PtrTy);</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="keywordflow">if</span> (NonVirtualAdjustment && !IsReturnAdjustment) {</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <span class="comment">// Perform the non-virtual adjustment for a base-to-derived cast.</span></div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(V, NonVirtualAdjustment);</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   }</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   <span class="keywordflow">if</span> (VirtualAdjustment) {</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     llvm::Type *PtrDiffTy =</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abdf7588b14d9fa2a1ee40900a0253885" title="Return the unique type for "ptrdiff_t" (C99 7.17) defined in <stddef.h>. Pointer - pointer requires t...">getPointerDiffType</a>());</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>     <span class="comment">// Perform the virtual adjustment.</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTablePtrPtr =</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, Int8PtrTy->getPointerTo());</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> </div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTablePtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(VTablePtrPtr);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OffsetPtr =</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(VTablePtr, VirtualAdjustment);</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     OffsetPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(OffsetPtr, PtrDiffTy->getPointerTo());</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>     <span class="comment">// Load the adjustment offset from the vtable.</span></div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(OffsetPtr);</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     <span class="comment">// Adjust our pointer.</span></div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(V, Offset);</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>   <span class="keywordflow">if</span> (NonVirtualAdjustment && IsReturnAdjustment) {</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>     <span class="comment">// Perform the non-virtual adjustment for a derived-to-base cast.</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(V, NonVirtualAdjustment);</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   }</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   <span class="comment">// Cast back to the original type.</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, Ptr->getType());</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> }</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::performThisAdjustment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>                                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>                                                   <span class="keyword">const</span> ThisAdjustment &TA) {</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="keywordflow">return</span> <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae8114f7a111aebb29e38dfcf0dc9f669">performTypeAdjustment</a>(CGF, This, TA.<a class="code" href="structclang_1_1ThisAdjustment.html#acf03d76cb406ada30382b64d9cdeaec4" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>,</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>                                TA.<a class="code" href="structclang_1_1ThisAdjustment.html#a47e103bb40fd179a2cd0defb4d17ef6a">Virtual</a>.<a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#acba5b216c211051275b0649e6d514e1c">Itanium</a>.<a class="code" href="unionclang_1_1ThisAdjustment_1_1VirtualAdjustment.html#ab7a13dcc3e35c04de684fe86d1b8c1ac" title="The offset (in bytes), relative to the address point, of the virtual call offset.">VCallOffsetOffset</a>,</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>                                <span class="comment">/*IsReturnAdjustment=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> }</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> ItaniumCXXABI::performReturnAdjustment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ret,</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>                                        <span class="keyword">const</span> <a class="code" href="structclang_1_1ReturnAdjustment.html" title="A return adjustment.">ReturnAdjustment</a> &RA) {</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="keywordflow">return</span> <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae8114f7a111aebb29e38dfcf0dc9f669">performTypeAdjustment</a>(CGF, Ret, RA.<a class="code" href="structclang_1_1ReturnAdjustment.html#a7b7ac39e8bd7fe15f91b640d2bd945b9" title="The non-virtual adjustment from the derived object to its nearest virtual base.">NonVirtual</a>,</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>                                RA.<a class="code" href="structclang_1_1ReturnAdjustment.html#afd832d0909cb5b2e21e1e7c5985635f2">Virtual</a>.<a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#a95bad5ee9fe2be2dee53cd22138df427">Itanium</a>.<a class="code" href="unionclang_1_1ReturnAdjustment_1_1VirtualAdjustment.html#ad684fa5137bbd2d98e3d9be6c59d0577" title="The offset (in bytes), relative to the address point of the virtual base class offset.">VBaseOffsetOffset</a>,</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>                                <span class="comment">/*IsReturnAdjustment=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> }</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> </div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> <span class="keywordtype">void</span> ARMCXXABI::EmitReturnFromThunk(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV, <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType) {</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   <span class="keywordflow">if</span> (!isa<CXXDestructorDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a>.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>()))</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">return</span> ItaniumCXXABI::EmitReturnFromThunk(CGF, RV, ResultType);</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">// Destructor thunks in the ARM ABI have indeterminate results.</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   llvm::Type *T =</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     cast<llvm::PointerType>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Undef = <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(llvm::UndefValue::get(T));</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   <span class="keywordflow">return</span> ItaniumCXXABI::EmitReturnFromThunk(CGF, Undef, ResultType);</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> }</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> </div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="comment">/************************** Array allocation cookies **************************/</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> ItaniumCXXABI::getArrayCookieSizeImpl(<a class="code" href="classclang_1_1QualType.html">QualType</a> elementType) {</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   <span class="comment">// The array cookie is a size_t; pad that up to the element alignment.</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   <span class="comment">// The cookie is actually right-justified in that space.</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>   <span class="keywordflow">return</span> std::max(<a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(CGM.SizeSizeInBytes),</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>                   CGM.getContext().getTypeAlignInChars(elementType));</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> }</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::InitializeArrayCookie(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>                                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr,</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>                                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements,</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>                                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>,</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>                                                   <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType) {</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>   assert(requiresArrayCookie(expr));</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   <span class="keywordtype">unsigned</span> AS = NewPtr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> </div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx = getContext();</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SizeTy = Ctx.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>();</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> SizeSize = Ctx.<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(SizeTy);</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> </div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>   <span class="comment">// The size of the cookie.</span></div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> CookieSize =</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     std::max(SizeSize, Ctx.<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(ElementType));</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   assert(CookieSize == getArrayCookieSizeImpl(ElementType));</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   <span class="comment">// Compute an offset to the cookie.</span></div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CookiePtr = NewPtr;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> CookieOffset = CookieSize - SizeSize;</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="keywordflow">if</span> (!CookieOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>())</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>     CookiePtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(CookiePtr,</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>                                                  CookieOffset.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> </div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <span class="comment">// Write the number of elements into the appropriate slot.</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElementsPtr</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(CookiePtr,</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>                                 CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(SizeTy)->getPointerTo(AS));</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(NumElements, NumElementsPtr);</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   <span class="comment">// Finally, compute a pointer to the actual data buffer by skipping</span></div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>   <span class="comment">// over the cookie completely.</span></div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(NewPtr,</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>                                                 CookieSize.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());  </div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> }</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ItaniumCXXABI::readArrayCookieImpl(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>                                                 <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocPtr,</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>                                                 <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize) {</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>   <span class="comment">// The element size is right-justified in the cookie.</span></div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElementsPtr = allocPtr;</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> numElementsOffset =</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     cookieSize - <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a75d451fc22c19dd3fe57cde04086e333">SizeSizeInBytes</a>);</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   <span class="keywordflow">if</span> (!numElementsOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>())</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     numElementsPtr =</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(numElementsPtr,</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>                                              numElementsOffset.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   <span class="keywordtype">unsigned</span> AS = allocPtr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   numElementsPtr = </div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(numElementsPtr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>->getPointerTo(AS));</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(numElementsPtr);</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> }</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> </div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> ARMCXXABI::getArrayCookieSizeImpl(<a class="code" href="classclang_1_1QualType.html">QualType</a> elementType) {</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="comment">// ARM says that the cookie is always:</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   <span class="comment">//   struct array_cookie {</span></div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   <span class="comment">//     std::size_t element_size; // element_size != 0</span></div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   <span class="comment">//     std::size_t element_count;</span></div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   <span class="comment">//   };</span></div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="comment">// But the base ABI doesn't give anything an alignment greater than</span></div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>   <span class="comment">// 8, so we can dismiss this as typical ABI-author blindness to</span></div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   <span class="comment">// actual language complexity and round up to the element alignment.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keywordflow">return</span> std::max(<a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(2 * CGM.SizeSizeInBytes),</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>                   CGM.getContext().getTypeAlignInChars(elementType));</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> }</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> </div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ARMCXXABI::InitializeArrayCookie(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>                                               <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *newPtr,</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>                                               <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements,</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *expr,</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>                                               <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType) {</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>   assert(requiresArrayCookie(expr));</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> </div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>   <span class="comment">// NewPtr is a char*, but we generalize to arbitrary addrspaces.</span></div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   <span class="keywordtype">unsigned</span> AS = newPtr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> </div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="comment">// The cookie is always at the start of the buffer.</span></div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *cookie = newPtr;</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> </div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   <span class="comment">// The first element is the element size.</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   cookie = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(cookie, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>->getPointerTo(AS));</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *elementSize = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>,</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>                  getContext().getTypeSizeInChars(elementType).getQuantity());</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(elementSize, cookie);</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> </div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   <span class="comment">// The second element is the element count.</span></div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   cookie = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_32(cookie, 1);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(numElements, cookie);</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> </div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   <span class="comment">// Finally, compute a pointer to the actual data buffer by skipping</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>   <span class="comment">// over the cookie completely.</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize = ARMCXXABI::getArrayCookieSizeImpl(elementType);</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(newPtr,</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>                                                 cookieSize.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</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> </div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ARMCXXABI::readArrayCookieImpl(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocPtr,</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>                                             <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize) {</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <span class="comment">// The number of elements is at offset sizeof(size_t) relative to</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   <span class="comment">// the allocated pointer.</span></div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElementsPtr</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>     = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(allocPtr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a75d451fc22c19dd3fe57cde04086e333">SizeSizeInBytes</a>);</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>   <span class="keywordtype">unsigned</span> AS = allocPtr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   numElementsPtr = </div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(numElementsPtr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>->getPointerTo(AS));</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(numElementsPtr);</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> </div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> <span class="comment">/*********************** Static local initialization **************************/</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div>
+<div class="line"><a name="l01269"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a914a7aed52f284dac581f1897122a8e8"> 1269</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a914a7aed52f284dac581f1897122a8e8">getGuardAcquireFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>                                          llvm::PointerType *GuardPtrTy) {</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="comment">// int __cxa_guard_acquire(__guard *guard_object);</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     llvm::FunctionType::get(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a873a1148a8ffe184f0e5bd27bf90c0dc">IntTy</a>),</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>                             GuardPtrTy, <span class="comment">/*isVarArg=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_guard_acquire"</span>,</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>                                    llvm::AttributeSet::get(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>                                               llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>                                                  llvm::Attribute::NoUnwind));</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> }</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div>
+<div class="line"><a name="l01281"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2cf2acfcc0d8dc105670e8fb79ba411f"> 1281</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2cf2acfcc0d8dc105670e8fb79ba411f">getGuardReleaseFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>                                          llvm::PointerType *GuardPtrTy) {</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <span class="comment">// void __cxa_guard_release(__guard *guard_object);</span></div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, GuardPtrTy, <span class="comment">/*isVarArg=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_guard_release"</span>,</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>                                    llvm::AttributeSet::get(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>                                               llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>                                                  llvm::Attribute::NoUnwind));</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> </div>
+<div class="line"><a name="l01292"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2402e845632643451051f7ec42fe1992"> 1292</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2402e845632643451051f7ec42fe1992">getGuardAbortFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>                                        llvm::PointerType *GuardPtrTy) {</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>   <span class="comment">// void __cxa_guard_abort(__guard *guard_object);</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, GuardPtrTy, <span class="comment">/*isVarArg=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_guard_abort"</span>,</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>                                    llvm::AttributeSet::get(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6c8cff399ad98c730cce0907b1acd44e">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>                                               llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>                                                  llvm::Attribute::NoUnwind));</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> }</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> </div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>   <span class="keyword">struct </span>CallGuardAbort : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     llvm::GlobalVariable *Guard;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     CallGuardAbort(llvm::GlobalVariable *Guard) : Guard(Guard) {}</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>     <span class="keywordtype">void</span> Emit(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, Flags flags) {</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2402e845632643451051f7ec42fe1992">getGuardAbortFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, Guard->getType()),</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>                                   Guard);</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     }</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>   };</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> }</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="comment"></span></div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <span class="comment">/// The ARM code here follows the Itanium code closely enough that we</span></div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="comment">/// just special-case it at particular places.</span></div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="comment"></span><span class="keywordtype">void</span> ItaniumCXXABI::EmitGuardedInit(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                                     llvm::GlobalVariable *var,</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>                                     <span class="keywordtype">bool</span> shouldPerformInit) {</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &Builder = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</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>   <span class="comment">// We only need to use thread-safe statics for local non-TLS variables;</span></div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>   <span class="comment">// global initialization is always single-threaded.</span></div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>   <span class="keywordtype">bool</span> threadsafe = getContext().getLangOpts().ThreadsafeStatics &&</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>                     D.<a class="code" href="classclang_1_1VarDecl.html#ab3fc38243546c278bf42ea0deb0ed8e9">isLocalVarDecl</a>() && !D.<a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>();</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>   <span class="comment">// If we have a global variable with internal linkage and thread-safe statics</span></div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   <span class="comment">// are disabled, we can just let the guard variable be of type i8.</span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>   <span class="keywordtype">bool</span> useInt8GuardVariable = !threadsafe && var->hasInternalLinkage();</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> </div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>   llvm::IntegerType *guardTy;</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   <span class="keywordflow">if</span> (useInt8GuardVariable) {</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     guardTy = CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a329e1a1ea4a981895ad14b70611e163b" title="i8, i16, i32, and i64">Int8Ty</a>;</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>     <span class="comment">// Guard variables are 64 bits in the generic ABI and size width on ARM</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>     <span class="comment">// (i.e. 32-bit on AArch32, 64-bit on AArch64).</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>     guardTy = (UseARMGuardVarABI ? CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a> : CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a06114f0bc840b61c0b2c60bb284e46fb">Int64Ty</a>);</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   }</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   llvm::PointerType *guardPtrTy = guardTy->getPointerTo();</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="comment">// Create the guard variable if we don't already have it (as we</span></div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   <span class="comment">// might if we're double-emitting this function body).</span></div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>   llvm::GlobalVariable *guard = CGM.getStaticLocalDeclGuardAddress(&D);</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   <span class="keywordflow">if</span> (!guard) {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>     <span class="comment">// Mangle the name for the guard.</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> guardName;</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     {</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>       llvm::raw_svector_ostream out(guardName);</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>       getMangleContext().mangleStaticGuardVariable(&D, out);</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>       out.flush();</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</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">// Create the guard variable with a zero-initializer.</span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>     <span class="comment">// Just absorb linkage and visibility from the guarded variable.</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>     guard = <span class="keyword">new</span> llvm::GlobalVariable(CGM.getModule(), guardTy,</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>                                      <span class="keyword">false</span>, var->getLinkage(),</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>                                      llvm::ConstantInt::get(guardTy, 0),</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>                                      guardName.str());</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     guard->setVisibility(var->getVisibility());</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <span class="comment">// If the variable is thread-local, so is its guard variable.</span></div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     guard->setThreadLocalMode(var->getThreadLocalMode());</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> </div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>     CGM.setStaticLocalDeclGuardAddress(&D, guard);</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>   <span class="comment">// Test whether the variable has completed initialization.</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isInitialized;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> </div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>   <span class="comment">// ARM C++ ABI 3.2.3.1:</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>   <span class="comment">//   To support the potential use of initialization guard variables</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>   <span class="comment">//   as semaphores that are the target of ARM SWP and LDREX/STREX</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   <span class="comment">//   synchronizing instructions we define a static initialization</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   <span class="comment">//   guard variable to be a 4-byte aligned, 4- byte word with the</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>   <span class="comment">//   following inline access protocol.</span></div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>   <span class="comment">//     #define INITIALIZED 1</span></div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>   <span class="comment">//     if ((obj_guard & INITIALIZED) != INITIALIZED) {</span></div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>   <span class="comment">//       if (__cxa_guard_acquire(&obj_guard))</span></div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>   <span class="comment">//         ...</span></div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>   <span class="comment">//     }</span></div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>   <span class="keywordflow">if</span> (UseARMGuardVarABI && !useInt8GuardVariable) {</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = Builder.CreateLoad(guard);</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Test1 = llvm::ConstantInt::get(guardTy, 1);</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     V = Builder.CreateAnd(V, Test1);</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     isInitialized = Builder.CreateIsNull(V, <span class="stringliteral">"guard.uninitialized"</span>);</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>   <span class="comment">// Itanium C++ ABI 3.3.2:</span></div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   <span class="comment">//   The following is pseudo-code showing how these functions can be used:</span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   <span class="comment">//     if (obj_guard.first_byte == 0) {</span></div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>   <span class="comment">//       if ( __cxa_guard_acquire (&obj_guard) ) {</span></div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>   <span class="comment">//         try {</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>   <span class="comment">//           ... initialize the object ...;</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>   <span class="comment">//         } catch (...) {</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>   <span class="comment">//            __cxa_guard_abort (&obj_guard);</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   <span class="comment">//            throw;</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>   <span class="comment">//         }</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   <span class="comment">//         ... queue object destructor with __cxa_atexit() ...;</span></div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>   <span class="comment">//         __cxa_guard_release (&obj_guard);</span></div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>   <span class="comment">//       }</span></div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>   <span class="comment">//     }</span></div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>     <span class="comment">// Load the first byte of the guard variable.</span></div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     llvm::LoadInst *LI = </div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>       Builder.CreateLoad(Builder.CreateBitCast(guard, CGM.Int8PtrTy));</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     LI->setAlignment(1);</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     <span class="comment">// Itanium ABI:</span></div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>     <span class="comment">//   An implementation supporting thread-safety on multiprocessor</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>     <span class="comment">//   systems must also guarantee that references to the initialized</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>     <span class="comment">//   object do not occur before the load of the initialization flag.</span></div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="comment">// In LLVM, we do this by marking the load Acquire.</span></div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <span class="keywordflow">if</span> (threadsafe)</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>       LI->setAtomic(llvm::Acquire);</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>     isInitialized = Builder.CreateIsNull(LI, <span class="stringliteral">"guard.uninitialized"</span>);</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   }</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>   llvm::BasicBlock *InitCheckBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"init.check"</span>);</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>   llvm::BasicBlock *EndBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"init.end"</span>);</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> </div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="comment">// Check if the first byte of the guard variable is zero.</span></div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   Builder.CreateCondBr(isInitialized, InitCheckBlock, EndBlock);</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(InitCheckBlock);</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   <span class="comment">// Variables used when coping with thread-safe statics and exceptions.</span></div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   <span class="keywordflow">if</span> (threadsafe) {    </div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     <span class="comment">// Call __cxa_guard_acquire.</span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>       = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a914a7aed52f284dac581f1897122a8e8">getGuardAcquireFn</a>(CGM, guardPtrTy), guard);</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>                </div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     llvm::BasicBlock *InitBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"init"</span>);</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>   </div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     Builder.CreateCondBr(Builder.CreateIsNotNull(V, <span class="stringliteral">"tobool"</span>),</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>                          InitBlock, EndBlock);</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   </div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>     <span class="comment">// Call __cxa_guard_abort along the exceptional edge.</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallGuardAbort>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, guard);</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     </div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(InitBlock);</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   }</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> </div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>   <span class="comment">// Emit the initializer and add a global destructor if appropriate.</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac7254f2b47376c2fc98ff7c3f2efd496">EmitCXXGlobalVarDeclInit</a>(D, var, shouldPerformInit);</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> </div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>   <span class="keywordflow">if</span> (threadsafe) {</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     <span class="comment">// Pop the guard-abort cleanup if we pushed one.</span></div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9" title="Pops a cleanup block. If the block includes a normal cleanup, the current insertion point is threaded...">PopCleanupBlock</a>();</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> </div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <span class="comment">// Call __cxa_guard_release.  This cannot throw.</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a2cf2acfcc0d8dc105670e8fb79ba411f">getGuardReleaseFn</a>(CGM, guardPtrTy), guard);</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>     Builder.CreateStore(llvm::ConstantInt::get(guardTy, 1), guard);</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   }</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(EndBlock);</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> }</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="comment"></span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="comment">/// Register a global destructor using __cxa_atexit.</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a501446f8f8e29fdb3ebd0da65f48483b"> 1461</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a501446f8f8e29fdb3ebd0da65f48483b" title="Register a global destructor using __cxa_atexit.">emitGlobalDtorWithCXAAtExit</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>                                         llvm::Constant *dtor,</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>                                         llvm::Constant *addr,</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>                                         <span class="keywordtype">bool</span> TLS) {</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Name = <span class="stringliteral">"__cxa_atexit"</span>;</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>   <span class="keywordflow">if</span> (TLS) {</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>     <span class="keyword">const</span> llvm::Triple &T = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a20f1dc9686f1a537a03975c7603774e7" title="Returns the target triple of the primary target.">getTriple</a>();</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     Name = T.isMacOSX() ?  <span class="stringliteral">"_tlv_atexit"</span> : <span class="stringliteral">"__cxa_thread_atexit"</span>;</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   }</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>   <span class="comment">// We're assuming that the destructor function is something we can</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>   <span class="comment">// reasonably call with the default CC.  Go ahead and cast it to the</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>   <span class="comment">// right prototype.</span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>   llvm::Type *dtorTy =</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>     llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="keyword">false</span>)->getPointerTo();</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   <span class="comment">// extern "C" int __cxa_atexit(void (*f)(void *), void *p, void *d);</span></div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   llvm::Type *paramTys[] = { dtorTy, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a> };</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   llvm::FunctionType *atexitTy =</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>     llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#aa0d14821b268a724ecc3a9add2f290e6" title="int">IntTy</a>, paramTys, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> </div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="comment">// Fetch the actual function.</span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   llvm::Constant *atexit = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(atexitTy, Name);</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="keywordflow">if</span> (llvm::Function *fn = dyn_cast<llvm::Function>(atexit))</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>     fn->setDoesNotThrow();</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> </div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="comment">// Create a variable that binds the atexit to this shared object.</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   llvm::Constant *handle =</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#aa09bc64daac1a1dd1ab52ba1335d6c33">CreateRuntimeVariable</a>(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a329e1a1ea4a981895ad14b70611e163b" title="i8, i16, i32, and i64">Int8Ty</a>, <span class="stringliteral">"__dso_handle"</span>);</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> </div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *args[] = {</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>     llvm::ConstantExpr::getBitCast(dtor, dtorTy),</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     llvm::ConstantExpr::getBitCast(addr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>),</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     handle</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>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(atexit, args);</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> }</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="comment"></span></div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="comment">/// Register a global destructor as best as we know how.</span></div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> <span class="comment"></span><span class="keywordtype">void</span> ItaniumCXXABI::registerGlobalDtor(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>                                        llvm::Constant *dtor,</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>                                        llvm::Constant *addr) {</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="comment">// Use __cxa_atexit if available.</span></div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>   <span class="keywordflow">if</span> (CGM.getCodeGenOpts().CXAAtExit)</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>     <span class="keywordflow">return</span> <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#a501446f8f8e29fdb3ebd0da65f48483b" title="Register a global destructor using __cxa_atexit.">emitGlobalDtorWithCXAAtExit</a>(CGF, dtor, addr, D.<a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>());</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> </div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>())</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>     CGM.ErrorUnsupported(&D, <span class="stringliteral">"non-trivial TLS destruction"</span>);</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>   <span class="comment">// In Apple kexts, we want to add a global destructor entry.</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>   <span class="comment">// FIXME: shouldn't this be guarded by some variable?</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>   <span class="keywordflow">if</span> (CGM.getLangOpts().AppleKext) {</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="comment">// Generate a global destructor entry.</span></div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     <span class="keywordflow">return</span> CGM.AddCXXDtorEntry(dtor, addr);</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   }</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> </div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a412eef5dd1fc70283296f61a77668663" title="Register a global destructor using the C atexit runtime function.">registerGlobalDtorWithAtExit</a>(D, dtor, addr);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> }</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="comment"></span></div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> <span class="comment">/// Get the appropriate linkage for the wrapper function. This is essentially</span></div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> <span class="comment">/// the weak form of the variable's linkage; every translation unit which wneeds</span></div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> <span class="comment">/// the wrapper emits a copy, and we want the linker to merge them.</span></div>
+<div class="line"><a name="l01524"></a><span class="lineno"><a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae62bf95d725d6c3369352ea3232e7dda"> 1524</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::GlobalValue::LinkageTypes <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae62bf95d725d6c3369352ea3232e7dda">getThreadLocalWrapperLinkage</a>(</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     llvm::GlobalValue::LinkageTypes VarLinkage) {</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>   <span class="keywordflow">if</span> (llvm::GlobalValue::isLinkerPrivateLinkage(VarLinkage))</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>     <span class="keywordflow">return</span> llvm::GlobalValue::LinkerPrivateWeakLinkage;</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>   <span class="comment">// For internal linkage variables, we don't need an external or weak wrapper.</span></div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>   <span class="keywordflow">if</span> (llvm::GlobalValue::isLocalLinkage(VarLinkage))</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>     <span class="keywordflow">return</span> VarLinkage;</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   <span class="keywordflow">return</span> llvm::GlobalValue::WeakODRLinkage;</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> }</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> </div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> llvm::Function *</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> ItaniumCXXABI::getOrCreateThreadLocalWrapper(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD,</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>                                              llvm::GlobalVariable *Var) {</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>   <span class="comment">// Mangle the name for the thread_local wrapper function.</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> WrapperName;</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>   {</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     llvm::raw_svector_ostream Out(WrapperName);</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>     getMangleContext().mangleItaniumThreadLocalWrapper(VD, Out);</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>     Out.flush();</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</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="keywordflow">if</span> (<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = Var->getParent()->getNamedValue(WrapperName))</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>     <span class="keywordflow">return</span> cast<llvm::Function>(V);</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   llvm::Type *RetTy = Var->getType();</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>   <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>     RetTy = RetTy->getPointerElementType();</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>   llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>   llvm::Function *Wrapper = llvm::Function::Create(</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>       FnTy, <a class="code" href="CodeGen_2ItaniumCXXABI_8cpp.html#ae62bf95d725d6c3369352ea3232e7dda">getThreadLocalWrapperLinkage</a>(Var->getLinkage()), WrapperName.str(),</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>       &CGM.getModule());</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>   <span class="comment">// Always resolve references to the wrapper at link time.</span></div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>   Wrapper->setVisibility(<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102a6dddfc0d585a6867a79d44a43ad55324">llvm::GlobalValue::HiddenVisibility</a>);</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>   <span class="keywordflow">return</span> Wrapper;</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> }</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> </div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <span class="keywordtype">void</span> ItaniumCXXABI::EmitThreadLocalInitFuncs(</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>     <a class="code" href="classllvm_1_1ArrayRef.html">llvm::ArrayRef</a><std::pair<const VarDecl *, llvm::GlobalVariable *> > Decls,</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     llvm::Function *InitFunc) {</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Decls.size(); I != N; ++I) {</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = Decls[I].first;</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     llvm::GlobalVariable *Var = Decls[I].second;</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> </div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>     <span class="comment">// Mangle the name for the thread_local initialization function.</span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<256></a> InitFnName;</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>     {</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>       llvm::raw_svector_ostream Out(InitFnName);</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>       getMangleContext().mangleItaniumThreadLocalInit(VD, Out);</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>       Out.flush();</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>     }</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">// If we have a definition for the variable, emit the initialization</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <span class="comment">// function as an alias to the global Init function (if any). Otherwise,</span></div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="comment">// produce a declaration of the initialization function.</span></div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>     llvm::GlobalValue *Init = 0;</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>     <span class="keywordtype">bool</span> InitIsInitFunc = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1VarDecl.html#a4ba330c43b53955c9ef81ded4c8f9d4b" title="Check whether this variable is defined in this translation unit.">hasDefinition</a>()) {</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>       InitIsInitFunc = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>       <span class="keywordflow">if</span> (InitFunc)</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>         Init =</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>             <span class="keyword">new</span> llvm::GlobalAlias(InitFunc->getType(), Var->getLinkage(),</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>                                   InitFnName.str(), InitFunc, &CGM.getModule());</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>       <span class="comment">// Emit a weak global function referring to the initialization function.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>       <span class="comment">// This function will not exist if the TU defining the thread_local</span></div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>       <span class="comment">// variable in question does not need any dynamic initialization for</span></div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>       <span class="comment">// its thread_local variables.</span></div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>       llvm::FunctionType *FnTy = llvm::FunctionType::get(CGM.VoidTy, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>       Init = llvm::Function::Create(</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>           FnTy, llvm::GlobalVariable::ExternalWeakLinkage, InitFnName.str(),</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>           &CGM.getModule());</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>     }</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>     <span class="keywordflow">if</span> (Init)</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>       Init->setVisibility(Var->getVisibility());</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> </div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     llvm::Function *Wrapper = getOrCreateThreadLocalWrapper(VD, Var);</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     llvm::LLVMContext &Context = CGM.getModule().getContext();</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>     llvm::BasicBlock *Entry = llvm::BasicBlock::Create(Context, <span class="stringliteral">""</span>, Wrapper);</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>(Entry);</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <span class="keywordflow">if</span> (InitIsInitFunc) {</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>       <span class="keywordflow">if</span> (Init)</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>         Builder.CreateCall(Init);</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>       <span class="comment">// Don't know whether we have an init function. Call it if it exists.</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Have = Builder.CreateIsNotNull(Init);</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>       llvm::BasicBlock *InitBB = llvm::BasicBlock::Create(Context, <span class="stringliteral">""</span>, Wrapper);</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>       llvm::BasicBlock *ExitBB = llvm::BasicBlock::Create(Context, <span class="stringliteral">""</span>, Wrapper);</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>       Builder.CreateCondBr(Have, InitBB, ExitBB);</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>       Builder.SetInsertPoint(InitBB);</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>       Builder.CreateCall(Init);</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>       Builder.CreateBr(ExitBB);</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> </div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>       Builder.SetInsertPoint(ExitBB);</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     }</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="comment">// For a reference, the result of the wrapper function is a pointer to</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>     <span class="comment">// the referenced object.</span></div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val = Var;</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>     <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>       llvm::LoadInst *LI = Builder.CreateLoad(Val);</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>       LI->setAlignment(CGM.getContext().getDeclAlign(VD).getQuantity());</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>       Val = LI;</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>     }</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> </div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>     Builder.CreateRet(Val);</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   }</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</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_1CodeGen_1_1LValue.html">LValue</a> ItaniumCXXABI::EmitThreadLocalDeclRefExpr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>                                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *DRE) {</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = cast<VarDecl>(DRE-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>());</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>   llvm::Type *Ty = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(T);</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ada9b3a5077437e849c3d758cca9567e3">GetAddrOfGlobalVar</a>(VD, Ty);</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>   llvm::Function *Wrapper =</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>       getOrCreateThreadLocalWrapper(VD, cast<llvm::GlobalVariable>(Val));</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   Val = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(Wrapper);</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>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV;</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <span class="keywordflow">if</span> (VD-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>     LV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(Val, T);</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>     LV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(Val, DRE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>                             CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(VD));</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>   <span class="comment">// FIXME: need setObjCGCLValueClass?</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>   <span class="keywordflow">return</span> LV;</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> }</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <span class="comment"></span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <span class="comment">/// Return whether the given global decl needs a VTT parameter, which it does</span></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <span class="comment">/// if it's a base constructor or destructor with virtual bases.</span></div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <span class="comment"></span><span class="keywordtype">bool</span> ItaniumCXXABI::NeedsVTTParameter(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD) {</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = cast<CXXMethodDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>());</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>   </div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>   <span class="comment">// We don't have any virtual bases, just return early.</span></div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>   <span class="keywordflow">if</span> (!MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#ae9cacadb059ecb46224d537be149d565" title="Retrieves the number of virtual base classes of this class.">getNumVBases</a>())</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>   </div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>   <span class="comment">// Check if we have a base constructor.</span></div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>   <span class="keywordflow">if</span> (isa<CXXConstructorDecl>(MD) && GD.<a class="code" href="classclang_1_1GlobalDecl.html#a510cae7dd5d57ea1a0d8d89754fe6036">getCtorType</a>() == <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>)</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> </div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>   <span class="comment">// Check if we have a base destructor.</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>   <span class="keywordflow">if</span> (isa<CXXDestructorDecl>(MD) && GD.<a class="code" href="classclang_1_1GlobalDecl.html#acf7986531ee9edab4d776465d455c82f">getDtorType</a>() == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>)</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>   </div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:41 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