[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/CGClass_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2306 @@
+<!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: CGClass.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">CGClass.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGClass_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">//===--- CGClass.cpp - Emit LLVM Code for C++ classes ---------------------===//</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 contains code dealing with C++ code generation of classes</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="CGBlocks_8h.html">CGBlocks.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGDebugInfo_8h.html">CGDebugInfo.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGRecordLayout_8h.html">CGRecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CXXInheritance_8h.html">clang/AST/CXXInheritance.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="DeclTemplate_8h.html" title="Defines the C++ template declaration subclasses.">clang/AST/DeclTemplate.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="EvaluatedExprVisitor_8h.html">clang/AST/EvaluatedExprVisitor.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="StmtCXX_8h.html">clang/AST/StmtCXX.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="TargetBuiltins_8h.html" title="Enumerates target-specific builtins in their own namespaces within namespace clang.">clang/Basic/TargetBuiltins.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 "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> </div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a881546fe802eed4785399a710f417633">   32</a></span> <a class="code" href="CGClass_8cpp.html#a881546fe802eed4785399a710f417633">ComputeNonVirtualBaseClassOffset</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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DerivedClass,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                                  <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> Start,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>                                  <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> End) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = <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="l00037"></a><span class="lineno">   37</span>   </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = DerivedClass;</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="keywordflow">for</span> (<a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> I = Start; I != End; ++I) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *<a class="code" href="classclang_1_1Base.html">Base</a> = *I;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>     assert(!Base-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a052cc9c7e1fb5a7095469c3be012c3a4" title="Determines whether the base class is a virtual base class (or not).">isVirtual</a>() && <span class="stringliteral">"Should not see virtual bases here!"</span>);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="comment">// Get the layout.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_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="l00046"></a><span class="lineno">   46</span>     </div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseDecl = </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>       cast<CXXRecordDecl>(Base-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</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="l00049"></a><span class="lineno">   49</span>     </div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <span class="comment">// Add the offset.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     Offset += Layout.getBaseClassOffset(BaseDecl);</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>     RD = BaseDecl;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   }</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   </div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> }</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> llvm::Constant *</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6dd812ba26823af77f77d9d302dfd1ff">   60</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6dd812ba26823af77f77d9d302dfd1ff">CodeGenModule::GetNonVirtualBaseClassOffset</a>(<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="l00061"></a><span class="lineno">   61</span>                                    <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathBegin,</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>                                    <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathEnd) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   assert(PathBegin != PathEnd && <span class="stringliteral">"Base path should not be empty!"</span>);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a> = </div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     <a class="code" href="CGClass_8cpp.html#a881546fe802eed4785399a710f417633">ComputeNonVirtualBaseClassOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>(), ClassDecl,</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                                      PathBegin, PathEnd);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">if</span> (Offset.<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="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">return</span> 0;</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 *<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad27f48ba6641c99a170fd0a3ef62c8f8">PtrDiffTy</a> = </div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   Types.<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_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().getPointerDiffType());</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">return</span> llvm::ConstantInt::get(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="l00075"></a><span class="lineno">   75</span> }</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">/// Gets the address of a direct base class within a complete object.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">/// This should only be used for (1) non-virtual bases or (2) virtual bases</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">/// when the type is known to be complete (e.g. in complete destructors).</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/// The object pointed to by 'This' is assumed to be non-null.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1b74191652148ffd7c9eb3530eb335f6">   83</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1b74191652148ffd7c9eb3530eb335f6">CodeGenFunction::GetAddressOfDirectBaseInCompleteClass</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>                                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Derived,</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</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_1Base.html">Base</a>,</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>                                                    <span class="keywordtype">bool</span> BaseIsVirtual) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="comment">// 'this' must be a pointer (in some address space) to Derived.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   assert(This->getType()->isPointerTy() &&</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>          cast<llvm::PointerType>(This->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>()</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>            == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(Derived));</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">// Compute the offset of the virtual base.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(Derived);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">if</span> (BaseIsVirtual)</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     Offset = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#afc9e06582d41a24ec356be836bb8775c" title="getVBaseClassOffset - Get the offset, in chars, for the given base class.">getVBaseClassOffset</a>(Base);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     Offset = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(Base);</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="comment">// Shift and cast down to the base type.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="comment">// TODO: for complete types, this should be possible with a GEP.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = This;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">if</span> (Offset.isPositive()) {</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(V, Offset.getQuantity());</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>   V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(Base)->getPointerTo());</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keywordflow">return</span> V;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> }</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a5d2634620b21c291383b0f7bf3ed3ac4">  113</a></span> <a class="code" href="CGClass_8cpp.html#a5d2634620b21c291383b0f7bf3ed3ac4">ApplyNonVirtualAndVirtualOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ptr,</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>                                 <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> nonVirtualOffset,</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>                                 <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *virtualOffset) {</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="comment">// Assert that we have something to do.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   assert(!nonVirtualOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>() || virtualOffset != 0);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="comment">// Compute the offset from the static and dynamic components.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *baseOffset;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="keywordflow">if</span> (!nonVirtualOffset.<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="l00122"></a><span class="lineno">  122</span>     baseOffset = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad27f48ba6641c99a170fd0a3ef62c8f8">PtrDiffTy</a>,</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>                                         nonVirtualOffset.<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="l00124"></a><span class="lineno">  124</span>     <span class="keywordflow">if</span> (virtualOffset) {</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       baseOffset = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAdd(virtualOffset, baseOffset);</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="keywordflow">else</span> {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     baseOffset = virtualOffset;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   }</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="comment">// Apply the base offset.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</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="l00133"></a><span class="lineno">  133</span>   ptr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(ptr, baseOffset, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">return</span> ptr;</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> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a75da1a9b3eb8a6aaeda1c075563021b3">  138</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a75da1a9b3eb8a6aaeda1c075563021b3">CodeGenFunction::GetAddressOfBaseClass</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Derived,</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                                        <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathBegin,</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                                        <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathEnd,</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                                        <span class="keywordtype">bool</span> NullCheckValue) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   assert(PathBegin != PathEnd && <span class="stringliteral">"Base path should not be empty!"</span>);</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>   <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> Start = PathBegin;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VBase = 0;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="comment">// Sema has done some convenient canonicalization here: if the</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="comment">// access path involved any virtual steps, the conversion path will</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="comment">// *start* with a step down to the correct virtual base subobject,</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="comment">// and hence will not require any further steps.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordflow">if</span> ((*Start)->isVirtual()) {</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     VBase = </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       cast<CXXRecordDecl>((*Start)->getType()->getAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     ++Start;</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">// Compute the static offset of the ultimate destination within its</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">// allocating subobject (the virtual base, if there is one, or else</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="comment">// the "complete" object that we see).</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> NonVirtualOffset = </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <a class="code" href="CGClass_8cpp.html#a881546fe802eed4785399a710f417633">ComputeNonVirtualBaseClassOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), VBase ? VBase : Derived,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                                      Start, PathEnd);</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>   <span class="comment">// If there's a virtual step, we can sometimes "devirtualize" it.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="comment">// For now, that's limited to when the derived type is final.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="comment">// TODO: "devirtualize" this for accesses to known-complete objects.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">if</span> (VBase && Derived-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1FinalAttr.html">FinalAttr</a>>()) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &layout = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(Derived);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> vBaseOffset = layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#afc9e06582d41a24ec356be836bb8775c" title="getVBaseClassOffset - Get the offset, in chars, for the given base class.">getVBaseClassOffset</a>(VBase);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     NonVirtualOffset += vBaseOffset;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     VBase = 0; <span class="comment">// we no longer have a virtual step</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   }</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="comment">// Get the base pointer type.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   llvm::Type *BasePtrTy = </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>((PathEnd[-1])->getType())->getPointerTo();</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>   <span class="comment">// If the static offset is zero and we don't have a virtual step,</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="comment">// just do a bitcast; null checks are unnecessary.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span> (NonVirtualOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>() && !VBase) {</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, BasePtrTy);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   }    </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   llvm::BasicBlock *origBB = 0;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   llvm::BasicBlock *endBB = 0;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="comment">// Skip over the offset (and the vtable load) if we're supposed to</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="comment">// null-check the pointer.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span> (NullCheckValue) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     origBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     llvm::BasicBlock *notNullBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cast.notnull"</span>);</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     endBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cast.end"</span>);</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(Value);</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isNull, endBB, notNullBB);</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(notNullBB);</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> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="comment">// Compute the virtual offset.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VirtualOffset = 0;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">if</span> (VBase) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     VirtualOffset =</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ab451da48f87e8b4c692872b36f18f007">GetVirtualBaseClassOffset</a>(*<span class="keyword">this</span>, Value, Derived, VBase);</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> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="comment">// Apply both offsets.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   Value = <a class="code" href="CGClass_8cpp.html#a5d2634620b21c291383b0f7bf3ed3ac4">ApplyNonVirtualAndVirtualOffset</a>(*<span class="keyword">this</span>, Value, </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>                                           NonVirtualOffset,</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>                                           VirtualOffset);</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>   <span class="comment">// Cast to the destination type.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   Value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, BasePtrTy);</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="comment">// Build a phi if we needed a null check.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="keywordflow">if</span> (NullCheckValue) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>     llvm::BasicBlock *notNullBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(endBB);</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(endBB);</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>     llvm::PHINode *PHI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(BasePtrTy, 2, <span class="stringliteral">"cast.result"</span>);</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     PHI->addIncoming(Value, notNullBB);</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     PHI->addIncoming(llvm::Constant::getNullValue(BasePtrTy), origBB);</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     Value = PHI;</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>   </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</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> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00231"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4a3efbcf6257c66635aaaf1924c7072c">  231</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4a3efbcf6257c66635aaaf1924c7072c">CodeGenFunction::GetAddressOfDerivedClass</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>,</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Derived,</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>                                         <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathBegin,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                           <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">CastExpr::path_const_iterator</a> PathEnd,</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>                                           <span class="keywordtype">bool</span> NullCheckValue) {</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   assert(PathBegin != PathEnd && <span class="stringliteral">"Base path should not be empty!"</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>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DerivedTy =</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getTagDeclType(Derived));</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   llvm::Type *DerivedPtrTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(DerivedTy)->getPointerTo();</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NonVirtualOffset =</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6dd812ba26823af77f77d9d302dfd1ff">GetNonVirtualBaseClassOffset</a>(Derived, PathBegin, PathEnd);</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordflow">if</span> (!NonVirtualOffset) {</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="comment">// No offset, we can just cast back.</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, DerivedPtrTy);</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>   </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   llvm::BasicBlock *CastNull = 0;</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   llvm::BasicBlock *CastNotNull = 0;</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   llvm::BasicBlock *CastEnd = 0;</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="keywordflow">if</span> (NullCheckValue) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     CastNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cast.null"</span>);</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     CastNotNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cast.notnull"</span>);</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>     CastEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cast.end"</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(Value);</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsNull, CastNull, CastNotNull);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastNotNull);</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>   </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="comment">// Apply the offset.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   Value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   Value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(Value, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateNeg(NonVirtualOffset),</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>                             <span class="stringliteral">"sub.ptr"</span>);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="comment">// Just cast.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   Value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, DerivedPtrTy);</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="keywordflow">if</span> (NullCheckValue) {</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(CastEnd);</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastNull);</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(CastEnd);</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastEnd);</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>     llvm::PHINode *PHI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(Value->getType(), 2);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     PHI->addIncoming(Value, CastNotNull);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     PHI->addIncoming(llvm::Constant::getNullValue(Value->getType()), </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>                      CastNull);</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     Value = PHI;</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>   </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</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> </div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad7641cb509db3ec241eb5b8176ee0474">  288</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad7641cb509db3ec241eb5b8176ee0474">CodeGenFunction::GetVTTParameter</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD,</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>                                               <span class="keywordtype">bool</span> ForVirtualBase,</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>                                               <span class="keywordtype">bool</span> Delegating) {</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a2fc647eb66cb16b9a0baca578924dbab" title="Return whether the given global decl needs a VTT parameter.">NeedsVTTParameter</a>(GD)) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="comment">// This constructor/destructor does not need a VTT parameter.</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="keywordflow">return</span> 0;</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>   </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</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<CXXMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>)->getParent();</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</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_1Base.html">Base</a> = cast<CXXMethodDecl>(GD.<a class="code" href="classclang_1_1GlobalDecl.html#a3971ce53aef50b4c3d829615a5ecd0a0">getDecl</a>())->getParent();</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTT;</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>   uint64_t SubVTTIndex;</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>   <span class="keywordflow">if</span> (Delegating) {</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="comment">// If this is a delegating constructor call, just load the VTT.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a46a4b6b54527d3fff0380e943580addf">LoadCXXVTT</a>();</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (RD == Base) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="comment">// If the record matches the base, this is the complete ctor/dtor</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="comment">// variant calling the base variant in a class with virtual bases.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     assert(!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a2fc647eb66cb16b9a0baca578924dbab" title="Return whether the given global decl needs a VTT parameter.">NeedsVTTParameter</a>(<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="l00310"></a><span class="lineno">  310</span>            <span class="stringliteral">"doing no-op VTT offset in base dtor/ctor?"</span>);</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     assert(!ForVirtualBase && <span class="stringliteral">"Can't have same class as virtual base!"</span>);</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     SubVTTIndex = 0;</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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="l00315"></a><span class="lineno">  315</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> BaseOffset = ForVirtualBase ? </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#afc9e06582d41a24ec356be836bb8775c" title="getVBaseClassOffset - Get the offset, in chars, for the given base class.">getVBaseClassOffset</a>(Base) : </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>       Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(Base);</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>     SubVTTIndex = </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3cb12d9b5bbf010b0d482ae08f720eba">getVTables</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenVTables.html#a4ffb47cfaa0a71852445d8272caba3f4">getSubVTTIndex</a>(RD, <a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a>(Base, BaseOffset));</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     assert(SubVTTIndex != 0 && <span class="stringliteral">"Sub-VTT index must be greater than zero!"</span>);</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   }</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a2fc647eb66cb16b9a0baca578924dbab" title="Return whether the given global decl needs a VTT parameter.">NeedsVTTParameter</a>(<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="l00325"></a><span class="lineno">  325</span>     <span class="comment">// A VTT parameter was passed to the constructor, use it.</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a46a4b6b54527d3fff0380e943580addf">LoadCXXVTT</a>();</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(VTT, SubVTTIndex);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="comment">// We're the complete constructor, so get the VTT by name.</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3cb12d9b5bbf010b0d482ae08f720eba">getVTables</a>().<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="l00331"></a><span class="lineno">  331</span>     VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP2_64(VTT, 0, SubVTTIndex);</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> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">return</span> VTT;</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> </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment">  /// Call the destructor for a direct base class.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment"></span>  <span class="keyword">struct </span>CallBaseDtor : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseClass;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     <span class="keywordtype">bool</span> BaseIsVirtual;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     CallBaseDtor(<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_1Base.html">Base</a>, <span class="keywordtype">bool</span> BaseIsVirtual)</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>       : BaseClass(Base), BaseIsVirtual(BaseIsVirtual) {}</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>     <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="l00346"></a><span class="lineno">  346</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DerivedClass =</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>         cast<CXXMethodDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>)->getParent();</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>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D = BaseClass->getDestructor();</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</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="l00351"></a><span class="lineno">  351</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1b74191652148ffd7c9eb3530eb335f6">GetAddressOfDirectBaseInCompleteClass</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>(),</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>                                                   DerivedClass, BaseClass,</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>                                                   BaseIsVirtual);</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(D, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>, BaseIsVirtual,</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>                                 <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, Addr);</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>   };</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment"></span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment">  /// A visitor which checks whether an initializer uses 'this' in a</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="comment">  /// way which requires the vtable to be properly set.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment"></span>  <span class="keyword">struct </span>DynamicThisUseChecker : <a class="code" href="classclang_1_1EvaluatedExprVisitor.html" title="Given a potentially-evaluated expression, this visitor visits all of its potentially-evaluated subexp...">EvaluatedExprVisitor</a><DynamicThisUseChecker> {</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     <span class="keyword">typedef</span> <a class="code" href="classclang_1_1EvaluatedExprVisitor.html" title="Given a potentially-evaluated expression, this visitor visits all of its potentially-evaluated subexp...">EvaluatedExprVisitor<DynamicThisUseChecker></a> super;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordtype">bool</span> UsesThis;</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>     DynamicThisUseChecker(<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> &C) : super(C), UsesThis(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {}</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="comment">// Black-list all explicit and implicit references to 'this'.</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="comment">// Do we need to worry about external references to 'this' derived</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     <span class="comment">// from arbitrary code?  If so, then anything which runs arbitrary</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="comment">// external code might potentially access the vtable.</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <span class="keywordtype">void</span> VisitCXXThisExpr(<a class="code" href="classclang_1_1CXXThisExpr.html" title="Represents the this expression in C++.">CXXThisExpr</a> *E) { UsesThis = <span class="keyword">true</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> }</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a805deb32a046233068fe9a3b448f04c0">  377</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGClass_8cpp.html#a805deb32a046233068fe9a3b448f04c0">BaseInitializerUsesThis</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> &C, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init) {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   DynamicThisUseChecker Checker(C);</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   Checker.Visit(const_cast<Expr*>(Init));</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="keywordflow">return</span> Checker.UsesThis;</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> </div>
+<div class="line"><a name="l00383"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a8eb0072e7e6f19c874fdc2c506e7222f">  383</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGClass_8cpp.html#a8eb0072e7e6f19c874fdc2c506e7222f">EmitBaseInitializer</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</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="l00385"></a><span class="lineno">  385</span>                                 <a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *BaseInit,</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>                                 <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> CtorType) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   assert(BaseInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a0e2696529273fc8648e681f4cc3b6894" title="Determine whether this initializer is initializing a base class.">isBaseInitializer</a>() &&</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>          <span class="stringliteral">"Must have base initializer!"</span>);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *BaseType = BaseInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a195d89a551cfaa0e5b2c5d5b879caf27">getBaseClass</a>();</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</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="l00394"></a><span class="lineno">  394</span>     cast<CXXRecordDecl>(BaseType-><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="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   <span class="keywordtype">bool</span> isBaseVirtual = BaseInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a5ff5888540eeb137f8bd8b732c5a342a" title="Returns whether the base is virtual or not.">isBaseVirtual</a>();</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">// The base constructor doesn't construct virtual bases.</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="keywordflow">if</span> (CtorType == <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a> && isBaseVirtual)</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">return</span>;</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>   <span class="comment">// If the initializer for the base (other than the constructor</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   <span class="comment">// itself) accesses 'this' in any way, we need to initialize the</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="comment">// vtables.</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">if</span> (<a class="code" href="CGClass_8cpp.html#a805deb32a046233068fe9a3b448f04c0">BaseInitializerUsesThis</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), BaseInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>()))</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">InitializeVTablePointers</a>(ClassDecl);</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>   <span class="comment">// We can pretend to be a complete class because it only matters for</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="comment">// virtual bases, and we only do virtual bases for complete ctors.</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = </div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1b74191652148ffd7c9eb3530eb335f6">GetAddressOfDirectBaseInCompleteClass</a>(ThisPtr, ClassDecl,</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>                                               BaseClassDecl,</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>                                               isBaseVirtual);</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(BaseType);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> AggSlot =</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(V, Alignment, <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a>(),</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>);</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(BaseInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>(), AggSlot);</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   </div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   <span class="keywordflow">if</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#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().Exceptions && </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       !BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallBaseDtor>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, BaseClassDecl,</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>                                           isBaseVirtual);</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> </div>
+<div class="line"><a name="l00429"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a4dbac6ab7290885eb08cc75a57a319b8">  429</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGClass_8cpp.html#a4dbac6ab7290885eb08cc75a57a319b8">EmitAggMemberInitializer</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS,</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>                                      <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init,</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayIndexVar,</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>                                      <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<VarDecl *></a> ArrayIndexes,</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>                                      <span class="keywordtype">unsigned</span> Index) {</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">if</span> (Index == ArrayIndexes.size()) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = LHS;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keywordflow">if</span> (ArrayIndexVar) {</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       <span class="comment">// If we have an array index variable, load it and use it as an offset.</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>       <span class="comment">// Then, increment the value.</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Dest = LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayIndex = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(ArrayIndexVar);</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       Dest = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(Dest, ArrayIndex, <span class="stringliteral">"destaddress"</span>);</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Next = llvm::ConstantInt::get(ArrayIndex->getType(), 1);</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       Next = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAdd(ArrayIndex, Next, <span class="stringliteral">"inc"</span>);</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Next, ArrayIndexVar);</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <span class="comment">// Update the LValue.</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ad9189c5d71a765179e7d8b367ac543d0">setAddress</a>(Dest);</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Align = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(T);</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a413ad769e12fb3cd34847e84851f2eef">setAlignment</a>(std::min(Align, LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>()));</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     }</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="keywordflow">switch</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(T)) {</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">EmitScalarInit</a>(Init, <span class="comment">/*decl*/</span> 0, LV, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>:</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1bd5d8252eada9df4a531d3ca8bf6500">EmitComplexExprIntoLValue</a>(Init, LV, <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>: {</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot =</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LV,</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>                                 <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>                                 <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>                                 <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>);</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(Init, Slot);</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     }</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     }</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *Array = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(T);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   assert(Array && <span class="stringliteral">"Array initialization without the array type?"</span>);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IndexVar</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a82621c86a6f95d33ae07868357749654" title="GetAddrOfLocalVar - Return the address of a local variable.">GetAddrOfLocalVar</a>(ArrayIndexes[Index]);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   assert(IndexVar && <span class="stringliteral">"Array index variable not loaded"</span>);</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="comment">// Initialize this index variable to zero.</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a>* Zero</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     = llvm::Constant::getNullValue(</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</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#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>()));</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Zero, IndexVar);</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">// Start the loop with a block that tests the condition.</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   llvm::BasicBlock *CondBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"for.cond"</span>);</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   llvm::BasicBlock *AfterFor = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"for.end"</span>);</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CondBlock);</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>   llvm::BasicBlock *ForBody = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"for.body"</span>);</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>   <span class="comment">// Generate: if (loop-index < number-of-elements) fall to the loop body,</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   <span class="comment">// otherwise, go to the block after the for-loop.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   uint64_t NumElements = Array-><a class="code" href="classclang_1_1ConstantArrayType.html#add90924c309ad1f353431f2b63e9ba2b">getSize</a>().getZExtValue();</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Counter = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(IndexVar);</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElementsPtr =</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     llvm::ConstantInt::get(Counter->getType(), NumElements);</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsLess = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpULT(Counter, NumElementsPtr,</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>                                                   <span class="stringliteral">"isless"</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>   <span class="comment">// If the condition is true, execute the body.</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsLess, ForBody, AfterFor);</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>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(ForBody);</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   llvm::BasicBlock *ContinueBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"for.inc"</span>);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>   <span class="comment">// Inside the loop body recurse to emit the inner loop or, eventually, the</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   <span class="comment">// constructor call.</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <a class="code" href="CGClass_8cpp.html#a4dbac6ab7290885eb08cc75a57a319b8">EmitAggMemberInitializer</a>(CGF, LHS, Init, ArrayIndexVar,</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>                            Array-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>(), ArrayIndexes, Index + 1);</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>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(ContinueBlock);</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">// Emit the increment of the loop counter.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NextVal = llvm::ConstantInt::get(Counter->getType(), 1);</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   Counter = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(IndexVar);</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>   NextVal = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAdd(Counter, NextVal, <span class="stringliteral">"inc"</span>);</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(NextVal, IndexVar);</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="comment">// Finally, branch back up to the condition for the next iteration.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd75804886d9542735d748f04de9efa1">EmitBranch</a>(CondBlock);</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>   <span class="comment">// Emit the fall-through block.</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(AfterFor, <span class="keyword">true</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> </div>
+<div class="line"><a name="l00531"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#ab4c889df2f35e3dd252431b3c0a8f15e">  531</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGClass_8cpp.html#ab4c889df2f35e3dd252431b3c0a8f15e">EmitMemberInitializer</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</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="l00533"></a><span class="lineno">  533</span>                                   <a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *MemberInit,</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor,</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</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="l00536"></a><span class="lineno">  536</span>   assert(MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#aa426b91b8497fdaaa42ebbd1dd1f81bc">isAnyMemberInitializer</a>() &&</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>          <span class="stringliteral">"Must have member initializer!"</span>);</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   assert(MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>() && <span class="stringliteral">"Must have initializer!"</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>   <span class="comment">// non-static data member initializers.</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a7d079569b4b69f0f7f48f5c61828d536">getAnyMember</a>();</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldType = Field->getType();</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> RecordTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(ClassDecl);</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(ThisPtr, RecordTy);</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>   <span class="keywordflow">if</span> (MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a23dfd236be77748b1c650b008bfb599f">isIndirectMemberInitializer</a>()) {</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="comment">// If we are initializing an anonymous union field, drill down to</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="comment">// the field.</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <a class="code" href="classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a> *IndirectField = MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a157a004764543142b0ffa7b71551ca88">getIndirectMember</a>();</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     <a class="code" href="classclang_1_1IndirectFieldDecl.html#a6a0fd4de9f1a53fb21791d50c9ed2abc">IndirectFieldDecl::chain_iterator</a> I = IndirectField-><a class="code" href="classclang_1_1IndirectFieldDecl.html#a6fc82272044f7f5834621a2f9d66540d">chain_begin</a>(),</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>       IEnd = IndirectField-><a class="code" href="classclang_1_1IndirectFieldDecl.html#a844b66f0d6ce8af21722f424e884e6d0">chain_end</a>();</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <span class="keywordflow">for</span> ( ; I != IEnd; ++I)</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       LHS = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(LHS, cast<FieldDecl>(*I));</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     FieldType = MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a157a004764543142b0ffa7b71551ca88">getIndirectMember</a>()-><a class="code" href="classclang_1_1IndirectFieldDecl.html#a26d7f81313f74af1a65f8d08cf53b337">getAnonField</a>()-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     LHS = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(LHS, Field);</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> </div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="comment">// Special case: if we are in a copy or move constructor, and we are copying</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="comment">// an array of PODs or classes with trivial copy constructors, ignore the</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   <span class="comment">// AST and perform the copy we know is equivalent.</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   <span class="comment">// FIXME: This is hacky at best... if we had a bit more explicit information</span></div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <span class="comment">// in the AST, we could generalize it more easily.</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *Array</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(FieldType);</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keywordflow">if</span> (Array && Constructor-><a class="code" href="classclang_1_1FunctionDecl.html#ade9df00e7c8e6d18bd681d10da7d9e13">isDefaulted</a>() &&</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       Constructor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>()) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> BaseElementTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Array);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CE = dyn_cast<<a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a>>(MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>());</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordflow">if</span> (BaseElementTy.<a class="code" href="classclang_1_1QualType.html#a2f842f2180f2b5b93757b046a1228da4" title="Determine whether this is a Plain Old Data (POD) type (C++ 3.9p10).">isPODType</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) ||</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         (CE && CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>())) {</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       <span class="comment">// Find the source pointer. We know it's the last argument because</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       <span class="comment">// we know we're in an implicit copy constructor.</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       <span class="keywordtype">unsigned</span> SrcArgIndex = Args.size() - 1;</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</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>(Args[SrcArgIndex]));</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> ThisRHSLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(SrcPtr, RecordTy);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Src = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(ThisRHSLV, Field);</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>       <span class="comment">// Copy the aggregate.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), Src.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), FieldType,</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>                             LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ab445c86edb0419fab12ad9aaeff5f6e3">isVolatileQualified</a>());</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     }</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   }</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<VarDecl *></a> ArrayIndexes;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">if</span> (MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a7cf7508ca9dc10da309e96577fb85bbc" title="Determine the number of implicit array indices used while described an array member initialization...">getNumArrayIndices</a>())</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     ArrayIndexes = MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#ae61a728612f8455bee81aaf5687a0001">getArrayIndexes</a>();</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac2b20cd86aba5f55c93e263aa9f02c6c">EmitInitializerForField</a>(Field, LHS, MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>(), ArrayIndexes);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> }</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> </div>
+<div class="line"><a name="l00595"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac2b20cd86aba5f55c93e263aa9f02c6c">  595</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac2b20cd86aba5f55c93e263aa9f02c6c">CodeGenFunction::EmitInitializerForField</a>(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field,</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init,</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>                                              <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<VarDecl *></a> ArrayIndexes) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldType = Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(FieldType)) {</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>     <span class="keywordflow">if</span> (LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>()) {</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afe4e8a7345f4c58c543eb338597c309b">EmitExprAsInit</a>(Init, Field, LHS, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RHS = <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(Init));</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(RHS, LHS);</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>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>:</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1bd5d8252eada9df4a531d3ca8bf6500">EmitComplexExprIntoLValue</a>(Init, LHS, <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>: {</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayIndexVar = 0;</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     <span class="keywordflow">if</span> (ArrayIndexes.size()) {</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>       llvm::Type *<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getSizeType());</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>       <span class="comment">// The LHS is a pointer to the first object we'll be constructing, as</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       <span class="comment">// a flat array.</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> BaseElementTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(FieldType);</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>       llvm::Type *BasePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(BaseElementTy);</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       BasePtr = llvm::PointerType::getUnqual(BasePtr);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *BaseAddrPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), </div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>                                                        BasePtr);</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>       LHS = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(BaseAddrPtr, BaseElementTy);</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       </div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       <span class="comment">// Create an array index that will be used to walk over all of the</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       <span class="comment">// objects we're constructing.</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>       ArrayIndexVar = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(SizeTy, <span class="stringliteral">"object.index"</span>);</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::Constant::getNullValue(SizeTy);</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Zero, ArrayIndexVar);</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>       </div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       <span class="comment">// Emit the block variables for the array indices, if any.</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = ArrayIndexes.size(); I != N; ++I)</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a361ac65d0e3162cda8f4da98876a54dd">EmitAutoVarDecl</a>(*ArrayIndexes[I]);</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     }</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     </div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <a class="code" href="CGClass_8cpp.html#a4dbac6ab7290885eb08cc75a57a319b8">EmitAggMemberInitializer</a>(*<span class="keyword">this</span>, LHS, Init, ArrayIndexVar, FieldType,</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>                              ArrayIndexes, 0);</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>   }</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span> </div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   <span class="comment">// Ensure that we destroy this object if an exception is thrown</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="comment">// later in the constructor.</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = FieldType.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab5de8b85a1f54e0dd9d5dce5527faf23">needsEHCleanup</a>(dtorKind))</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8b6fda20a3bbdf536eb02b51af2f1007">pushEHDestroy</a>(dtorKind, LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), FieldType);</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span> }</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="comment"></span></div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="comment">/// Checks whether the given constructor is a valid subject for the</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="comment">/// complete-to-base constructor delegation optimization, i.e.</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="comment">/// emitting the complete constructor as a simple call to the base</span></div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="comment">/// constructor.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#ae824ac02955c8469391437d90caaa2e1">  653</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGClass_8cpp.html#ae824ac02955c8469391437d90caaa2e1">IsConstructorDelegationValid</a>(<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="l00654"></a><span class="lineno">  654</span> </div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="comment">// Currently we disable the optimization for classes with virtual</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="comment">// bases because (1) the addresses of parameter variables need to be</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="comment">// consistent across all initializers but (2) the delegate function</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="comment">// call necessarily creates a second copy of the parameter variable.</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="comment">// The limiting example (purely theoretical AFAIK):</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <span class="comment">//   struct A { A(int &c) { c++; } };</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <span class="comment">//   struct B : virtual A {</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <span class="comment">//     B(int count) : A(count) { printf("%d\n", count); }</span></div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="comment">//   };</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="comment">// ...although even this example could in principle be emitted as a</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="comment">// delegation since the address of the parameter doesn't escape.</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">if</span> (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>()) {</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <span class="comment">// TODO: white-list trivial vbase initializers.  This case wouldn't</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="comment">// be subject to the restrictions below.</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span> </div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="comment">// TODO: white-list cases where:</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <span class="comment">//  - there are no non-reference parameters to the constructor</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <span class="comment">//  - the initializers don't access any non-reference parameters</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="comment">//  - the initializers don't take the address of non-reference</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     <span class="comment">//    parameters</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="comment">//  - etc.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>     <span class="comment">// If we ever add any of the above cases, remember that:</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     <span class="comment">//  - function-try-blocks will always blacklist this optimization</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     <span class="comment">//  - we need to perform the constructor prologue and cleanup in</span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     <span class="comment">//    EmitConstructorBody.</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span> </div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   }</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="comment">// We also disable the optimization for variadic functions because</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="comment">// it's impossible to "re-pass" varargs.</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordflow">if</span> (Ctor-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a>>()->isVariadic())</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> </div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <span class="comment">// FIXME: Decide if we can do a delegation of a delegating constructor.</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   <span class="keywordflow">if</span> (Ctor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aa6555ea88946685e5004f2204d2caeba" title="Determine whether this constructor is a delegating constructor.">isDelegatingConstructor</a>())</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span> }</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> <span class="comment"></span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="comment">/// EmitConstructorBody - Emits the body of the current constructor.</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a49e1139f732e8c69bd7bea32684ee8e5">  698</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a49e1139f732e8c69bd7bea32684ee8e5" title="EmitConstructorBody - Emits the body of the current constructor.">CodeGenFunction::EmitConstructorBody</a>(<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="l00699"></a><span class="lineno">  699</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Ctor = cast<CXXConstructorDecl>(<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="l00700"></a><span class="lineno">  700</span>   <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> CtorType = <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#a510cae7dd5d57ea1a0d8d89754fe6036">getCtorType</a>();</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">// Before we go any further, try the complete->base constructor</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="comment">// delegation optimization.</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keywordflow">if</span> (CtorType == <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a> && <a class="code" href="CGClass_8cpp.html#ae824ac02955c8469391437d90caaa2e1">IsConstructorDelegationValid</a>(Ctor) &&</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<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#a677074ebbe1eaf29bad0008fd8e5fe0b" title="Does this ABI have different entrypoints for complete-object and base-subobject constructors?">hasConstructorVariants</a>()) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>()) </div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       DI->EmitLocation(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, Ctor-><a class="code" href="classclang_1_1Decl.html#a6eb7b247deafb504e09a9d225bbea0c4">getLocEnd</a>());</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0d8c3c78ca5e1ab2ba0bf699044c6d2f">EmitDelegateCXXConstructorCall</a>(Ctor, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>, Args, Ctor-><a class="code" href="classclang_1_1Decl.html#a6eb7b247deafb504e09a9d225bbea0c4">getLocEnd</a>());</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   }</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> </div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Body = Ctor-><a class="code" href="classclang_1_1FunctionDecl.html#acc6487ca872768c9027e5f9684976b20">getBody</a>();</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">// Enter the function-try-block before the constructor prologue if</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="comment">// applicable.</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>   <span class="keywordtype">bool</span> IsTryBody = (Body && isa<CXXTryStmt>(Body));</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   <span class="keywordflow">if</span> (IsTryBody)</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae064b29757ae2b6085d4df62ea2df530">EnterCXXTryStmt</a>(*cast<CXXTryStmt>(Body), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> RunCleanups(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="comment">// TODO: in restricted cases, we can emit the vbase initializers of</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="comment">// a complete ctor and then delegate to the base ctor.</span></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">// Emit the constructor prologue, i.e. the base and member</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="comment">// initializers.</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9448604403768d2ad9d1b46a6538e1dd">EmitCtorPrologue</a>(Ctor, CtorType, Args);</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> </div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   <span class="comment">// Emit the body of the statement.</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="keywordflow">if</span> (IsTryBody)</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(cast<CXXTryStmt>(Body)->getTryBlock());</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Body)</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(Body);</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="comment">// Emit any cleanup blocks associated with the member or base</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="comment">// initializers, which includes (along the exceptional path) the</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="comment">// destructors for those members and bases that were fully</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="comment">// constructed.</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   RunCleanups.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html#a03074aa0531976ff3827c74d69789744" title="Force the emission of cleanups now, instead of waiting until this object is destroyed.">ForceCleanup</a>();</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span> </div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">if</span> (IsTryBody)</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1f782050e59094db58fbbd1b9e3f8c1">ExitCXXTryStmt</a>(*cast<CXXTryStmt>(Body), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span> }</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span> </div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span> <span class="comment">  /// RAII object to indicate that codegen is copying the value representation</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span> <span class="comment">  /// instead of the object representation. Useful when copying a struct or</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span> <span class="comment">  /// class which has uninitialized members and we're only performing</span></div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> <span class="comment">  /// lvalue-to-rvalue conversion on the object but not its members.</span></div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span> <span class="comment"></span>  <span class="keyword">class </span>CopyingValueRepresentation {</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <span class="keyword">explicit</span> CopyingValueRepresentation(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF)</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         : CGF(CGF), SO(*CGF.SanOpts), OldSanOpts(CGF.SanOpts) {</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       SO.Bool = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       SO.Enum = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fdcc483973530909c21f658646f71b0" title="Sanitizer options to use for this function.">SanOpts</a> = &SO;</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>     }</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>     ~CopyingValueRepresentation() {</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fdcc483973530909c21f658646f71b0" title="Sanitizer options to use for this function.">SanOpts</a> = OldSanOpts;</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     }</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF;</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <a class="code" href="structclang_1_1SanitizerOptions.html">SanitizerOptions</a> SO;</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>     <span class="keyword">const</span> <a class="code" href="structclang_1_1SanitizerOptions.html">SanitizerOptions</a> *OldSanOpts;</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   };</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> }</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span> </div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>   <span class="keyword">class </span>FieldMemcpyizer {</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     FieldMemcpyizer(<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> *ClassDecl,</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>                     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *SrcRec)</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>       : CGF(CGF), ClassDecl(ClassDecl), SrcRec(SrcRec), </div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>         RecLayout(CGF.getContext().getASTRecordLayout(ClassDecl)),</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         FirstField(0), LastField(0), FirstFieldOffset(0), LastFieldOffset(0),</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>         LastAddedFieldIndex(0) { }</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span> </div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>     <span class="keyword">static</span> <span class="keywordtype">bool</span> isMemcpyableField(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *F) {</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> Qual = F-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#a4a3d75cf019a2e769498ef8d6878888b" title="Retrieve the set of qualifiers applied to this type.">getQualifiers</a>();</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       <span class="keywordflow">if</span> (Qual.<a class="code" href="classclang_1_1Qualifiers.html#acde218ec4de3ae41e2e9c9fc3b5e7c07">hasVolatile</a>() || Qual.<a class="code" href="classclang_1_1Qualifiers.html#aeb4f70f6bf4f8248170b71a5eebd2df1">hasObjCLifetime</a>())</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     }</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> </div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keywordtype">void</span> addMemcpyableField(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *F) {</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       <span class="keywordflow">if</span> (FirstField == 0)</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>         addInitialField(F);</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>         addNextField(F);</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>     }</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span> </div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> getMemcpySize()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       <span class="keywordtype">unsigned</span> LastFieldSize =</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>         LastField->isBitField() ?</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>           LastField->getBitWidthValue(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) :</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(LastField->getType()); </div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>       uint64_t MemcpySizeBits =</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>         LastFieldOffset + LastFieldSize - FirstFieldOffset +</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>() - 1;</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> MemcpySize =</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a5d5f812ba1100ca9ef1c1a812b2f5a24" title="Convert a size in bits to a size in characters.">toCharUnitsFromBits</a>(MemcpySizeBits);</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       <span class="keywordflow">return</span> MemcpySize;</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     }</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span> </div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordtype">void</span> emitMemcpy() {</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       <span class="comment">// Give the subclass a chance to bail out if it feels the memcpy isn't</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       <span class="comment">// worth it (e.g. Hasn't aggregated enough data).</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       <span class="keywordflow">if</span> (FirstField == 0) {</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>       }</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment;</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="keywordflow">if</span> (FirstField->isBitField()) {</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html">CGRecordLayout</a> &RL =</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</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>(FirstField->getParent());</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>         <span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1CGBitFieldInfo.html" title="Structure with information about how a bitfield should be accessed.">CGBitFieldInfo</a> &BFInfo = RL.<a class="code" href="classclang_1_1CodeGen_1_1CGRecordLayout.html#a62dd98b26b76f667df40ad64035c38e3" title="Return the BitFieldInfo that corresponds to the field FD.">getBitFieldInfo</a>(FirstField);</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>         Alignment = <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(BFInfo.<a class="code" href="structclang_1_1CodeGen_1_1CGBitFieldInfo.html#a8bf933d70972c622bafae861fb3cb0b5" title="The alignment which should be used when accessing the bitfield.">StorageAlignment</a>);</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         Alignment = 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>(FirstField);</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       }</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span> </div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       assert((CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a5d5f812ba1100ca9ef1c1a812b2f5a24" title="Convert a size in bits to a size in characters.">toCharUnitsFromBits</a>(FirstFieldOffset) %</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>               Alignment) == 0 && <span class="stringliteral">"Bad field alignment."</span>);</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> </div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> MemcpySize = getMemcpySize();</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> RecordTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(ClassDecl);</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> DestLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(ThisPtr, RecordTy);</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Dest = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(DestLV, FirstField);</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr = 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>(SrcRec));</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> SrcLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(SrcPtr, RecordTy);</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Src = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(SrcLV, FirstField);</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span> </div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>       emitMemcpyIR(Dest.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8901b8a21b2acf2f4cdd27513824426e">isBitField</a>() ? Dest.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8beddd39439e5386ac98895739c75dc3">getBitFieldAddr</a>() : Dest.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(),</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>                    Src.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8901b8a21b2acf2f4cdd27513824426e">isBitField</a>() ? Src.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8beddd39439e5386ac98895739c75dc3">getBitFieldAddr</a>() : Src.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(),</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>                    MemcpySize, Alignment);</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       reset();</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</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="keywordtype">void</span> reset() {</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>       FirstField = 0;</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     }</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF;</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</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="l00848"></a><span class="lineno">  848</span> </div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span> </div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     <span class="keywordtype">void</span> emitMemcpyIR(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr,</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>                       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Size, <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment) {</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>       llvm::PointerType *DPT = cast<llvm::PointerType>(DestPtr->getType());</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>       llvm::Type *DBP =</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>         llvm::Type::getInt8PtrTy(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), DPT->getAddressSpace());</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>       DestPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(DestPtr, DBP);</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span> </div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>       llvm::PointerType *SPT = cast<llvm::PointerType>(SrcPtr->getType());</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>       llvm::Type *SBP =</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>         llvm::Type::getInt8PtrTy(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), SPT->getAddressSpace());</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>       SrcPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, SBP);</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> </div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(DestPtr, SrcPtr, Size.<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="l00864"></a><span class="lineno">  864</span>                                Alignment.<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="l00865"></a><span class="lineno">  865</span>     }</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> </div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>     <span class="keywordtype">void</span> addInitialField(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *F) {</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>         FirstField = F;</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>         LastField = F;</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>         FirstFieldOffset = RecLayout.getFieldOffset(F-><a class="code" href="classclang_1_1FieldDecl.html#a791f9f1096135e185996c5ba65491863">getFieldIndex</a>());</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>         LastFieldOffset = FirstFieldOffset;</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>         LastAddedFieldIndex = F-><a class="code" href="classclang_1_1FieldDecl.html#a791f9f1096135e185996c5ba65491863">getFieldIndex</a>();</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>         <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <span class="keywordtype">void</span> addNextField(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *F) {</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="comment">// For the most part, the following invariant will hold:</span></div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       <span class="comment">//   F->getFieldIndex() == LastAddedFieldIndex + 1</span></div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>       <span class="comment">// The one exception is that Sema won't add a copy-initializer for an</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>       <span class="comment">// unnamed bitfield, which will show up here as a gap in the sequence.</span></div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>       assert(F-><a class="code" href="classclang_1_1FieldDecl.html#a791f9f1096135e185996c5ba65491863">getFieldIndex</a>() >= LastAddedFieldIndex + 1 &&</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>              <span class="stringliteral">"Cannot aggregate fields out of order."</span>);</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       LastAddedFieldIndex = F-><a class="code" href="classclang_1_1FieldDecl.html#a791f9f1096135e185996c5ba65491863">getFieldIndex</a>();</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> </div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       <span class="comment">// The 'first' and 'last' fields are chosen by offset, rather than field</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       <span class="comment">// index. This allows the code to support bitfields, as well as regular</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       <span class="comment">// fields.</span></div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>       uint64_t FOffset = RecLayout.getFieldOffset(F-><a class="code" href="classclang_1_1FieldDecl.html#a791f9f1096135e185996c5ba65491863">getFieldIndex</a>());</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <span class="keywordflow">if</span> (FOffset < FirstFieldOffset) {</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>         FirstField = F;</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>         FirstFieldOffset = FOffset;</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FOffset > LastFieldOffset) {</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>         LastField = F;</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>         LastFieldOffset = FOffset;</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       }</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     }</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span> </div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *SrcRec;</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &RecLayout;</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FirstField;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *LastField;</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     uint64_t FirstFieldOffset, LastFieldOffset;</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <span class="keywordtype">unsigned</span> LastAddedFieldIndex;</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>   };</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span> </div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>   <span class="keyword">class </span>ConstructorMemcpyizer : <span class="keyword">public</span> FieldMemcpyizer {</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span> <span class="comment"></span></div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> <span class="comment">    /// Get source argument for copy constructor. Returns null if not a copy</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> <span class="comment">    /// constructor. </span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span> <span class="comment"></span>    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>* getTrivialCopySource(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD,</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</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="l00913"></a><span class="lineno">  913</span>       <span class="keywordflow">if</span> (CD-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>() && CD-><a class="code" href="classclang_1_1FunctionDecl.html#ade9df00e7c8e6d18bd681d10da7d9e13">isDefaulted</a>())</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>         <span class="keywordflow">return</span> Args[Args.size() - 1];</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>       <span class="keywordflow">return</span> 0; </div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     }</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span> </div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="comment">// Returns true if a CXXCtorInitializer represents a member initialization</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <span class="comment">// that can be rolled into a memcpy.</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     <span class="keywordtype">bool</span> isMemberInitMemcpyable(<a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *MemberInit)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>       <span class="keywordflow">if</span> (!MemcpyableCtor)</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>       <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a877f0bab49ff048f7e0faddf3f528977" title="If this is a member initializer, returns the declaration of the non-static data member being initiali...">getMember</a>();</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       assert(Field != 0 && <span class="stringliteral">"No field for member init."</span>);</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldType = Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>       <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CE = dyn_cast<<a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a>>(MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>());</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span> </div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>       <span class="comment">// Bail out on non-POD, not-trivially-constructable members.</span></div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       <span class="keywordflow">if</span> (!(CE && CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) &&</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>           !(FieldType.<a class="code" href="classclang_1_1QualType.html#a80414cacc0c19c9db6ba5c621c81a8f0">isTriviallyCopyableType</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) ||</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>             FieldType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()))</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span> </div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>       <span class="comment">// Bail out on volatile fields.</span></div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       <span class="keywordflow">if</span> (!isMemcpyableField(Field))</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span> </div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>       <span class="comment">// Otherwise we're good.</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     }</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span> </div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     ConstructorMemcpyizer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD,</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>                           <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args)</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       : FieldMemcpyizer(CGF, CD->getParent(), getTrivialCopySource(CD, Args)),</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>         ConstructorDecl(CD),</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>         MemcpyableCtor(CD->isDefaulted() &&</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>                        CD->isCopyOrMoveConstructor() &&</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>                        CGF.getLangOpts().getGC() == <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>::NonGC),</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>         Args(Args) { }</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span> </div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     <span class="keywordtype">void</span> addMemberInitializer(<a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *MemberInit) {</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>       <span class="keywordflow">if</span> (isMemberInitMemcpyable(MemberInit)) {</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>         AggregatedInits.push_back(MemberInit);</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>         addMemcpyableField(MemberInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a877f0bab49ff048f7e0faddf3f528977" title="If this is a member initializer, returns the declaration of the non-static data member being initiali...">getMember</a>());</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>         emitAggregatedInits();</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>         <a class="code" href="CGClass_8cpp.html#ab4c889df2f35e3dd252431b3c0a8f15e">EmitMemberInitializer</a>(CGF, ConstructorDecl->getParent(), MemberInit,</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>                               ConstructorDecl, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>);</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       }</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     }</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span> </div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>     <span class="keywordtype">void</span> emitAggregatedInits() {</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>       <span class="keywordflow">if</span> (AggregatedInits.size() <= 1) {</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>         <span class="comment">// This memcpy is too small to be worthwhile. Fall back on default</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>         <span class="comment">// codegen.</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>         <span class="keywordflow">if</span> (!AggregatedInits.empty()) {</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>           CopyingValueRepresentation CVR(CGF);</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>           <a class="code" href="CGClass_8cpp.html#ab4c889df2f35e3dd252431b3c0a8f15e">EmitMemberInitializer</a>(CGF, ConstructorDecl->getParent(),</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>                                 AggregatedInits[0], ConstructorDecl, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>);</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>         }</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>         reset();</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       }</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span> </div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>       pushEHDestructors();</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>       emitMemcpy();</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>       AggregatedInits.clear();</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>     }</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span> </div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     <span class="keywordtype">void</span> pushEHDestructors() {</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> RecordTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(ClassDecl);</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(ThisPtr, RecordTy);</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> </div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < AggregatedInits.size(); ++i) {</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldType = AggregatedInits[i]->getMember()->getType();</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>         <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = FieldType.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>         <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab5de8b85a1f54e0dd9d5dce5527faf23">needsEHCleanup</a>(dtorKind))</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8b6fda20a3bbdf536eb02b51af2f1007">pushEHDestroy</a>(dtorKind, LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), FieldType);</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>       }</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     }</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span> </div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     <span class="keywordtype">void</span> finish() {</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       emitAggregatedInits();</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     }</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span> </div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *ConstructorDecl;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="keywordtype">bool</span> MemcpyableCtor;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</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="l01002"></a><span class="lineno"> 1002</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CXXCtorInitializer*, 16></a> AggregatedInits;</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> </div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>   <span class="keyword">class </span>AssignmentMemcpyizer : <span class="keyword">public</span> FieldMemcpyizer {</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="comment">// Returns the memcpyable field copied by the given statement, if one</span></div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>     <span class="comment">// exists. Otherwise returns null.</span></div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *getMemcpyableField(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="keywordflow">if</span> (!AssignmentsMemcpyable)</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>         <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BO = dyn_cast<BinaryOperator>(S)) {</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>         <span class="comment">// Recognise trivial assignments.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>         <span class="keywordflow">if</span> (BO->getOpcode() != <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>)</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(BO->getLHS());</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>         <span class="keywordflow">if</span> (!ME)</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a>>(ME-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>());</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>         <span class="keywordflow">if</span> (!Field || !isMemcpyableField(Field))</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *RHS = BO->getRHS();</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *EC = dyn_cast<ImplicitCastExpr>(RHS))</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>           RHS = EC->getSubExpr();</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>         <span class="keywordflow">if</span> (!RHS)</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME2 = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(RHS);</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>         <span class="keywordflow">if</span> (dyn_cast<FieldDecl>(ME2-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()) != Field)</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>         <span class="keywordflow">return</span> Field;</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a> *MCE = dyn_cast<CXXMemberCallExpr>(S)) {</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</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<<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>>(MCE->getCalleeDecl());</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>         <span class="keywordflow">if</span> (!(MD && (MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#ad9fbe762f9ee0d3304fde847d7595a8b" title="Determine whether this is a copy-assignment operator, regardless of whether it was declared implicitl...">isCopyAssignmentOperator</a>() ||</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>                        MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#ae7f87d55ecf52215e8ae6c1d54a023af" title="Determine whether this is a move assignment operator.">isMoveAssignmentOperator</a>()) &&</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>               MD-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()))</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *IOA = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(MCE->getImplicitObjectArgument());</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>         <span class="keywordflow">if</span> (!IOA)</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a>>(IOA-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>());</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         <span class="keywordflow">if</span> (!Field || !isMemcpyableField(Field))</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *Arg0 = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(MCE->getArg(0));</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>         <span class="keywordflow">if</span> (!Arg0 || Field != dyn_cast<FieldDecl>(Arg0-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()))</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>         <span class="keywordflow">return</span> Field;</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *CE = dyn_cast<CallExpr>(S)) {</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>         <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = dyn_cast<<a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a>>(CE->getCalleeDecl());</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>         <span class="keywordflow">if</span> (!FD || FD-><a class="code" href="classclang_1_1FunctionDecl.html#afe9c9c5ac9a47620d9f61d7f4d99f147" title="Returns a value indicating whether this function corresponds to a builtin function.">getBuiltinID</a>() != Builtin::BI__builtin_memcpy)</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *DstPtr = CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(0);</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *DC = dyn_cast<ImplicitCastExpr>(DstPtr))</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>           DstPtr = DC->getSubExpr();</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>         <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *DUO = dyn_cast<<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>>(DstPtr);</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>         <span class="keywordflow">if</span> (!DUO || DUO-><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>() != <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>)</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(DUO-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>         <span class="keywordflow">if</span> (!ME)</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>         <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a>>(ME-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>());</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>         <span class="keywordflow">if</span> (!Field || !isMemcpyableField(Field))</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>         <a class="code" href="classclang_1_1Expr.html">Expr</a> *SrcPtr = CE-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(1);</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *SC = dyn_cast<ImplicitCastExpr>(SrcPtr))</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>           SrcPtr = SC->getSubExpr();</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>         <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *SUO = dyn_cast<<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a>>(SrcPtr);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>         <span class="keywordflow">if</span> (!SUO || SUO-><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>() != <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>)</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>         <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME2 = dyn_cast<<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>>(SUO-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>());</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         <span class="keywordflow">if</span> (!ME2 || Field != dyn_cast<FieldDecl>(ME2-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()))</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>           <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>         <span class="keywordflow">return</span> Field;</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       }</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     }</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     <span class="keywordtype">bool</span> AssignmentsMemcpyable;</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Stmt*, 16></a> AggregatedStmts;</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="keyword">public</span>:</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     AssignmentMemcpyizer(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <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> *AD,</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>                          <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args)</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>       : FieldMemcpyizer(CGF, AD->getParent(), Args[Args.size() - 1]),</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>         AssignmentsMemcpyable(CGF.getLangOpts().getGC() == <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>::NonGC) {</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>       assert(Args.size() == 2);</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     }</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>     <span class="keywordtype">void</span> emitAssignment(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *S) {</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>       <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *F = getMemcpyableField(S);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>       <span class="keywordflow">if</span> (F) {</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>         addMemcpyableField(F);</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>         AggregatedStmts.push_back(S);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       } <span class="keywordflow">else</span> {  </div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>         emitAggregatedStmts();</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(S);</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>     }</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="keywordtype">void</span> emitAggregatedStmts() {</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>       <span class="keywordflow">if</span> (AggregatedStmts.size() <= 1) {</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>         <span class="keywordflow">if</span> (!AggregatedStmts.empty()) {</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>           CopyingValueRepresentation CVR(CGF);</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(AggregatedStmts[0]);</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>         reset();</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>       }</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       emitMemcpy();</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>       AggregatedStmts.clear();</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> </div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>     <span class="keywordtype">void</span> finish() {</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>       emitAggregatedStmts();</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>   };</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> </div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> }</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> <span class="comment"></span></div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> <span class="comment">/// EmitCtorPrologue - This routine generates necessary code to initialize</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> <span class="comment">/// base classes and non-static data members belonging to this constructor.</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9448604403768d2ad9d1b46a6538e1dd"> 1124</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9448604403768d2ad9d1b46a6538e1dd">CodeGenFunction::EmitCtorPrologue</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD,</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>                                        <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> CtorType,</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>                                        <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args) {</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   <span class="keywordflow">if</span> (CD-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aa6555ea88946685e5004f2204d2caeba" title="Determine whether this constructor is a delegating constructor.">isDelegatingConstructor</a>())</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0b5db6ad527b2ce2ff2d7139aa393bf6">EmitDelegatingCXXConstructorCall</a>(CD, Args);</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> </div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = CD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   <a class="code" href="classclang_1_1CXXConstructorDecl.html#a6ad3e9edd9b8789dda1f8a62cb624569" title="Iterates through the member/base initializer list.">CXXConstructorDecl::init_const_iterator</a> B = CD-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a342b837a011730a22756813fdfd78c34" title="Retrieve an iterator to the first initializer.">init_begin</a>(),</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>                                           E = CD-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a0c10433e20b917c4077a097fde45f44e" title="Retrieve an iterator past the last initializer.">init_end</a>();</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   llvm::BasicBlock *BaseCtorContinueBB = 0;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   <span class="keywordflow">if</span> (ClassDecl-><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="l01137"></a><span class="lineno"> 1137</span>       !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<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#a677074ebbe1eaf29bad0008fd8e5fe0b" title="Does this ABI have different entrypoints for complete-object and base-subobject constructors?">hasConstructorVariants</a>()) {</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>     <span class="comment">// The ABIs that don't have constructor variants need to put a branch</span></div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>     <span class="comment">// before the virtual base initialization code.</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>     BaseCtorContinueBB =</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a813b9e28c94badf02fd8440f8e4b5c67">EmitCtorCompleteObjectHandler</a>(*<span class="keyword">this</span>, ClassDecl);</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     assert(BaseCtorContinueBB);</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   }</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>   <span class="comment">// Virtual base initializers first.</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   <span class="keywordflow">for</span> (; B != E && (*B)->isBaseInitializer() && (*B)->isBaseVirtual(); B++) {</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     <a class="code" href="CGClass_8cpp.html#a8eb0072e7e6f19c874fdc2c506e7222f">EmitBaseInitializer</a>(*<span class="keyword">this</span>, ClassDecl, *B, CtorType);</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>   }</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> </div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   <span class="keywordflow">if</span> (BaseCtorContinueBB) {</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>     <span class="comment">// Complete object handler should continue to the remaining initializers.</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(BaseCtorContinueBB);</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(BaseCtorContinueBB);</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> </div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>   <span class="comment">// Then, non-virtual base initializers.</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   <span class="keywordflow">for</span> (; B != E && (*B)->isBaseInitializer(); B++) {</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     assert(!(*B)->isBaseVirtual());</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     <a class="code" href="CGClass_8cpp.html#a8eb0072e7e6f19c874fdc2c506e7222f">EmitBaseInitializer</a>(*<span class="keyword">this</span>, ClassDecl, *B, CtorType);</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>   }</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">InitializeVTablePointers</a>(ClassDecl);</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>   <span class="comment">// And finally, initialize class members.</span></div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1FieldConstructionScope.html">FieldConstructionScope</a> FCS(*<span class="keyword">this</span>, CXXThisValue);</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>   ConstructorMemcpyizer CM(*<span class="keyword">this</span>, CD, Args);</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   <span class="keywordflow">for</span> (; B != E; B++) {</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     <a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *Member = (*B);</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>     assert(!Member-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a0e2696529273fc8648e681f4cc3b6894" title="Determine whether this initializer is initializing a base class.">isBaseInitializer</a>());</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     assert(Member-><a class="code" href="classclang_1_1CXXCtorInitializer.html#aa426b91b8497fdaaa42ebbd1dd1f81bc">isAnyMemberInitializer</a>() &&</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>            <span class="stringliteral">"Delegating initializer on non-delegating constructor"</span>);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     CM.addMemberInitializer(Member);</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   }</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   CM.finish();</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> </div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> <span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <a class="code" href="CGClass_8cpp.html#a860d05fa863ce59a8669061c7b877adc">FieldHasTrivialDestructorBody</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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field);</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="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#aa3b6b458d82e61bdf93fb28bf850d9f7"> 1181</a></span> <a class="code" href="CGClass_8cpp.html#aa3b6b458d82e61bdf93fb28bf850d9f7">HasTrivialDestructorBody</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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, </div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</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="l01183"></a><span class="lineno"> 1183</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *MostDerivedClassDecl)</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> {</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>   <span class="comment">// If the destructor is trivial we don't have to check anything else.</span></div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>   <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">getDestructor</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#adcd25791447803be2cad5264b91d61cb">hasTrivialBody</a>())</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>     <span class="keywordflow">return</span> <span class="keyword">false</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>   <span class="comment">// Check fields.</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1RecordDecl.html#a7351c179c5708122c856eb9ffb59c634">CXXRecordDecl::field_iterator</a> I = BaseClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>        E = BaseClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = *I;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     </div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     <span class="keywordflow">if</span> (!<a class="code" href="CGClass_8cpp.html#a860d05fa863ce59a8669061c7b877adc">FieldHasTrivialDestructorBody</a>(Context, Field))</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   }</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>   <span class="comment">// Check non-virtual bases.</span></div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</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 = </div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>        BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(), E = BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>();</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>     <span class="keywordflow">if</span> (I->isVirtual())</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> </div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *NonVirtualBase =</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       cast<CXXRecordDecl>(I->getType()->castAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     <span class="keywordflow">if</span> (!<a class="code" href="CGClass_8cpp.html#aa3b6b458d82e61bdf93fb28bf850d9f7">HasTrivialDestructorBody</a>(Context, NonVirtualBase,</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>                                   MostDerivedClassDecl))</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   }</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> </div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   <span class="keywordflow">if</span> (BaseClassDecl == MostDerivedClassDecl) {</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>     <span class="comment">// Check virtual bases.</span></div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</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 = </div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>          BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a8b9f14b77ec81f85caa231179c888a88">vbases_begin</a>(), E = BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac1d277188897e80f1b69bddad6a7f27e">vbases_end</a>();</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VirtualBase =</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>         cast<CXXRecordDecl>(I->getType()->castAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>       <span class="keywordflow">if</span> (!<a class="code" href="CGClass_8cpp.html#aa3b6b458d82e61bdf93fb28bf850d9f7">HasTrivialDestructorBody</a>(Context, VirtualBase,</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>                                     MostDerivedClassDecl))</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;      </div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>     }</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   }</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a860d05fa863ce59a8669061c7b877adc"> 1232</a></span> <a class="code" href="CGClass_8cpp.html#a860d05fa863ce59a8669061c7b877adc">FieldHasTrivialDestructorBody</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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>                               <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field)</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> {</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> FieldBaseElementType = Context.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> </div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = FieldBaseElementType-><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="l01238"></a><span class="lineno"> 1238</span>   <span class="keywordflow">if</span> (!RT)</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   </div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *FieldClassDecl = cast<CXXRecordDecl>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   <span class="keywordflow">return</span> <a class="code" href="CGClass_8cpp.html#aa3b6b458d82e61bdf93fb28bf850d9f7">HasTrivialDestructorBody</a>(Context, FieldClassDecl, FieldClassDecl);</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> }</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="comment"></span></div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="comment">/// CanSkipVTablePointerInitialization - Check whether we need to initialize</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="comment">/// any vtable pointers before calling this destructor.</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#a343a7d14e653ee4a7e8671374e605472"> 1247</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGClass_8cpp.html#a343a7d14e653ee4a7e8671374e605472">CanSkipVTablePointerInitialization</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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</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="l01249"></a><span class="lineno"> 1249</span>   <span class="keywordflow">if</span> (!Dtor-><a class="code" href="classclang_1_1FunctionDecl.html#adcd25791447803be2cad5264b91d61cb">hasTrivialBody</a>())</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="comment">// Check the fields.</span></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1RecordDecl.html#a7351c179c5708122c856eb9ffb59c634">CXXRecordDecl::field_iterator</a> I = ClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>        E = ClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = *I;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>     <span class="keywordflow">if</span> (!<a class="code" href="CGClass_8cpp.html#a860d05fa863ce59a8669061c7b877adc">FieldHasTrivialDestructorBody</a>(Context, Field))</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> }</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> <span class="comment"></span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> <span class="comment">/// EmitDestructorBody - Emits the body of the current destructor.</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8cc40069126da59c15741df0641b5837"> 1266</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8cc40069126da59c15741df0641b5837" title="EmitDestructorBody - Emits the body of the current destructor.">CodeGenFunction::EmitDestructorBody</a>(<a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args) {</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</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 = cast<CXXDestructorDecl>(<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="l01268"></a><span class="lineno"> 1268</span>   <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DtorType = <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#acf7986531ee9edab4d776465d455c82f">getDtorType</a>();</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>   <span class="comment">// The call to operator delete in a deleting destructor happens</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="comment">// outside of the function-try-block, which means it's always</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="comment">// possible to delegate the destructor body to the complete</span></div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   <span class="comment">// destructor.  Do so.</span></div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   <span class="keywordflow">if</span> (DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>) {</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a756a53dcc7e12790d102700e4fd97299">EnterDtorCleanups</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>);</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>, <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>                           <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>());</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>     <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="l01279"></a><span class="lineno"> 1279</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>   }</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> </div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Body = Dtor-><a class="code" href="classclang_1_1FunctionDecl.html#acc6487ca872768c9027e5f9684976b20">getBody</a>();</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> </div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>   <span class="comment">// If the body is a function-try-block, enter the try before</span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>   <span class="comment">// anything else.</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   <span class="keywordtype">bool</span> isTryBody = (Body && isa<CXXTryStmt>(Body));</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   <span class="keywordflow">if</span> (isTryBody)</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae064b29757ae2b6085d4df62ea2df530">EnterCXXTryStmt</a>(*cast<CXXTryStmt>(Body), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> </div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>   <span class="comment">// Enter the epilogue cleanups.</span></div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> DtorEpilogue(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>   </div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>   <span class="comment">// If this is the complete variant, just invoke the base variant;</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>   <span class="comment">// the epilogue will destruct the virtual bases.  But we can't do</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>   <span class="comment">// this optimization if the body is a function-try-block, because</span></div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>   <span class="comment">// we'd introduce *two* handler blocks.  In the Microsoft ABI, we </span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>   <span class="comment">// always delegate because we might not have a definition in this TU.</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   <span class="keywordflow">switch</span> (DtorType) {</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>: llvm_unreachable(<span class="stringliteral">"already handled deleting case"</span>);</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> </div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>:</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     assert((Body || <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().getCXXABI().isMicrosoft()) &&</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>            <span class="stringliteral">"can't emit a dtor without a body for non-Microsoft ABIs"</span>);</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     <span class="comment">// Enter the cleanup scopes for virtual bases.</span></div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a756a53dcc7e12790d102700e4fd97299">EnterDtorCleanups</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>);</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="keywordflow">if</span> (!isTryBody) {</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>, <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>                             <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>());</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>       <span class="keywordflow">break</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>     <span class="comment">// Fallthrough: act like we're in the base variant.</span></div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>       </div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>:</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     assert(Body);</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> </div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>     <span class="comment">// Enter the cleanup scopes for fields and non-virtual bases.</span></div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a756a53dcc7e12790d102700e4fd97299">EnterDtorCleanups</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>);</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>     <span class="comment">// Initialize the vtable pointers before entering the body.</span></div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>     <span class="keywordflow">if</span> (!<a class="code" href="CGClass_8cpp.html#a343a7d14e653ee4a7e8671374e605472">CanSkipVTablePointerInitialization</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), Dtor))</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">InitializeVTablePointers</a>(Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>());</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="keywordflow">if</span> (isTryBody)</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(cast<CXXTryStmt>(Body)->getTryBlock());</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Body)</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(Body);</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>       assert(Dtor-><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>() && <span class="stringliteral">"bodyless dtor not implicit"</span>);</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>       <span class="comment">// nothing to do besides what's in the epilogue</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>     }</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>     <span class="comment">// -fapple-kext must inline any call to this dtor into</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     <span class="comment">// the caller's body.</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().AppleKext)</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ade1be93e4c11e1945ef1c0d8bbc61ff8">CurFn</a>->addFnAttr(llvm::Attribute::AlwaysInline);</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>   }</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>   <span class="comment">// Jump out through the epilogue cleanups.</span></div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>   DtorEpilogue.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html#a03074aa0531976ff3827c74d69789744" title="Force the emission of cleanups now, instead of waiting until this object is destroyed.">ForceCleanup</a>();</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> </div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   <span class="comment">// Exit the try if applicable.</span></div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>   <span class="keywordflow">if</span> (isTryBody)</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1f782050e59094db58fbbd1b9e3f8c1">ExitCXXTryStmt</a>(*cast<CXXTryStmt>(Body), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> </div>
+<div class="line"><a name="l01348"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac31b0dae8fad258ae41ff3a36d09a761"> 1348</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac31b0dae8fad258ae41ff3a36d09a761">CodeGenFunction::emitImplicitAssignmentOperatorBody</a>(<a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args) {</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</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> *AssignOp = cast<CXXMethodDecl>(<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="l01350"></a><span class="lineno"> 1350</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *RootS = AssignOp-><a class="code" href="classclang_1_1FunctionDecl.html#acc6487ca872768c9027e5f9684976b20">getBody</a>();</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>   assert(isa<CompoundStmt>(RootS) &&</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>          <span class="stringliteral">"Body of an implicit assignment operator should be compound stmt."</span>);</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *RootCS = cast<CompoundStmt>(RootS);</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1LexicalScope.html">LexicalScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>, RootCS-><a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>());</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>   AssignmentMemcpyizer AM(*<span class="keyword">this</span>, AssignOp, Args);</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CompoundStmt.html#a9750d59c3c5fa551951901a40a3887da">CompoundStmt::const_body_iterator</a> I = RootCS-><a class="code" href="classclang_1_1CompoundStmt.html#a89f494cf13b72531e81c7b9a87db22a7">body_begin</a>(),</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>                                          E = RootCS-><a class="code" href="classclang_1_1CompoundStmt.html#a5bc934fe5cf3477500b1824a7e0d4db2">body_end</a>();</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     AM.emitAssignment(*I);  </div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>   }</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>   AM.finish();</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> }</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> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="comment">  /// Call the operator delete associated with the current destructor.</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="comment"></span>  <span class="keyword">struct </span>CallDtorDelete : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     CallDtorDelete() {}</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="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="l01372"></a><span class="lineno"> 1372</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 = cast<CXXDestructorDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>);</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6357cadd6625f4591aa04c901bb271af">EmitDeleteCall</a>(Dtor-><a class="code" href="classclang_1_1CXXDestructorDecl.html#a063b4c820f4e89e127deaa8a2690ffc0">getOperatorDelete</a>(), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>(),</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>                          CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">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>(ClassDecl));</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     }</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>   };</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>   <span class="keyword">struct </span>CallDtorDeleteConditional : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ShouldDeleteCondition;</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     CallDtorDeleteConditional(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ShouldDeleteCondition)</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>       : ShouldDeleteCondition(ShouldDeleteCondition) {</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>       assert(ShouldDeleteCondition != <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     }</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</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="l01388"></a><span class="lineno"> 1388</span>       llvm::BasicBlock *callDeleteBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dtor.call_delete"</span>);</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>       llvm::BasicBlock *continueBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dtor.continue"</span>);</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ShouldCallDelete</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>         = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(ShouldDeleteCondition);</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(ShouldCallDelete, continueBB, callDeleteBB);</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(callDeleteBB);</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</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 = cast<CXXDestructorDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>);</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6357cadd6625f4591aa04c901bb271af">EmitDeleteCall</a>(Dtor-><a class="code" href="classclang_1_1CXXDestructorDecl.html#a063b4c820f4e89e127deaa8a2690ffc0">getOperatorDelete</a>(), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>(),</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>                          CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">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>(ClassDecl));</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(continueBB);</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> </div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(continueBB);</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>     }</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>   };</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> </div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>   <span class="keyword">class </span>DestroyField  : <span class="keyword">public</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *field;</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer;</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>     <span class="keywordtype">bool</span> useEHCleanupForArray;</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>     DestroyField(<span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *field, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer,</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>                  <span class="keywordtype">bool</span> useEHCleanupForArray)</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>       : field(field), destroyer(destroyer),</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>         useEHCleanupForArray(useEHCleanupForArray) {}</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>     <span class="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="l01417"></a><span class="lineno"> 1417</span>       <span class="comment">// Find the address of the field.</span></div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *thisValue = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> RecordTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">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>(field->getParent());</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> ThisLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(thisValue, RecordTy);</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0fe5273873e8ce1fab483cd99ed84000">EmitLValueForField</a>(ThisLV, field);</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       assert(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>());</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>       </div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9aaad21865e78a4de5b46182c55f5a35">emitDestroy</a>(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), field->getType(), destroyer,</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>                       flags.isForNormalCleanup() && useEHCleanupForArray);</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>   };</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> }</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="comment"></span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="comment">/// EmitDtorEpilogue - Emit all code that comes at the end of class's</span></div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="comment">/// destructor. This is to call destructors on members and base classes</span></div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">/// in reverse order of their construction.</span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a756a53dcc7e12790d102700e4fd97299"> 1433</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a756a53dcc7e12790d102700e4fd97299">CodeGenFunction::EnterDtorCleanups</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD,</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>                                         <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DtorType) {</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   assert(!DD-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>() &&</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>          <span class="stringliteral">"Should not emit dtor epilogue for trivial dtor!"</span>);</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>   <span class="comment">// The deleting-destructor phase just needs to call the appropriate</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   <span class="comment">// operator delete that Sema picked up.</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   <span class="keywordflow">if</span> (DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>) {</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     assert(DD-><a class="code" href="classclang_1_1CXXDestructorDecl.html#a063b4c820f4e89e127deaa8a2690ffc0">getOperatorDelete</a>() && </div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>            <span class="stringliteral">"operator delete missing - EmitDtorEpilogue"</span>);</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>     <span class="keywordflow">if</span> (CXXStructorImplicitParamValue) {</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>       <span class="comment">// If there is an implicit param to the deleting dtor, it's a boolean</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>       <span class="comment">// telling whether we should call delete at the end of the dtor.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallDtorDeleteConditional>(</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>           <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, CXXStructorImplicitParamValue);</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallDtorDelete>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</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="keywordflow">return</span>;</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   }</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> </div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = DD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> </div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   <span class="comment">// Unions have no bases and do not call field destructors.</span></div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   <span class="keywordflow">if</span> (ClassDecl-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   <span class="comment">// The complete-destructor phase just destructs all the virtual bases.</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>   <span class="keywordflow">if</span> (DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>) {</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>     <span class="comment">// We push them in the forward order so that they'll be popped in</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     <span class="comment">// the reverse order.</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</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 = </div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>            ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a8b9f14b77ec81f85caa231179c888a88">vbases_begin</a>(), E = ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac1d277188897e80f1b69bddad6a7f27e">vbases_end</a>();</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>               I != E; ++I) {</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> &<a class="code" href="classclang_1_1Base.html">Base</a> = *I;</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</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="l01470"></a><span class="lineno"> 1470</span>         = cast<CXXRecordDecl>(Base.<a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</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="l01471"></a><span class="lineno"> 1471</span>     </div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>       <span class="comment">// Ignore trivial destructors.</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>       <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallBaseDtor>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>                                         BaseClassDecl,</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>                                         <span class="comment">/*BaseIsVirtual*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>     }</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> </div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   }</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> </div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   assert(DtorType == <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>);</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   </div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <span class="comment">// Destroy non-virtual bases.</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</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 = </div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>         ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(), E = ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> &<a class="code" href="classclang_1_1Base.html">Base</a> = *I;</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>     <span class="comment">// Ignore virtual bases.</span></div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>     <span class="keywordflow">if</span> (Base.<a class="code" href="classclang_1_1CXXBaseSpecifier.html#a052cc9c7e1fb5a7095469c3be012c3a4" title="Determines whether the base class is a virtual base class (or not).">isVirtual</a>())</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     </div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseClassDecl = Base.<a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</a>()-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>     </div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>     <span class="comment">// Ignore trivial destructors.</span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> </div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallBaseDtor>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>                                       BaseClassDecl,</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>                                       <span class="comment">/*BaseIsVirtual*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   }</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> </div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   <span class="comment">// Destroy direct fields.</span></div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const FieldDecl *, 16></a> FieldDecls;</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">CXXRecordDecl::field_iterator</a> I = ClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>        E = ClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *field = *I;</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</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> = field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = type.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     <span class="keywordflow">if</span> (!dtorKind) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> </div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>     <span class="comment">// Anonymous union members do not have their destructors called.</span></div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = type-><a class="code" href="classclang_1_1Type.html#ac3a0d3388d387f8ca1fe20b0095bd00a" title="NOTE: getAs*ArrayType are methods on ASTContext.">getAsUnionType</a>();</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     <span class="keywordflow">if</span> (RT && RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1RecordDecl.html#ad2dd151523eecb8d15149cc0937c3dff">isAnonymousStructOrUnion</a>()) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> </div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7774ca5dab3b221895fcbf1529084f5">getCleanupKind</a>(dtorKind);</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<DestroyField>(cleanupKind, field,</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind),</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>                                       cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>);</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>   }</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> }</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="comment"></span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="comment">/// EmitCXXAggrConstructorCall - Emit a loop to call a particular</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="comment">/// constructor for each of several members of an array.</span></div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> <span class="comment">/// \param ctor the constructor to call for each element</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <span class="comment">/// \param arrayType the type of the array to initialize</span></div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="comment">/// \param arrayBegin an arrayType*</span></div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="comment">/// \param zeroInitialize true if each element should be</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> <span class="comment">///   zero-initialized before it is constructed</span></div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474"> 1535</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474">CodeGenFunction::EmitCXXAggrConstructorCall</a>(<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="l01536"></a><span class="lineno"> 1536</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *arrayType,</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin,</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>                                           <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> argBegin,</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>                                             <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> argEnd,</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>                                             <span class="keywordtype">bool</span> zeroInitialize) {</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType;</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements =</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1613f1240d4d1a98118e495b96eb8a99">emitArrayLength</a>(arrayType, elementType, arrayBegin);</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474">EmitCXXAggrConstructorCall</a>(ctor, numElements, arrayBegin,</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>                              argBegin, argEnd, zeroInitialize);</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> <span class="comment"></span></div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> <span class="comment">/// EmitCXXAggrConstructorCall - Emit a loop to call a particular</span></div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="comment">/// constructor for each of several members of an array.</span></div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> <span class="comment">/// \param ctor the constructor to call for each element</span></div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> <span class="comment">/// \param numElements the number of elements in the array;</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> <span class="comment">///   may be zero</span></div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="comment">/// \param arrayBegin a T*, where T is the type constructed by ctor</span></div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="comment">/// \param zeroInitialize true if each element should be</span></div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="comment">///   zero-initialized before it is constructed</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a650da6aa79c9efb5765441204b59a3e5"> 1559</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474">CodeGenFunction::EmitCXXAggrConstructorCall</a>(<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="l01560"></a><span class="lineno"> 1560</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements,</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin,</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>                                          <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> argBegin,</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>                                            <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> argEnd,</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>                                             <span class="keywordtype">bool</span> zeroInitialize) {</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> </div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>   <span class="comment">// It's legal for numElements to be zero.  This can happen both</span></div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>   <span class="comment">// dynamically, because x can be zero in 'new A[x]', and statically,</span></div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>   <span class="comment">// because of GCC extensions that permit zero-length arrays.  There</span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   <span class="comment">// are probably legitimate places where we could assume that this</span></div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>   <span class="comment">// doesn't happen, but it's not clear that it's worth it.</span></div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   llvm::BranchInst *zeroCheckBranch = 0;</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> </div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>   <span class="comment">// Optimize for a constant count.</span></div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>   llvm::ConstantInt *constantCount</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>     = dyn_cast<llvm::ConstantInt>(numElements);</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>   <span class="keywordflow">if</span> (constantCount) {</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <span class="comment">// Just skip out if the constant count is zero.</span></div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">if</span> (constantCount->isZero()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> </div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>   <span class="comment">// Otherwise, emit the check.</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>     llvm::BasicBlock *loopBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"new.ctorloop"</span>);</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *iszero = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(numElements, <span class="stringliteral">"isempty"</span>);</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>     zeroCheckBranch = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(iszero, loopBB, loopBB);</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(loopBB);</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>   }</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>       </div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>   <span class="comment">// Find the end of the array.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(arrayBegin, numElements,</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>                                                     <span class="stringliteral">"arrayctor.end"</span>);</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> </div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>   <span class="comment">// Enter the loop, setting up a phi for the current location to initialize.</span></div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>   llvm::BasicBlock *entryBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>   llvm::BasicBlock *loopBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"arrayctor.loop"</span>);</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(loopBB);</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   llvm::PHINode *cur = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(arrayBegin->getType(), 2,</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>                                          <span class="stringliteral">"arrayctor.cur"</span>);</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   cur->addIncoming(arrayBegin, entryBB);</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> </div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   <span class="comment">// Inside the loop body, emit the constructor call on the array element.</span></div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>   <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> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>());</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span> </div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>   <span class="comment">// Zero initialize the storage, if requested.</span></div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <span class="keywordflow">if</span> (zeroInitialize)</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7344a3814e9742710d31ef902d639de2">EmitNullInitialization</a>(cur, type);</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   </div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   <span class="comment">// C++ [class.temporary]p4: </span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   <span class="comment">// There are two contexts in which temporaries are destroyed at a different</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>   <span class="comment">// point than the end of the full-expression. The first context is when a</span></div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>   <span class="comment">// default constructor is called to initialize an element of an array. </span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>   <span class="comment">// If the constructor has one or more default arguments, the destruction of </span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>   <span class="comment">// every temporary created in a default argument expression is sequenced </span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>   <span class="comment">// before the construction of the next array element, if any.</span></div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   </div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   {</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>);</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>     <span class="comment">// Evaluate the constructor and its arguments in a regular</span></div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="comment">// partial-destroy cleanup.</span></div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().Exceptions &&</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>         !ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>()) {</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">Destroyer</a> *destroyer = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4be898907517e22404c9140827358d90">destroyCXXObject</a>;</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a21c0cccb40980a1b634413a4bce5b277">pushRegularPartialArrayCleanup</a>(arrayBegin, cur, type, *destroyer);</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>     }</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> </div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e79cd96285d711efa7b3a77dfa4aa7a">EmitCXXConstructorCall</a>(ctor, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>, <span class="comment">/*ForVirtualBase=*/</span> <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>                            <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, cur, argBegin, argEnd);</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>   <span class="comment">// Go to the next element.</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *next =</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(cur, llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, 1),</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>                               <span class="stringliteral">"arrayctor.next"</span>);</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>   cur->addIncoming(next, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock());</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <span class="comment">// Check whether that's the end of the loop.</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *done = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(next, arrayEnd, <span class="stringliteral">"arrayctor.done"</span>);</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>   llvm::BasicBlock *contBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"arrayctor.cont"</span>);</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(done, contBB, loopBB);</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>   <span class="comment">// Patch the earlier check to skip over the loop.</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   <span class="keywordflow">if</span> (zeroCheckBranch) zeroCheckBranch->setSuccessor(0, contBB);</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> </div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(contBB);</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> }</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> </div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4be898907517e22404c9140827358d90">CodeGenFunction::destroyCXXObject</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>                                        <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr,</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</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="l01651"></a><span class="lineno"> 1651</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *rtype = type-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *record = cast<CXXRecordDecl>(rtype-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</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 = record->getDestructor();</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>   assert(!dtor->isTrivial());</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>, <span class="comment">/*for vbase*/</span> <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>                             <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, addr);</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> }</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e79cd96285d711efa7b3a77dfa4aa7a"> 1660</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e79cd96285d711efa7b3a77dfa4aa7a">CodeGenFunction::EmitCXXConstructorCall</a>(<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="l01661"></a><span class="lineno"> 1661</span>                                         <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a>, <span class="keywordtype">bool</span> ForVirtualBase,</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>                                         <span class="keywordtype">bool</span> Delegating,</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgBeg,</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgEnd) {</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>   <span class="comment">// If this is a trivial constructor, just emit what's needed.</span></div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>     <span class="keywordflow">if</span> (ArgBeg == ArgEnd) {</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>       <span class="comment">// Trivial default constructor, no codegen required.</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>       assert(D-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a261717abb407256031a905adf83711c7">isDefaultConstructor</a>() &&</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>              <span class="stringliteral">"trivial 0-arg ctor not a default ctor"</span>);</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>     }</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>     assert(ArgBeg + 1 == ArgEnd && <span class="stringliteral">"unexpected argcount for trivial ctor"</span>);</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     assert(D-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>() &&</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>            <span class="stringliteral">"trivial 1-arg ctor not a copy/move ctor"</span>);</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> </div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = (*ArgBeg);</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = E->getType();</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(E).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(This, Src, Ty);</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>   }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>   <span class="comment">// Non-trivial constructors are handled in an ABI-specific manner.</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ad6af788914ae24b25e671f9a31d3d0e2" title="Emit the constructor call. Return the function that is called.">EmitConstructorCall</a>(*<span class="keyword">this</span>, D, Type, ForVirtualBase,</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>                                       Delegating, This, ArgBeg, ArgEnd);</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> }</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> </div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01692"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaeba75ea2575ac1e0b62d87db08f4e79"> 1692</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaeba75ea2575ac1e0b62d87db08f4e79">CodeGenFunction::EmitSynthesizedCXXCopyCtorCall</a>(<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="l01693"></a><span class="lineno"> 1693</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src,</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgBeg,</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>                                         <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgEnd) {</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>     assert(ArgBeg + 1 == ArgEnd && <span class="stringliteral">"unexpected argcount for trivial ctor"</span>);</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>     assert(D-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aef52dbe6cecded9b37af3ba3c33e1951" title="Determine whether this is a copy or move constructor.">isCopyOrMoveConstructor</a>() &&</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>            <span class="stringliteral">"trivial 1-arg ctor not a copy/move ctor"</span>);</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(This, Src, (*ArgBeg)->getType());</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>   }</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a12cc84efba19aa22001f689ead8cfe0e">GetAddrOfCXXConstructor</a>(D, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">clang::Ctor_Complete</a>);</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>   assert(D-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>() &&</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>          <span class="stringliteral">"Trying to emit a member call expr on a static method!"</span>);</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>   </div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = D-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</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="l01708"></a><span class="lineno"> 1708</span>   </div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</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="l01710"></a><span class="lineno"> 1710</span>   </div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>   <span class="comment">// Push the this ptr.</span></div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>   Args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(This), D-><a class="code" href="classclang_1_1CXXMethodDecl.html#ace7608e37d6c9d0f4d2b08efa9fa7cd4" title="Returns the type of the this pointer.">getThisType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()));</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>   </div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>   </div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>   <span class="comment">// Push the src ptr.</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> QT = *(FPT->arg_type_begin());</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>   llvm::Type *t = <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#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(QT);</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   Src = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Src, t);</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>   Args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Src), QT);</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>   </div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>   <span class="comment">// Skip over first argument (Src).</span></div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>   ++ArgBeg;</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>   <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> Arg = ArgBeg;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1QualType.html">FunctionProtoType::arg_type_iterator</a> I = FPT->arg_type_begin()+1,</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>        E = FPT->arg_type_end(); I != E; ++I, ++Arg) {</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>     assert(Arg != ArgEnd && <span class="stringliteral">"Running over edge of argument list!"</span>);</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3" title="EmitCallArg - Emit a single call argument.">EmitCallArg</a>(Args, *Arg, *I);</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   }</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   <span class="comment">// Either we've emitted all the call args, or we have a call to a</span></div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   <span class="comment">// variadic function.</span></div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>   assert((Arg == ArgEnd || FPT->isVariadic()) &&</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>          <span class="stringliteral">"Extra arguments in non-variadic function!"</span>);</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>   <span class="comment">// If we still have any arguments, emit them using the type of the argument.</span></div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>   <span class="keywordflow">for</span> (; Arg != ArgEnd; ++Arg) {</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgType = Arg-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3" title="EmitCallArg - Emit a single call argument.">EmitCallArg</a>(Args, *Arg, ArgType);</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>   }</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>   </div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<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#ae4184432046c5c971e0256b32ef7deac" title="Arrange a call to a C++ method, passing the given arguments.">arrangeCXXMethodCall</a>(Args, FPT, <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>            Callee, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, D);</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> }</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> </div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01744"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0d8c3c78ca5e1ab2ba0bf699044c6d2f"> 1744</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0d8c3c78ca5e1ab2ba0bf699044c6d2f">CodeGenFunction::EmitDelegateCXXConstructorCall</a>(<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="l01745"></a><span class="lineno"> 1745</span>                                                 <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> CtorType,</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>                                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args,</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc) {</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> DelegateArgs;</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   FunctionArgList::const_iterator I = Args.begin(), E = Args.end();</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>   assert(I != E && <span class="stringliteral">"no parameters to constructor"</span>);</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> </div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>   <span class="comment">// this</span></div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   DelegateArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>()), (*I)->getType());</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>   ++I;</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> </div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>   <span class="comment">// vtt</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="keywordflow">if</span> (<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad7641cb509db3ec241eb5b8176ee0474">GetVTTParameter</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(Ctor, CtorType),</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>                                          <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>                                          <span class="comment">/*Delegating=*/</span><span class="keyword">true</span>)) {</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> VoidPP = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>     DelegateArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(VTT), VoidPP);</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> </div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a2fc647eb66cb16b9a0baca578924dbab" title="Return whether the given global decl needs a VTT parameter.">NeedsVTTParameter</a>(<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="l01765"></a><span class="lineno"> 1765</span>       assert(I != E && <span class="stringliteral">"cannot skip vtt parameter, already done with args"</span>);</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       assert((*I)->getType() == VoidPP && <span class="stringliteral">"skipping parameter not of vtt type"</span>);</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>       ++I;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>     }</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>   }</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span> </div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>   <span class="comment">// Explicit arguments.</span></div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   <span class="keywordflow">for</span> (; I != E; ++I) {</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *param = *I;</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>     <span class="comment">// FIXME: per-argument source location</span></div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3c6a1515396e7d07ad2584353b019302">EmitDelegateCallArg</a>(DelegateArgs, param, Loc);</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>   }</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> </div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a12cc84efba19aa22001f689ead8cfe0e">GetAddrOfCXXConstructor</a>(Ctor, CtorType);</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<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#a95d432af179284f5cd1117fa13621acb">arrangeCXXConstructorDeclaration</a>(Ctor, CtorType),</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>            Callee, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), DelegateArgs, Ctor);</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> }</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> </div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>   <span class="keyword">struct </span>CallDelegatingCtorDtor : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</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="l01786"></a><span class="lineno"> 1786</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="l01787"></a><span class="lineno"> 1787</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="l01788"></a><span class="lineno"> 1788</span> </div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>     CallDelegatingCtorDtor(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D, <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="l01790"></a><span class="lineno"> 1790</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="l01791"></a><span class="lineno"> 1791</span>       : Dtor(D), Addr(Addr), Type(Type) {}</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> </div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>     <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="l01794"></a><span class="lineno"> 1794</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(Dtor, <a class="code" href="classclang_1_1Type.html">Type</a>, <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>                                 <span class="comment">/*Delegating=*/</span><span class="keyword">true</span>, <a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a>);</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>     }</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>   };</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> }</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> </div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01801"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0b5db6ad527b2ce2ff2d7139aa393bf6"> 1801</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0b5db6ad527b2ce2ff2d7139aa393bf6">CodeGenFunction::EmitDelegatingCXXConstructorCall</a>(<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="l01802"></a><span class="lineno"> 1802</span>                                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args) {</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   assert(Ctor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#aa6555ea88946685e5004f2204d2caeba" title="Determine whether this constructor is a delegating constructor.">isDelegatingConstructor</a>());</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> </div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> </div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">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>(Ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>());</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(Ty);</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> AggSlot =</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(ThisPtr, Alignment, <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a>(),</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>);</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> </div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(Ctor-><a class="code" href="classclang_1_1CXXConstructorDecl.html#a342b837a011730a22756813fdfd78c34" title="Retrieve an iterator to the first initializer.">init_begin</a>()[0]-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>(), AggSlot);</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> </div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = Ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().Exceptions && !ClassDecl->hasTrivialDestructor()) {</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</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="l01820"></a><span class="lineno"> 1820</span>       <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#a510cae7dd5d57ea1a0d8d89754fe6036">getCtorType</a>() == <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a> ? <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a> : <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a642f2aa7faf76ed5f2ca52bb348a34e3" title="Base object dtor.">Dtor_Base</a>;</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> </div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallDelegatingCtorDtor>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>,</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>                                                 ClassDecl->getDestructor(),</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>                                                 ThisPtr, Type);</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>   }</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> }</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> </div>
+<div class="line"><a name="l01828"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d"> 1828</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">CodeGenFunction::EmitCXXDestructorCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD,</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</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="l01830"></a><span class="lineno"> 1830</span>                                             <span class="keywordtype">bool</span> ForVirtualBase,</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>                                             <span class="keywordtype">bool</span> Delegating,</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This) {</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>   <a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a> GD(DD, Type);</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTT = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad7641cb509db3ec241eb5b8176ee0474">GetVTTParameter</a>(GD, ForVirtualBase, Delegating);</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee = 0;</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().AppleKext)</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>     Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6f180f0ebce5cf14bd8282df14493e36">BuildAppleKextVirtualDestructorCall</a>(DD, Type, </div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>                                                  DD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>());</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>     </div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>   <span class="keywordflow">if</span> (!Callee)</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>     Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a153ebb1fd646f579b8116dbb76473c22">GetAddrOfCXXDestructor</a>(DD, Type);</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>   <span class="keywordflow">if</span> (DD-><a class="code" href="classclang_1_1CXXMethodDecl.html#abcaff495a9ded37cbe66b06973308b62">isVirtual</a>())</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>     This = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#afc0bd4f850ff49bb035da11f71c2dcd3">adjustThisArgumentForVirtualCall</a>(*<span class="keyword">this</span>, GD, This);</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span> </div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>   <span class="comment">// FIXME: Provide a source location here.</span></div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(DD, <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>(), This,</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>                     VTT, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerType(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>),</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>                     0, 0);</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> }</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> </div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>   <span class="keyword">struct </span>CallLocalDtor : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</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="l01855"></a><span class="lineno"> 1855</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="l01856"></a><span class="lineno"> 1856</span> </div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>     CallLocalDtor(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D, <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="l01858"></a><span class="lineno"> 1858</span>       : Dtor(D), Addr(Addr) {}</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> </div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</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="l01861"></a><span class="lineno"> 1861</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1c1e73523ce13aee93eeff5cc6fc26d">EmitCXXDestructorCall</a>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>,</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>                                 <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>                                 <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>, <a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a>);</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     }</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>   };</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> }</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> </div>
+<div class="line"><a name="l01868"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abf21d7373a4e9e09af9b8ea7647f0d52"> 1868</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0c00b4823b1c0d7e97e7fcfc8d1f271">CodeGenFunction::PushDestructorCleanup</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="l01869"></a><span class="lineno"> 1869</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="l01870"></a><span class="lineno"> 1870</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallLocalDtor>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, D, <a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a>);</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> }</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> </div>
+<div class="line"><a name="l01873"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0c00b4823b1c0d7e97e7fcfc8d1f271"> 1873</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0c00b4823b1c0d7e97e7fcfc8d1f271">CodeGenFunction::PushDestructorCleanup</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T, <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="l01874"></a><span class="lineno"> 1874</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *ClassDecl = T-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>   <span class="keywordflow">if</span> (!ClassDecl) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>   <span class="keywordflow">if</span> (ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> </div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *D = ClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">getDestructor</a>();</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>   assert(D && D-><a class="code" href="classclang_1_1Decl.html#ad588cec2ab8cfc2963b9ee5a9a21d304" title="Whether this declaration was used, meaning that a definition is required.">isUsed</a>() && <span class="stringliteral">"destructor not marked as used!"</span>);</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0c00b4823b1c0d7e97e7fcfc8d1f271">PushDestructorCleanup</a>(D, Addr);</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> }</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span> </div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01884"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a00887eab2838af6f08b5529ce61936e8"> 1884</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a00887eab2838af6f08b5529ce61936e8">CodeGenFunction::InitializeVTablePointer</a>(<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="l01885"></a><span class="lineno"> 1885</span>                                          <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="l01886"></a><span class="lineno"> 1886</span>                                          <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> OffsetFromNearestVBase,</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</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="l01888"></a><span class="lineno"> 1888</span>   <span class="comment">// Compute the address point.</span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>   <span class="keywordtype">bool</span> NeedsVirtualOffset;</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTableAddressPoint =</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ab2b919da7c62fb797121fce7403cd1ea">getVTableAddressPointInStructor</a>(</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>           *<span class="keyword">this</span>, VTableClass, Base, NearestVBase, NeedsVirtualOffset);</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   <span class="keywordflow">if</span> (!VTableAddressPoint)</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> </div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>   <span class="comment">// Compute where to store the address point.</span></div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VirtualOffset = 0;</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> NonVirtualOffset = <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="l01899"></a><span class="lineno"> 1899</span>   </div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>   <span class="keywordflow">if</span> (NeedsVirtualOffset) {</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>     <span class="comment">// We need to use the virtual base offset offset because the virtual base</span></div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>     <span class="comment">// might have a different offset in the most derived class.</span></div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>     VirtualOffset = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ab451da48f87e8b4c692872b36f18f007">GetVirtualBaseClassOffset</a>(*<span class="keyword">this</span>,</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>                                                               <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>(),</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>                                                               VTableClass,</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>                                                               NearestVBase);</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     NonVirtualOffset = OffsetFromNearestVBase;</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>     <span class="comment">// We can just use the base offset in the complete class.</span></div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>     NonVirtualOffset = Base.<a class="code" href="classclang_1_1BaseSubobject.html#a38b53e09f8f5d32b11e44ce4756bbd40" title="getBaseOffset - Returns the base class offset.">getBaseOffset</a>();</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>   }</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>   </div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   <span class="comment">// Apply the offsets.</span></div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTableField = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a239c983f96c4ab39307ffb5f99b73d7f">LoadCXXThis</a>();</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>   </div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>   <span class="keywordflow">if</span> (!NonVirtualOffset.<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>() || VirtualOffset)</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     VTableField = <a class="code" href="CGClass_8cpp.html#a5d2634620b21c291383b0f7bf3ed3ac4">ApplyNonVirtualAndVirtualOffset</a>(*<span class="keyword">this</span>, VTableField, </div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>                                                   NonVirtualOffset,</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>                                                   VirtualOffset);</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span> </div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>   <span class="comment">// Finally, store the address point.</span></div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>   llvm::Type *AddressPointPtrTy =</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     VTableAddressPoint->getType()->getPointerTo();</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>   VTableField = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(VTableField, AddressPointPtrTy);</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>   llvm::StoreInst *<a class="code" href="namespaceclang_1_1ento.html#ae512ebf5e0e9f696142c92f5b771ef39">Store</a> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(VTableAddressPoint, VTableField);</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a2bc7c2c5b15bdefaf8aba49a85c626a9">DecorateInstruction</a>(Store, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6fb7be3c2f4314bd1788fa9efae89e36">getTBAAInfoForVTablePtr</a>());</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> }</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01930"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7"> 1930</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">CodeGenFunction::InitializeVTablePointers</a>(<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="l01931"></a><span class="lineno"> 1931</span>                                           <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="l01932"></a><span class="lineno"> 1932</span>                                           <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> OffsetFromNearestVBase,</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>                                           <span class="keywordtype">bool</span> BaseIsNonVirtualPrimaryBase,</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</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="l01935"></a><span class="lineno"> 1935</span>                                           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a610e532dfc4005eda513ac7c3ff43645">VisitedVirtualBasesSetTy</a>& VBases) {</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>   <span class="comment">// If this base is a non-virtual primary base the address point has already</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>   <span class="comment">// been set.</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>   <span class="keywordflow">if</span> (!BaseIsNonVirtualPrimaryBase) {</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>     <span class="comment">// Initialize the vtable pointer for this base.</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a00887eab2838af6f08b5529ce61936e8">InitializeVTablePointer</a>(Base, NearestVBase, OffsetFromNearestVBase,</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>                             VTableClass);</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>   }</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>   </div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = Base.<a class="code" href="classclang_1_1BaseSubobject.html#a6cf1870b3f6f1dcf5660eb36cf2fa408" title="getBase - Returns the base class declaration.">getBase</a>();</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span> </div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>   <span class="comment">// Traverse bases.</span></div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</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 = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(), </div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>        E = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseDecl</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>       = cast<CXXRecordDecl>(I->getType()->getAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> </div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>     <span class="comment">// Ignore classes without a vtable.</span></div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>     <span class="keywordflow">if</span> (!BaseDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a33d393a3193c4006dcf7342caa73e535">isDynamicClass</a>())</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> </div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> BaseOffset;</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> BaseOffsetFromNearestVBase;</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>     <span class="keywordtype">bool</span> BaseDeclIsNonVirtualPrimaryBase;</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> </div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>     <span class="keywordflow">if</span> (I->isVirtual()) {</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       <span class="comment">// Check if we've visited this virtual base before.</span></div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>       <span class="keywordflow">if</span> (!VBases.insert(BaseDecl))</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = </div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(VTableClass);</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> </div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>       BaseOffset = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#afc9e06582d41a24ec356be836bb8775c" title="getVBaseClassOffset - Get the offset, in chars, for the given base class.">getVBaseClassOffset</a>(BaseDecl);</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>       BaseOffsetFromNearestVBase = <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="l01970"></a><span class="lineno"> 1970</span>       BaseDeclIsNonVirtualPrimaryBase = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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="l01973"></a><span class="lineno"> 1973</span> </div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>       BaseOffset = Base.<a class="code" href="classclang_1_1BaseSubobject.html#a38b53e09f8f5d32b11e44ce4756bbd40" title="getBaseOffset - Returns the base class offset.">getBaseOffset</a>() + Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(BaseDecl);</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>       BaseOffsetFromNearestVBase = </div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>         OffsetFromNearestVBase + Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(BaseDecl);</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>       BaseDeclIsNonVirtualPrimaryBase = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#a5b69ad223192d7201e8c4f8700352a7d" title="getPrimaryBase - Get the primary base for this record.">getPrimaryBase</a>() == BaseDecl;</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>     }</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     </div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">InitializeVTablePointers</a>(<a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a>(BaseDecl, BaseOffset), </div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>                              I->isVirtual() ? BaseDecl : NearestVBase,</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>                              BaseOffsetFromNearestVBase,</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>                              BaseDeclIsNonVirtualPrimaryBase, </div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>                              VTableClass, VBases);</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>   }</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> }</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> </div>
+<div class="line"><a name="l01988"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af22ae411dacf02336505252f6dce47a7"> 1988</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">CodeGenFunction::InitializeVTablePointers</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="l01989"></a><span class="lineno"> 1989</span>   <span class="comment">// Ignore classes without a vtable.</span></div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>   <span class="keywordflow">if</span> (!RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a33d393a3193c4006dcf7342caa73e535">isDynamicClass</a>())</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> </div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>   <span class="comment">// Initialize the vtable pointers for this class and all of its bases.</span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a610e532dfc4005eda513ac7c3ff43645">VisitedVirtualBasesSetTy</a> VBases;</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad8649c0f580ad9c60f9331dc3c39a5b7">InitializeVTablePointers</a>(<a class="code" href="classclang_1_1BaseSubobject.html">BaseSubobject</a>(RD, <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="l01996"></a><span class="lineno"> 1996</span>                            <span class="comment">/*NearestVBase=*/</span>0, </div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>                            <span class="comment">/*OffsetFromNearestVBase=*/</span><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="l01998"></a><span class="lineno"> 1998</span>                            <span class="comment">/*BaseIsNonVirtualPrimaryBase=*/</span><span class="keyword">false</span>, RD, VBases);</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>   <span class="keywordflow">if</span> (RD-><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="l02001"></a><span class="lineno"> 2001</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a13ee6538bdf198224fde2e5f64fdb4a0">initializeHiddenVirtualInheritanceMembers</a>(*<span class="keyword">this</span>, RD);</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> }</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span> </div>
+<div class="line"><a name="l02004"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272"> 2004</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">CodeGenFunction::GetVTablePtr</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>                                            llvm::Type *Ty) {</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTablePtrSrc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(This, Ty->getPointerTo());</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>   llvm::Instruction *VTable = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(VTablePtrSrc, <span class="stringliteral">"vtable"</span>);</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a2bc7c2c5b15bdefaf8aba49a85c626a9">DecorateInstruction</a>(VTable, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6fb7be3c2f4314bd1788fa9efae89e36">getTBAAInfoForVTablePtr</a>());</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>   <span class="keywordflow">return</span> VTable;</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> }</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> </div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> </div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> <span class="comment">// FIXME: Ideally Expr::IgnoreParenNoopCasts should do this, but it doesn't do</span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> <span class="comment">// quite what we want.</span></div>
+<div class="line"><a name="l02015"></a><span class="lineno"><a class="code" href="CGClass_8cpp.html#aaa90294fc2c271ec367d6611c4d93868"> 2015</a></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="CGClass_8cpp.html#aaa90294fc2c271ec367d6611c4d93868">skipNoOpCastsAndParens</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *PE = dyn_cast<ParenExpr>(E)) {</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>       E = PE->getSubExpr();</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>     }</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *CE = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>       <span class="keywordflow">if</span> (CE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>) {</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>         E = CE->getSubExpr();</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>       }</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>     }</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = dyn_cast<UnaryOperator>(E)) {</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>       <span class="keywordflow">if</span> (UO->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>) {</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>         E = UO->getSubExpr();</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>       }</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>     }</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>     <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>   }</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span> }</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> </div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l02039"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a383e8c56f76a6fa5d2c665538b148826"> 2039</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a383e8c56f76a6fa5d2c665538b148826">CodeGenFunction::CanDevirtualizeMemberFunctionCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Base.html">Base</a>,</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</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) {</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>   <span class="comment">// When building with -fapple-kext, all calls must go through the vtable since</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>   <span class="comment">// the kernel linker can do runtime patching of vtables.</span></div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().AppleKext)</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   <span class="comment">// If the most derived class is marked final, we know that no subclass can</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>   <span class="comment">// override this member function and so we can devirtualize it. For example:</span></div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>   <span class="comment">// struct A { virtual void f(); }</span></div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>   <span class="comment">// struct B final : A { };</span></div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   <span class="comment">// void f(B *b) {</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>   <span class="comment">//   b->f();</span></div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>   <span class="comment">// }</span></div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *MostDerivedClassDecl = Base-><a class="code" href="classclang_1_1Expr.html#a3850b5db8a316c79f4ca87126a37a1b1" title="For an expression of class type or pointer to class type, return the most derived class decl the expr...">getBestDynamicClassType</a>();</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>   <span class="keywordflow">if</span> (MostDerivedClassDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1FinalAttr.html">FinalAttr</a>>())</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> </div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>   <span class="comment">// If the member function is marked 'final', we know that it can't be</span></div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>   <span class="comment">// overridden and can therefore devirtualize it.</span></div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1FinalAttr.html">FinalAttr</a>>())</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> </div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>   <span class="comment">// Similarly, if the class itself is marked 'final' it can't be overridden</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>   <span class="comment">// and we can therefore devirtualize the member function call.</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1FinalAttr.html">FinalAttr</a>>())</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>   Base = <a class="code" href="CGClass_8cpp.html#aaa90294fc2c271ec367d6611c4d93868">skipNoOpCastsAndParens</a>(Base);</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>   <span class="keywordflow">if</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 = dyn_cast<DeclRefExpr>(Base)) {</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = dyn_cast<VarDecl>(DRE->getDecl())) {</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>       <span class="comment">// This is a record decl. We know the type and can devirtualize it.</span></div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>       <span class="keywordflow">return</span> VD->getType()->isRecordType();</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>     }</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>     </div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>   }</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> </div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="comment">// We can devirtualize calls on an object accessed by a class member access</span></div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>   <span class="comment">// expression, since by C++11 [basic.life]p6 we know that it can't refer to</span></div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="comment">// a derived class object constructed in the same location.</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = dyn_cast<MemberExpr>(Base))</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *VD = dyn_cast<ValueDecl>(ME-><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()))</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>       <span class="keywordflow">return</span> VD->getType()->isRecordType();</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> </div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>   <span class="comment">// We can always devirtualize calls on temporary object expressions.</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   <span class="keywordflow">if</span> (isa<CXXConstructExpr>(Base))</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   </div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>   <span class="comment">// And calls on bound temporaries.</span></div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>   <span class="keywordflow">if</span> (isa<CXXBindTemporaryExpr>(Base))</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>   </div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>   <span class="comment">// Check if this is a call expr that returns a record type.</span></div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *CE = dyn_cast<CallExpr>(Base))</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>     <span class="keywordflow">return</span> CE->getCallReturnType()->isRecordType();</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> </div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   <span class="comment">// We can't devirtualize the call.</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> }</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> </div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l02104"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7d130f8d4fd24eba65279eae83adecd2"> 2104</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7d130f8d4fd24eba65279eae83adecd2">CodeGenFunction::EmitCXXOperatorMemberCallee</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXOperatorCallExpr.html" title="A call to an overloaded operator written using operator syntax.">CXXOperatorCallExpr</a> *E,</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</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,</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>                                              <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This) {</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>   llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>     <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>(</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>                              <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#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(MD));</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> </div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#abcaff495a9ded37cbe66b06973308b62">isVirtual</a>() && !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a383e8c56f76a6fa5d2c665538b148826">CanDevirtualizeMemberFunctionCall</a>(E-><a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(0), MD))</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ab533b14ae65b92ae79363d61add2178c" title="Build a virtual function pointer in the ABI-specific way.">getVirtualFunctionPointer</a>(*<span class="keyword">this</span>, MD, This, fnType);</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> </div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(MD, fnType);</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> }</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> </div>
+<div class="line"><a name="l02117"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2e32bbc2f2bf59f461f5ddb3e29ebc57"> 2117</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2e32bbc2f2bf59f461f5ddb3e29ebc57">CodeGenFunction::EmitForwardingCallToLambda</a>(</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</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> *callOperator,</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &callArgs) {</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>   <span class="comment">// Get the address of the call operator.</span></div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &calleeFnInfo =</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>     <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#a377fa72d0193d3c6fa389a8bdb35237c">arrangeCXXMethodDeclaration</a>(callOperator);</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *callee =</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(callOperator),</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>                           <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>(calleeFnInfo));</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> </div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>   <span class="comment">// Prepare the return slot.</span></div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT =</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>     callOperator-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><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="l02130"></a><span class="lineno"> 2130</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> resultType = FPT-><a class="code" href="classclang_1_1FunctionType.html#aafa453cd7e81a7c3d6c61f261e68afe8">getResultType</a>();</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>   <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> returnSlot;</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>   <span class="keywordflow">if</span> (!resultType->isVoidType() &&</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>       calleeFnInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ac0f497df111824e55810d0e389f8b7ae">getReturnInfo</a>().<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>() == <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a> &&</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>       !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">hasScalarEvaluationKind</a>(calleeFnInfo.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a30c5ff80d845c6b4a36f1628651f8fed">getReturnType</a>()))</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>     returnSlot = <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, resultType.isVolatileQualified());</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> </div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>   <span class="comment">// We don't need to separately arrange the call arguments because</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   <span class="comment">// the call can't be variadic anyway --- it's impossible to forward</span></div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>   <span class="comment">// variadic arguments.</span></div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   </div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   <span class="comment">// Now emit our call.</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(calleeFnInfo, callee, returnSlot,</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>                        callArgs, callOperator);</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>   <span class="comment">// If necessary, copy the returned value into the slot.</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>   <span class="keywordflow">if</span> (!resultType->isVoidType() && returnSlot.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a9128d2eb4842b48578d34071997756f0">isNull</a>())</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>     EmitReturnOfRValue(RV, resultType);</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5267fb1f19ad8f353488a7a12217117a" title="Terminate the current block by emitting a branch which might leave the current cleanup-protected scop...">EmitBranchThroughCleanup</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5c02aeebf59b634764acfdd48202973c" title="ReturnBlock - Unified return block.">ReturnBlock</a>);</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> }</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> </div>
+<div class="line"><a name="l02152"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac7ebd4960f163e94a358a9db9dcdea10"> 2152</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac7ebd4960f163e94a358a9db9dcdea10">CodeGenFunction::EmitLambdaBlockInvokeBody</a>() {</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1BlockDecl.html">BlockDecl</a> *BD = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a49e7f272c19bddf53ac3ca76b76e875e">BlockInfo</a>-><a class="code" href="classclang_1_1CodeGen_1_1CGBlockInfo.html#affe81dbd8e6ab4eb465902a3199ea5be">getBlockDecl</a>();</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *variable = BD-><a class="code" href="classclang_1_1BlockDecl.html#ab22e740e64eb0eb9b79f8cd043b07606">capture_begin</a>()-><a class="code" href="classclang_1_1BlockDecl_1_1Capture.html#a0ef6c39debd4f72aec7392f6a8e4bbea" title="The variable being captured.">getVariable</a>();</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Lambda = variable-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> </div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>   <span class="comment">// Start building arguments for forwarding call</span></div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> CallArgs;</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> </div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ThisType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="SemaDeclAttr_8cpp.html#a47816555e3d10080c4b8e8e1d08e5b05" title="Checks that the passed in QualType either is of RecordType or points to RecordType. Returns the relevant RecordType, null if it does not exit.">getRecordType</a>(Lambda));</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a58d27be2d336b0dd7499df659ae75f8b">GetAddrOfBlockDecl</a>(variable, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>   CallArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(ThisPtr), ThisType);</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> </div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>   <span class="comment">// Add the rest of the parameters.</span></div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1BlockDecl.html#a57653e863bd94265c26757722eb993bd">BlockDecl::param_const_iterator</a> I = BD-><a class="code" href="classclang_1_1BlockDecl.html#a7c7e03c529594460a5c33a527297bb66">param_begin</a>(),</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>        E = BD-><a class="code" href="classclang_1_1BlockDecl.html#a353976636542f283812278b7e7572c96">param_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>     <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *param = *I;</div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3c6a1515396e7d07ad2584353b019302">EmitDelegateCallArg</a>(CallArgs, param, param-><a class="code" href="classclang_1_1DeclaratorDecl.html#a6d2ddcefd349a098905a94c33732c51e">getLocStart</a>());</div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>   }</div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>   assert(!Lambda-><a class="code" href="classclang_1_1CXXRecordDecl.html#a29bc520934e0f53eab7fcf8af73fcaa2" title="Determine whether this class describes a generic lambda function object (i.e. function call operator ...">isGenericLambda</a>() && </div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>             <span class="stringliteral">"generic lambda interconversion to block not implemented"</span>);</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2e32bbc2f2bf59f461f5ddb3e29ebc57">EmitForwardingCallToLambda</a>(Lambda-><a class="code" href="classclang_1_1CXXRecordDecl.html#a024521a61554035c2b3b0ce02c9ec18e" title="Retrieve the lambda call operator of the closure type if this is a closure type.">getLambdaCallOperator</a>(), CallArgs);</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> }</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> </div>
+<div class="line"><a name="l02175"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6b2d8e96d85fb97af70adfb5c8472428"> 2175</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6b2d8e96d85fb97af70adfb5c8472428">CodeGenFunction::EmitLambdaToBlockPointerBody</a>(<a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> &Args) {</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>   <span class="keywordflow">if</span> (cast<CXXMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>)->isVariadic()) {</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>     <span class="comment">// FIXME: Making this work correctly is nasty because it requires either</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     <span class="comment">// cloning the body of the call operator or making the call operator forward.</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>, <span class="stringliteral">"lambda conversion to variadic function"</span>);</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>   }</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> </div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae2f0f77723b72f464e07ab43db18f929">EmitFunctionBody</a>(Args, cast<FunctionDecl>(<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>())->getBody());</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> }</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> </div>
+<div class="line"><a name="l02186"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa9ffc2e04dd440631250e4ee41f28b35"> 2186</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa9ffc2e04dd440631250e4ee41f28b35">CodeGenFunction::EmitLambdaDelegatingInvokeBody</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="l02187"></a><span class="lineno"> 2187</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Lambda = MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> </div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>   <span class="comment">// Start building arguments for forwarding call</span></div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> CallArgs;</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span> </div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ThisType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="SemaDeclAttr_8cpp.html#a47816555e3d10080c4b8e8e1d08e5b05" title="Checks that the passed in QualType either is of RecordType or points to RecordType. Returns the relevant RecordType, null if it does not exit.">getRecordType</a>(Lambda));</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = llvm::UndefValue::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(ThisType));</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   CallArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(ThisPtr), ThisType);</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> </div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>   <span class="comment">// Add the rest of the parameters.</span></div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1FunctionDecl.html#acd4759dcc88e4125a177456fb575bf12">FunctionDecl::param_const_iterator</a> I = MD-><a class="code" href="classclang_1_1FunctionDecl.html#a48678562009dc8b21f0e4611eb96c433">param_begin</a>(),</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>        E = MD-><a class="code" href="classclang_1_1FunctionDecl.html#a1dc6d06fe673db5053adfa3160f3175f">param_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>     <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *param = *I;</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3c6a1515396e7d07ad2584353b019302">EmitDelegateCallArg</a>(CallArgs, param, param-><a class="code" href="classclang_1_1DeclaratorDecl.html#a6d2ddcefd349a098905a94c33732c51e">getLocStart</a>());</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>   }</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</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> *CallOp = Lambda-><a class="code" href="classclang_1_1CXXRecordDecl.html#a024521a61554035c2b3b0ce02c9ec18e" title="Retrieve the lambda call operator of the closure type if this is a closure type.">getLambdaCallOperator</a>();</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   <span class="comment">// For a generic lambda, find the corresponding call operator specialization</span></div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>   <span class="comment">// to which the call to the static-invoker shall be forwarded.</span></div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>   <span class="keywordflow">if</span> (Lambda-><a class="code" href="classclang_1_1CXXRecordDecl.html#a29bc520934e0f53eab7fcf8af73fcaa2" title="Determine whether this class describes a generic lambda function object (i.e. function call operator ...">isGenericLambda</a>()) {</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>     assert(MD-><a class="code" href="classclang_1_1FunctionDecl.html#a4dfdf65e32e5028e4715cd63a1638e4f" title="Determine whether this function is a function template specialization.">isFunctionTemplateSpecialization</a>());</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentList.html" title="A template argument list.">TemplateArgumentList</a> *TAL = MD-><a class="code" href="classclang_1_1FunctionDecl.html#a63ce991fd23d2836a87efc97d00e54ea" title="Retrieve the template arguments used to produce this function template specialization from the primar...">getTemplateSpecializationArgs</a>();</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>     <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *CallOpTemplate = CallOp-><a class="code" href="classclang_1_1FunctionDecl.html#a88c31f0a03a609ba42f357cd458ec0c6" title="Retrieves the function template that is described by this function declaration.">getDescribedFunctionTemplate</a>();</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>     <span class="keywordtype">void</span> *InsertPos = 0;</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>     <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *CorrespondingCallOpSpecialization = </div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>         CallOpTemplate-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#a85bcdf8105fadc406c71bf27bea32ea3" title="Return the specialization with the provided arguments if it exists, otherwise return the insertion po...">findSpecialization</a>(TAL->data(), TAL->size(), InsertPos); </div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>     assert(CorrespondingCallOpSpecialization);</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>     CallOp = cast<CXXMethodDecl>(CorrespondingCallOpSpecialization);</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>   }</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2e32bbc2f2bf59f461f5ddb3e29ebc57">EmitForwardingCallToLambda</a>(CallOp, CallArgs);</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> }</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> </div>
+<div class="line"><a name="l02218"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3b8b2fd8e45e8f0f0607bf6fa0cd7072"> 2218</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3b8b2fd8e45e8f0f0607bf6fa0cd7072">CodeGenFunction::EmitLambdaStaticInvokeFunction</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="l02219"></a><span class="lineno"> 2219</span>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1FunctionDecl.html#a8c18b2a2c86dae37e7eca35c09381466" title="Whether this function is variadic.">isVariadic</a>()) {</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>     <span class="comment">// FIXME: Making this work correctly is nasty because it requires either</span></div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>     <span class="comment">// cloning the body of the call operator or making the call operator forward.</span></div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(MD, <span class="stringliteral">"lambda conversion to variadic function"</span>);</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>   }</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> </div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa9ffc2e04dd440631250e4ee41f28b35">EmitLambdaDelegatingInvokeBody</a>(MD);</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:22 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/CGClass_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGClass_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,724 @@
+<!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: CGClass.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">CGClass.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGClass_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/CGClass.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGClass.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGClass.cpp CGBlocks.h CGBuilder.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.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/ADT/StringRef.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/IR/Use.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/Casting.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/DebugLoc.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</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="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGCall.h \
+ CGValue.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</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="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</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="l00102"></a><span class="lineno">  102</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="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h EHScopeStack.h \
+ ABIInfo.h CodeGenFunction.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CodeGenModule.h \
+ CGVTables.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</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="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h CodeGenTypes.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.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 CGRecordLayout.h \
+ CGCXXABI.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclTemplate.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/EvaluatedExprVisitor.h \</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtVisitor.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtOpenMP.h \</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.h \</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.def \</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetBuiltins.h \</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.h \</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsAArch64.def \</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/arm_neon.inc \</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsARM.def \</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsPPC.def \</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsNVPTX.def \</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsX86.def \</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsHexagon.def \</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsMips.def \</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsXCore.def</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> CGBlocks.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> CGBuilder.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/include/llvm/IR/IRBuilder.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/include/llvm/ADT/ArrayRef.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/include/llvm/ADT/None.h:</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/include/llvm/ADT/SmallVector.h:</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/include/llvm/Support/AlignOf.h:</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/include/llvm/Support/Compiler.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/include/llvm/Config/llvm-config.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/Support/MathExtras.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/Support/SwapByteOrder.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/include/llvm/Support/DataTypes.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/include/llvm/Support/type_traits.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/include/llvm/ADT/StringRef.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/include/llvm/ADT/Twine.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/include/llvm/Support/ErrorHandling.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/include/llvm/IR/BasicBlock.h:</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/include/llvm/ADT/ilist.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/include/llvm/IR/Instruction.h:</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/ilist_node.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/IR/User.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/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</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/include/llvm/IR/Use.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/include/llvm/ADT/PointerIntPair.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/include/llvm/Support/PointerLikeTypeTraits.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/Support/CBindingWrapping.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/include/llvm/Support/Casting.h:</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/include/llvm-c/Core.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/include/llvm/Support/DebugLoc.h:</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/include/llvm/IR/Instruction.def:</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/IR/SymbolTableListTraits.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/include/llvm/IR/DataLayout.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/include/llvm/ADT/DenseMap.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/ADT/DenseMapInfo.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/include/llvm/IR/DerivedTypes.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/include/llvm/IR/Type.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/include/llvm/ADT/APFloat.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/include/llvm/ADT/APInt.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/include/llvm/Pass.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/include/llvm/PassSupport.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/include/llvm/Pass.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/include/llvm/InitializePasses.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/PassRegistry.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/Support/Atomic.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/include/llvm/Support/Valgrind.h:</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/PassAnalysisSupport.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/IR/Instructions.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/IR/Attributes.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/ADT/FoldingSet.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/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="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> /home/tstellar/llvm/include/llvm/IR/InstrTypes.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/include/llvm/IR/OperandTraits.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/include/llvm/IR/LLVMContext.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/include/llvm/IR/Operator.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/include/llvm/IR/Constants.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/include/llvm/IR/Constant.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/include/llvm/Support/GetElementPtrTypeIterator.h:</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/include/llvm/Support/ConstantFolder.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/include/llvm/Support/ValueHandle.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> CGCall.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> CGValue.h:</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/ASTContext.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/AST/ASTTypeTraits.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/AST/ASTFwd.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/AST/DeclNodes.inc:</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/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</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/AST/TypeNodes.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/AST/Decl.h:</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/AST/APValue.h:</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/Basic/LLVM.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/include/llvm/ADT/APSInt.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/include/llvm/ADT/PointerUnion.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/AST/DeclBase.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/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.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/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.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/IdentifierTable.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/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.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/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</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/Basic/TokenKinds.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/TokenKinds.def:</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/include/llvm/ADT/SmallString.h:</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/StringMap.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/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</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/Basic/PartialDiagnostic.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/Diagnostic.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/Basic/DiagnosticIDs.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/include/llvm/ADT/IntrusiveRefCntPtr.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/Basic/DiagnosticCommonKinds.inc:</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/Basic/DiagnosticOptions.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/Basic/DiagnosticOptions.def:</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/Basic/SourceLocation.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/include/llvm/ADT/STLExtras.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/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="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/Specifiers.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/include/llvm/Support/PrettyStackTrace.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/AST/ExternalASTSource.h:</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/CharUnits.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/AST/Redeclarable.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/AST/Type.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/AST/NestedNameSpecifier.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/AST/TemplateName.h:</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/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="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</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="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> </div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> </div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> </div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</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> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> </div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> </div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> </div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> </div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> </div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> </div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> EHScopeStack.h:</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> ABIInfo.h:</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> CodeGenFunction.h:</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> CGDebugInfo.h:</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> </div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> </div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def:</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</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> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</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> /home/tstellar/llvm/include/llvm/Support/Dwarf.h:</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> CodeGenModule.h:</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> CGVTables.h:</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h:</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> </div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h:</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> /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="l00542"></a><span class="lineno">  542</span> </div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h:</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> </div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> </div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</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> /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h:</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> /home/tstellar/llvm/include/llvm/IR/GlobalValue.h:</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> CodeGenTypes.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h:</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> /home/tstellar/llvm/include/llvm/IR/Module.h:</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> </div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> /home/tstellar/llvm/include/llvm/IR/Function.h:</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> </div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> /home/tstellar/llvm/include/llvm/IR/Argument.h:</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> </div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h:</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> </div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> </div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span> </div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h:</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> /home/tstellar/llvm/include/llvm/Support/Debug.h:</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> CGRecordLayout.h:</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> </div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> CGCXXABI.h:</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span> </div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclTemplate.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/EvaluatedExprVisitor.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtVisitor.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtCXX.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h:</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span> </div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtOpenMP.h:</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> </div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.h:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetBuiltins.h:</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span> </div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.h:</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span> </div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsAArch64.def:</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span> </div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/arm_neon.inc:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsARM.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsPPC.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsNVPTX.def:</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span> </div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsX86.def:</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span> </div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsHexagon.def:</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span> </div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsMips.def:</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> </div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/BuiltinsXCore.def:</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:22 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/CGCleanup_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCleanup_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCleanup_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGCleanup_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1223 @@
+<!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: CGCleanup.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">CGCleanup.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGCleanup_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">//===--- CGCleanup.cpp - Bookkeeping and code emission for cleanups -------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This file contains code dealing with the IR generation for cleanups</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// and related information.</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">// A "cleanup" is a piece of code which needs to be executed whenever</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">// control transfers out of a particular scope.  This can be</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">// conditionalized to occur only on exceptional control flow, only on</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">// normal control flow, or both.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="CGCleanup_8h.html">CGCleanup.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type::needsSaving</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> rv) {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keywordflow">if</span> (rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>())</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1DominatingLLVMValue.html#aa6688710de332fbf53ef5ef4bee3c866" title="Answer whether the given value needs extra work to be saved.">DominatingLLVMValue::needsSaving</a>(rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>());</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keywordflow">if</span> (rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a9de028e086fc0698020b18ebaf2806f5">isAggregate</a>())</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1DominatingLLVMValue.html#aa6688710de332fbf53ef5ef4bee3c866" title="Answer whether the given value needs extra work to be saved.">DominatingLLVMValue::needsSaving</a>(rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>());</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> }</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type::save</a>(<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) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordflow">if</span> (rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>()) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="comment">// These automatically dominate and don't need to be saved.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     <span class="keywordflow">if</span> (!<a class="code" href="structclang_1_1CodeGen_1_1DominatingLLVMValue.html#aa6688710de332fbf53ef5ef4bee3c866" title="Answer whether the given value needs extra work to be saved.">DominatingLLVMValue::needsSaving</a>(V))</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>       <span class="keywordflow">return</span> saved_type(V, ScalarLiteral);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <span class="comment">// Everything else needs an alloca.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(V->getType(), <span class="stringliteral">"saved-rvalue"</span>);</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(V, addr);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordflow">return</span> saved_type(addr, ScalarAddress);</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> </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">if</span> (rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a4405b3fcd6b3d8228f1157469142826d">isComplex</a>()) {</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">CodeGenFunction::ComplexPairTy</a> V = rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a602381c7fce92d8069962efbeb1d22f6">getComplexVal</a>();</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     llvm::Type *ComplexTy =</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>       llvm::StructType::get(V.first->getType(), V.second->getType(),</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                             (<span class="keywordtype">void</span>*) 0);</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(ComplexTy, <span class="stringliteral">"saved-complex"</span>);</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(V.first, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(addr, 0));</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(V.second, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(addr, 1));</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">return</span> saved_type(addr, ComplexAddress);</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>   assert(rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a9de028e086fc0698020b18ebaf2806f5">isAggregate</a>());</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = rv.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>(); <span class="comment">// TODO: volatile?</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">if</span> (!<a class="code" href="structclang_1_1CodeGen_1_1DominatingLLVMValue.html#aa6688710de332fbf53ef5ef4bee3c866" title="Answer whether the given value needs extra work to be saved.">DominatingLLVMValue::needsSaving</a>(V))</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">return</span> saved_type(V, AggregateLiteral);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(V->getType(), <span class="stringliteral">"saved-rvalue"</span>);</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(V, addr);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordflow">return</span> saved_type(addr, AggregateAddress);  </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="comment"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">/// Given a saved r-value produced by SaveRValue, perform the code</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">/// necessary to restore it to usability at the current insertion</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">/// point.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span><a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type::restore</a>(<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>   <span class="keywordflow">switch</span> (K) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordflow">case</span> ScalarLiteral:</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordflow">case</span> ScalarAddress:</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>));</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">case</span> AggregateLiteral:</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordflow">case</span> AggregateAddress:</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>));</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">case</span> ComplexAddress: {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *real =</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</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#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, 0));</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *imag =</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</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#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, 1));</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a7e337836177fcde90cd36b8a241ab510">RValue::getComplex</a>(real, imag);</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>   }</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   llvm_unreachable(<span class="stringliteral">"bad saved r-value kind"</span>);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">/// Push an entry of the given size onto this protected-scope stack.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment"></span><span class="keywordtype">char</span> *EHScopeStack::allocate(<span class="keywordtype">size_t</span> Size) {</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">if</span> (!StartOfBuffer) {</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>     <span class="keywordtype">unsigned</span> Capacity = 1024;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">while</span> (Capacity < Size) Capacity *= 2;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     StartOfBuffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[Capacity];</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     StartOfData = EndOfBuffer = StartOfBuffer + Capacity;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (static_cast<size_t>(StartOfData - StartOfBuffer) < Size) {</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keywordtype">unsigned</span> CurrentCapacity = EndOfBuffer - StartOfBuffer;</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordtype">unsigned</span> UsedCapacity = CurrentCapacity - (StartOfData - StartOfBuffer);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     <span class="keywordtype">unsigned</span> NewCapacity = CurrentCapacity;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       NewCapacity *= 2;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     } <span class="keywordflow">while</span> (NewCapacity < UsedCapacity + Size);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <span class="keywordtype">char</span> *NewStartOfBuffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[NewCapacity];</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <span class="keywordtype">char</span> *NewEndOfBuffer = NewStartOfBuffer + NewCapacity;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordtype">char</span> *NewStartOfData = NewEndOfBuffer - UsedCapacity;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>     memcpy(NewStartOfData, StartOfData, UsedCapacity);</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keyword">delete</span> [] StartOfBuffer;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     StartOfBuffer = NewStartOfBuffer;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     EndOfBuffer = NewEndOfBuffer;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     StartOfData = NewStartOfData;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   assert(StartOfBuffer + Size <= StartOfData);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   StartOfData -= Size;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <span class="keywordflow">return</span> StartOfData;</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> </div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a></div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a3b4881b44c481f2f1335b2ea1976460c">  127</a></span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a3b4881b44c481f2f1335b2ea1976460c">EHScopeStack::getInnermostActiveNormalCleanup</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">stable_iterator</a> si = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ae0b05f9358df39eaa0458255d311497c">getInnermostNormalCleanup</a>(), se = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</a>();</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>          si != se; ) {</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &cleanup = cast<EHCleanupScope>(*<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#afec681080896677a7d0599191da3e1ae">find</a>(si));</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">if</span> (cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6f52c127901125ec7377a8e37b4d89be">isActive</a>()) <span class="keywordflow">return</span> si;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     si = cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>();</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   }</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</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="classclang_1_1CodeGen_1_1EHScopeStack.html#ab7c8a95aa24a9554d1e38179563f118b">  137</a></span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab7c8a95aa24a9554d1e38179563f118b">EHScopeStack::getInnermostActiveEHScope</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">stable_iterator</a> si = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad727a3cc92638b4bbe253233f8fb2159">getInnermostEHScope</a>(), se = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</a>();</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>          si != se; ) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="comment">// Skip over inactive cleanups.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> *cleanup = dyn_cast<<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a>>(&*<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#afec681080896677a7d0599191da3e1ae">find</a>(si));</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">if</span> (cleanup && !cleanup-><a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6f52c127901125ec7377a8e37b4d89be">isActive</a>()) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       si = cleanup-><a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ab0df2e53a38eec8c6692cee00870cf06">getEnclosingEHScope</a>();</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     }</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>     <span class="comment">// All other scopes are always active.</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">return</span> si;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   }</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</a>();</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> </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> <span class="keywordtype">void</span> *EHScopeStack::pushCleanup(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">size_t</span> Size) {</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   assert(((Size % <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)) == 0) && <span class="stringliteral">"cleanup type is misaligned"</span>);</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordtype">char</span> *Buffer = allocate(<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#aa6373fb0fa682c16018d51b2d3a74e2a">EHCleanupScope::getSizeForCleanupSize</a>(Size));</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordtype">bool</span> IsNormalCleanup = Kind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordtype">bool</span> IsEHCleanup = Kind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">bool</span> IsActive = !(Kind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa6f9dc76364b1342b861821aa979b8af9">InactiveCleanup</a>);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> *<a class="code" href="classclang_1_1Scope.html">Scope</a> =</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a>(IsNormalCleanup,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                                 IsEHCleanup,</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                                 IsActive,</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>                                 Size,</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>                                 BranchFixups.size(),</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>                                 InnermostNormalCleanup,</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>                                 InnermostEHScope);</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">if</span> (IsNormalCleanup)</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     InnermostNormalCleanup = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">if</span> (IsEHCleanup)</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>     InnermostEHScope = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">return</span> Scope-><a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a74920d02bc02db38744ad034e6f3bf08">getCleanupBuffer</a>();</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"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a4b2d0ee5554a54f32576a140b291272f">  177</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a4b2d0ee5554a54f32576a140b291272f" title="Pops a cleanup scope off the stack. This is private to CGCleanup.cpp.">EHScopeStack::popCleanup</a>() {</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   assert(!<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a89f9cda5ecb4d3529515fe45cbe70f3f" title="Determines whether the exception-scopes stack is empty.">empty</a>() && <span class="stringliteral">"popping exception stack when not empty"</span>);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   assert(isa<EHCleanupScope>(*<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>()));</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">Cleanup</a> = cast<EHCleanupScope>(*<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   InnermostNormalCleanup = Cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>();</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   InnermostEHScope = Cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ab0df2e53a38eec8c6692cee00870cf06">getEnclosingEHScope</a>();</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   StartOfData += Cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#aca5617f52cca6e1fa82030e3ef6c5c8d">getAllocatedSize</a>();</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>   <span class="comment">// Destroy the cleanup.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   Cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad79a7503971b2c7f37fcb494b8c2b60a">~EHCleanupScope</a>();</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">// Check whether we can shrink the branch-fixups stack.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">if</span> (!BranchFixups.empty()) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="comment">// If we no longer have any normal cleanups, all the fixups are</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="comment">// complete.</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a28b683a176846b933771f7c768c99002" title="Determines whether there are any normal cleanups on the stack.">hasNormalCleanups</a>())</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       BranchFixups.clear();</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="comment">// Otherwise we can still trim out unnecessary nulls.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aca336d524e29d1234049ab164934c9bd">popNullFixups</a>();</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> }</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a077f071c099d8de05c05cadd4f49a2d6">  202</a></span> <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> *<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a077f071c099d8de05c05cadd4f49a2d6" title="Push an exceptions filter on the stack.">EHScopeStack::pushFilter</a>(<span class="keywordtype">unsigned</span> numFilters) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad727a3cc92638b4bbe253233f8fb2159">getInnermostEHScope</a>() == <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</a>());</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordtype">char</span> *buffer = allocate(<a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a40d2f32e1b0de918ca2c4aff50d1c7de">EHFilterScope::getSizeForNumFilters</a>(numFilters));</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> *filter = <span class="keyword">new</span> (buffer) <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a>(numFilters);</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   InnermostEHScope = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="keywordflow">return</span> filter;</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> </div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a847f83f5e47e66122a6a6ce6df5adcd9">  210</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a847f83f5e47e66122a6a6ce6df5adcd9" title="Pops an exceptions filter off the stack.">EHScopeStack::popFilter</a>() {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   assert(!<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a89f9cda5ecb4d3529515fe45cbe70f3f" title="Determines whether the exception-scopes stack is empty.">empty</a>() && <span class="stringliteral">"popping exception stack when not empty"</span>);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> &filter = cast<EHFilterScope>(*<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   StartOfData += <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a40d2f32e1b0de918ca2c4aff50d1c7de">EHFilterScope::getSizeForNumFilters</a>(filter.<a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a0445c297c808687f158a9ef8396014a3">getNumFilters</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>   InnermostEHScope = filter.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ab0df2e53a38eec8c6692cee00870cf06">getEnclosingEHScope</a>();</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> }</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab438c1f9ff2f8bb5e32953bea6593dd1">  219</a></span> <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> *<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab438c1f9ff2f8bb5e32953bea6593dd1">EHScopeStack::pushCatch</a>(<span class="keywordtype">unsigned</span> numHandlers) {</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">char</span> *buffer = allocate(<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a55b535fcaf2f7a90d61481ecb9dc3863">EHCatchScope::getSizeForNumHandlers</a>(numHandlers));</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> *scope =</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <span class="keyword">new</span> (buffer) <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a>(numHandlers, InnermostEHScope);</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   InnermostEHScope = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">return</span> scope;</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> </div>
+<div class="line"><a name="l00227"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aefe8303d66c784211dfd9581be62b94b">  227</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aefe8303d66c784211dfd9581be62b94b" title="Push a terminate handler on the stack.">EHScopeStack::pushTerminate</a>() {</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordtype">char</span> *Buffer = allocate(<a class="code" href="classclang_1_1CodeGen_1_1EHTerminateScope.html#a668529d0ae49ccdc9bf43c84782b2a87">EHTerminateScope::getSize</a>());</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keyword">new</span> (Buffer) <a class="code" href="classclang_1_1CodeGen_1_1EHTerminateScope.html">EHTerminateScope</a>(InnermostEHScope);</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   InnermostEHScope = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">/// Remove any 'null' fixups on the stack.  However, we can't pop more</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">/// fixups than the fixup depth on the innermost normal cleanup, or</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">/// else fixups that we try to add to that cleanup will end up in the</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">/// wrong place.  We *could* try to shrink fixup depths, but that's</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">/// actually a lot of work for little benefit.</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aca336d524e29d1234049ab164934c9bd">  238</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aca336d524e29d1234049ab164934c9bd">EHScopeStack::popNullFixups</a>() {</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="comment">// We expect this to only be called when there's still an innermost</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="comment">// normal cleanup;  otherwise there really shouldn't be any fixups.</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a28b683a176846b933771f7c768c99002" title="Determines whether there are any normal cleanups on the stack.">hasNormalCleanups</a>());</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>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1iterator.html" title="A non-stable pointer into the scope stack.">EHScopeStack::iterator</a> it = <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#afec681080896677a7d0599191da3e1ae">find</a>(InnermostNormalCleanup);</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordtype">unsigned</span> MinSize = cast<EHCleanupScope>(*it).getFixupDepth();</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   assert(BranchFixups.size() >= MinSize && <span class="stringliteral">"fixup stack out of order"</span>);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordflow">while</span> (BranchFixups.size() > MinSize &&</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>          BranchFixups.back().Destination == 0)</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     BranchFixups.pop_back();</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> </div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a42da694c2e722bbd1f9664fc04bc6733">  252</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a42da694c2e722bbd1f9664fc04bc6733">CodeGenFunction::initFullExprCleanup</a>() {</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// Create a variable to decide whether the cleanup needs to be run.</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   llvm::AllocaInst *active</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1Ty(), <span class="stringliteral">"cleanup.cond"</span>);</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>   <span class="comment">// Initialize it to false at a site that's guaranteed to be run</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="comment">// before each evaluation.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f755cf77c644c75adfd458c6b2196a">setBeforeOutermostConditional</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getFalse(), active);</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">// Initialize it to true at the current location.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getTrue(), active);</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">// Set that as the active flag in the cleanup.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &cleanup = cast<EHCleanupScope>(*<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   assert(cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ae8cdb261bf559f213ff59d723125b273">getActiveFlag</a>() == 0 && <span class="stringliteral">"cleanup already has active flag?"</span>);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6b7907d9ca0610c6ddbee68d8c4df61c">setActiveFlag</a>(active);</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">if</span> (cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>()) cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a8ec9fe5f8b385ec7bcb7a8de517b506b">setTestFlagInNormalCleanup</a>();</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="keywordflow">if</span> (cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ae9c757601de29eba33bda3feab6abac7">isEHCleanup</a>()) cleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a9082d1c7d0a4d45cc52b4c29a91ffdb2">setTestFlagInEHCleanup</a>();</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> </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="keywordtype">void</span> EHScopeStack::Cleanup::anchor() {}</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="comment"></span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment">/// All the branch fixups on the EH stack have propagated out past the</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment">/// outermost normal cleanup; resolve them all by adding cases to the</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="comment">/// given switch instruction.</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#ae0f4660617e339fae1a1e2057f289d0f">  278</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCleanup_8cpp.html#ae0f4660617e339fae1a1e2057f289d0f">ResolveAllBranchFixups</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>                                    llvm::SwitchInst *Switch,</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>                                    llvm::BasicBlock *CleanupEntry) {</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   llvm::SmallPtrSet<llvm::BasicBlock*, 4> CasesAdded;</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">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a9ceaad65ee45d12459ebac4befdfb9e1">getNumBranchFixups</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <span class="comment">// Skip this fixup if its destination isn't set.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     <a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html">BranchFixup</a> &Fixup = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a8ca4f8314553b1a8b95df8419c4d69a0">getBranchFixup</a>(I);</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="keywordflow">if</span> (Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a5fce1553000d278920c2fc1f730d1fda">Destination</a> == 0) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>     <span class="comment">// If there isn't an OptimisticBranchBlock, then InitialBranch is</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>     <span class="comment">// still pointing directly to its destination; forward it to the</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="comment">// appropriate cleanup entry.  This is required in the specific</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="comment">// case of</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     <span class="comment">//   { std::string s; goto lbl; }</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <span class="comment">//   lbl:</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <span class="comment">// i.e. where there's an unresolved fixup inside a single cleanup</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="comment">// entry which we're currently popping.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">if</span> (Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a721b871f0e2fbbbfcb1b846b18519590">OptimisticBranchBlock</a> == 0) {</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>       <span class="keyword">new</span> llvm::StoreInst(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt32(Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a28e58ca4d2f5fad039de4dfe09cd2cca" title="The destination index value.">DestinationIndex</a>),</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>                           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa45b27474b994180eefebad5b1e5632d">getNormalCleanupDestSlot</a>(),</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>                           Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#af9f86422254d3fe4d0cd330d61918273" title="The initial branch of the fixup.">InitialBranch</a>);</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>       Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#af9f86422254d3fe4d0cd330d61918273" title="The initial branch of the fixup.">InitialBranch</a>->setSuccessor(0, CleanupEntry);</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> </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     <span class="comment">// Don't add this case to the switch statement twice.</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     <span class="keywordflow">if</span> (!CasesAdded.insert(Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a5fce1553000d278920c2fc1f730d1fda">Destination</a>)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     Switch->addCase(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt32(Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a28e58ca4d2f5fad039de4dfe09cd2cca" title="The destination index value.">DestinationIndex</a>),</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>                     Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a5fce1553000d278920c2fc1f730d1fda">Destination</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> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#adabd1f2e7bcd390652d995122b42c42b">clearFixups</a>();</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> }</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="comment"></span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="comment">/// Transitions the terminator of the given exit-block of a cleanup to</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="comment">/// be a cleanup switch.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#a789a27f4122d31edf4cce4a12851a658">  315</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::SwitchInst *<a class="code" href="CGCleanup_8cpp.html#a789a27f4122d31edf4cce4a12851a658">TransitionToCleanupSwitch</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>                                                    llvm::BasicBlock *Block) {</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="comment">// If it's a branch, turn it into a switch whose default</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="comment">// destination is its original target.</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   llvm::TerminatorInst *Term = Block->getTerminator();</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   assert(Term && <span class="stringliteral">"can't transition block without terminator"</span>);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">if</span> (llvm::BranchInst *Br = dyn_cast<llvm::BranchInst>(Term)) {</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     assert(Br->isUnconditional());</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     llvm::LoadInst *Load =</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <span class="keyword">new</span> llvm::LoadInst(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa45b27474b994180eefebad5b1e5632d">getNormalCleanupDestSlot</a>(), <span class="stringliteral">"cleanup.dest"</span>, Term);</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     llvm::SwitchInst *Switch =</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>       llvm::SwitchInst::Create(Load, Br->getSuccessor(0), 4, Block);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     Br->eraseFromParent();</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordflow">return</span> Switch;</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>     <span class="keywordflow">return</span> cast<llvm::SwitchInst>(Term);</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> }</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80e95981b6344c4ff5303f15b767837d">  335</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80e95981b6344c4ff5303f15b767837d">CodeGenFunction::ResolveBranchFixups</a>(llvm::BasicBlock *Block) {</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   assert(Block && <span class="stringliteral">"resolving a null target block"</span>);</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">if</span> (!EHStack.getNumBranchFixups()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   assert(EHStack.hasNormalCleanups() &&</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>          <span class="stringliteral">"branch fixups exist with no normal cleanups on stack"</span>);</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   llvm::SmallPtrSet<llvm::BasicBlock*, 4> ModifiedOptimisticBlocks;</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="keywordtype">bool</span> ResolvedAny = <span class="keyword">false</span>;</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>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = EHStack.getNumBranchFixups(); I != E; ++I) {</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="comment">// Skip this fixup if its destination doesn't match.</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html">BranchFixup</a> &Fixup = EHStack.getBranchFixup(I);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">if</span> (Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a5fce1553000d278920c2fc1f730d1fda">Destination</a> != Block) <span class="keywordflow">continue</span>;</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>     Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a5fce1553000d278920c2fc1f730d1fda">Destination</a> = 0;</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     ResolvedAny = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="comment">// If it doesn't have an optimistic branch block, LatestBranch is</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     <span class="comment">// already pointing to the right place.</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     llvm::BasicBlock *BranchBB = Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a721b871f0e2fbbbfcb1b846b18519590">OptimisticBranchBlock</a>;</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="keywordflow">if</span> (!BranchBB)</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       <span class="keywordflow">continue</span>;</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>     <span class="comment">// Don't process the same optimistic branch block twice.</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="keywordflow">if</span> (!ModifiedOptimisticBlocks.insert(BranchBB))</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     llvm::SwitchInst *Switch = <a class="code" href="CGCleanup_8cpp.html#a789a27f4122d31edf4cce4a12851a658">TransitionToCleanupSwitch</a>(*<span class="keyword">this</span>, BranchBB);</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="comment">// Add a case to the switch.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     Switch->addCase(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(Fixup.<a class="code" href="structclang_1_1CodeGen_1_1BranchFixup.html#a28e58ca4d2f5fad039de4dfe09cd2cca" title="The destination index value.">DestinationIndex</a>), Block);</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   }</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> </div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   <span class="keywordflow">if</span> (ResolvedAny)</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     EHStack.popNullFixups();</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"></span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">/// Pops cleanup blocks until the given savepoint is reached.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4733301f1dc83051dfddb2a16bae3ee4">  374</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4733301f1dc83051dfddb2a16bae3ee4" title="Takes the old cleanup stack size and emits the cleanup blocks that have been added.">CodeGenFunction::PopCleanupBlocks</a>(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> Old) {</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   assert(Old.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html#aaaa8ff69955e285c731f5ebb9304c41d">isValid</a>());</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keywordflow">while</span> (EHStack.stable_begin() != Old) {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &Scope = cast<EHCleanupScope>(*EHStack.begin());</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="comment">// As long as Old strictly encloses the scope's enclosing normal</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <span class="comment">// cleanup, we're going to emit another normal cleanup which</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>     <span class="comment">// fallthrough can propagate through.</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordtype">bool</span> FallThroughIsBranchThrough =</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       Old.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html#a5888dc6eb61bf00ec3c92e179a45b8bc">strictlyEncloses</a>(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>());</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>     PopCleanupBlock(FallThroughIsBranchThrough);</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> }</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> <span class="comment"></span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment">/// Pops cleanup blocks until the given savepoint is reached, then add the</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">/// cleanups from the given savepoint in the lifetime-extended cleanups stack.</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2a9e4dcb0b427f34a16b78a793322474">  393</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4733301f1dc83051dfddb2a16bae3ee4" title="Takes the old cleanup stack size and emits the cleanup blocks that have been added.">CodeGenFunction::PopCleanupBlocks</a>(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> Old,</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>                                   <span class="keywordtype">size_t</span> OldLifetimeExtendedSize) {</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   PopCleanupBlocks(Old);</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="comment">// Move our deferred cleanups onto the EH stack.</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> I = OldLifetimeExtendedSize,</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>               E = LifetimeExtendedCleanupStack.size(); I != E; <span class="comment">/**/</span>) {</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="comment">// Alignment should be guaranteed by the vptrs in the individual cleanups.</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     assert((I % llvm::alignOf<LifetimeExtendedCleanupHeader>() == 0) &&</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>            <span class="stringliteral">"misaligned cleanup stack entry"</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>     <a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1LifetimeExtendedCleanupHeader.html" title="Header for data within LifetimeExtendedCleanupStack.">LifetimeExtendedCleanupHeader</a> &Header =</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1LifetimeExtendedCleanupHeader.html" title="Header for data within LifetimeExtendedCleanupStack.">LifetimeExtendedCleanupHeader</a>&<span class="keyword">></span>(</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>             LifetimeExtendedCleanupStack[I]);</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     I += <span class="keyword">sizeof</span>(Header);</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>     EHStack.pushCopyOfCleanup(Header.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1LifetimeExtendedCleanupHeader.html#ad6d4589cd9428fd7a664ad838599922f">getKind</a>(),</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>                               &LifetimeExtendedCleanupStack[I],</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>                               Header.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1LifetimeExtendedCleanupHeader.html#a9fe5e41c80bf56cf4c9f25f8181c140b">getSize</a>());</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     I += Header.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1LifetimeExtendedCleanupHeader.html#a9fe5e41c80bf56cf4c9f25f8181c140b">getSize</a>();</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>   LifetimeExtendedCleanupStack.resize(OldLifetimeExtendedSize);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> }</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a name="l00417"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#aa323d300bf9815591a90103d2ae54609">  417</a></span> <span class="keyword">static</span> llvm::BasicBlock *<a class="code" href="CGCleanup_8cpp.html#aa323d300bf9815591a90103d2ae54609">CreateNormalEntry</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>                                            <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &Scope) {</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   assert(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>());</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   llvm::BasicBlock *Entry = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a057e47c6a7439c826864bd6acd9ec589">getNormalBlock</a>();</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordflow">if</span> (!Entry) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     Entry = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cleanup"</span>);</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a77291b995ae5a44e6bb42a77e75c6af2">setNormalBlock</a>(Entry);</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   }</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   <span class="keywordflow">return</span> Entry;</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="comment"></span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="comment">/// Attempts to reduce a cleanup's entry block to a fallthrough.  This</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="comment">/// is basically llvm::MergeBlockIntoPredecessor, except</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment">/// simplified/optimized for the tighter constraints on cleanup blocks.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">/// Returns the new block, whatever it is.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#aa4d0bd96f3c4e9b14f8e7f0fa0a650a5">  433</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::BasicBlock *<a class="code" href="CGCleanup_8cpp.html#aa4d0bd96f3c4e9b14f8e7f0fa0a650a5" title="Attempts to reduce a cleanup's entry block to a fallthrough. This is basically llvm::MergeBlockIntoPr...">SimplifyCleanupEntry</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>                                               llvm::BasicBlock *Entry) {</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   llvm::BasicBlock *Pred = Entry->getSinglePredecessor();</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">if</span> (!Pred) <span class="keywordflow">return</span> Entry;</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>   llvm::BranchInst *Br = dyn_cast<llvm::BranchInst>(Pred->getTerminator());</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keywordflow">if</span> (!Br || Br->isConditional()) <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   assert(Br->getSuccessor(0) == Entry);</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="comment">// If we were previously inserting at the end of the cleanup entry</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="comment">// block, we'll need to continue inserting at the end of the</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="comment">// predecessor.</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="keywordtype">bool</span> WasInsertBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock() == Entry;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   assert(!WasInsertBlock || CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertPoint() == Entry->end());</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>   <span class="comment">// Kill the branch.</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   Br->eraseFromParent();</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="comment">// Replace all uses of the entry with the predecessor, in case there</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <span class="comment">// are phis in the cleanup.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   Entry->replaceAllUsesWith(Pred);</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="comment">// Merge the blocks.</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   Pred->getInstList().splice(Pred->end(), Entry->getInstList());</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">// Kill the entry block.</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   Entry->eraseFromParent();</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>   <span class="keywordflow">if</span> (WasInsertBlock)</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.SetInsertPoint(Pred);</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">return</span> Pred;</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> </div>
+<div class="line"><a name="l00467"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#a4bbddcd864612a21a26cec3b402ebce1">  467</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCleanup_8cpp.html#a4bbddcd864612a21a26cec3b402ebce1">EmitCleanup</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>                         <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> *Fn,</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>                         <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html" title="Generation flags.">EHScopeStack::Cleanup::Flags</a> flags,</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ActiveFlag) {</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="comment">// EH cleanups always occur within a terminate scope.</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="keywordflow">if</span> (flags.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html#a4a0007678fc08ad758d8eab180e2fd72" title="isForEH - true if the current emission is for an EH cleanup.">isForEHCleanup</a>()) CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aefe8303d66c784211dfd9581be62b94b" title="Push a terminate handler on the stack.">pushTerminate</a>();</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>   <span class="comment">// If there's an active flag, load it and skip the cleanup if it's</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="comment">// false.</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   llvm::BasicBlock *ContBB = 0;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordflow">if</span> (ActiveFlag) {</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     ContBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cleanup.done"</span>);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     llvm::BasicBlock *CleanupBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"cleanup.action"</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> *IsActive</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(ActiveFlag, <span class="stringliteral">"cleanup.is_active"</span>);</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsActive, CleanupBB, ContBB);</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CleanupBB);</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   }</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   <span class="comment">// Ask the cleanup to emit itself.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   Fn-><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html#a8ee9056bf3af5a30a1bd2b9a7e152550">Emit</a>(CGF, flags);</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   assert(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>() && <span class="stringliteral">"cleanup ended with no insertion point?"</span>);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="comment">// Emit the continuation block if there was an active flag.</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   <span class="keywordflow">if</span> (ActiveFlag)</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(ContBB);</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <span class="comment">// Leave the terminate scope.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   <span class="keywordflow">if</span> (flags.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html#a4a0007678fc08ad758d8eab180e2fd72" title="isForEH - true if the current emission is for an EH cleanup.">isForEHCleanup</a>()) CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#adccfb817d3fd406a110d5d1b077aa502" title="Pops a terminate handler off the stack.">popTerminate</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> </div>
+<div class="line"><a name="l00498"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#ab8a54f348a8f8163f46755450feaf639">  498</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCleanup_8cpp.html#ab8a54f348a8f8163f46755450feaf639">ForwardPrebranchedFallthrough</a>(llvm::BasicBlock *Exit,</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>                                           llvm::BasicBlock *From,</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>                                           llvm::BasicBlock *To) {</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   <span class="comment">// Exit is the exit block of a cleanup, so it always terminates in</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="comment">// an unconditional branch or a switch.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   llvm::TerminatorInst *Term = Exit->getTerminator();</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   <span class="keywordflow">if</span> (llvm::BranchInst *Br = dyn_cast<llvm::BranchInst>(Term)) {</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     assert(Br->isUnconditional() && Br->getSuccessor(0) == From);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     Br->setSuccessor(0, To);</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>     llvm::SwitchInst *Switch = cast<llvm::SwitchInst>(Term);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = Switch->getNumSuccessors(); I != E; ++I)</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">if</span> (Switch->getSuccessor(I) == From)</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         Switch->setSuccessor(I, To);</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> }</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> <span class="comment"></span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="comment">/// We don't need a normal entry block for the given cleanup.</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="comment">/// Optimistic fixup branches can cause these blocks to come into</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment">/// existence anyway;  if so, destroy it.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> <span class="comment">/// The validity of this transformation is very much specific to the</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> <span class="comment">/// exact ways in which we form branches to cleanup entries.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno"><a class="code" href="CGCleanup_8cpp.html#a9601ad07196e6d46e0acf29b849b2ff2">  522</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGCleanup_8cpp.html#a9601ad07196e6d46e0acf29b849b2ff2" title="We don't need a normal entry block for the given cleanup. Optimistic fixup branches can cause these b...">destroyOptimisticNormalEntry</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>                                          <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &scope) {</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   llvm::BasicBlock *entry = scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a057e47c6a7439c826864bd6acd9ec589">getNormalBlock</a>();</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <span class="keywordflow">if</span> (!entry) <span class="keywordflow">return</span>;</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>   <span class="comment">// Replace all the uses with unreachable.</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   llvm::BasicBlock *unreachableBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47a1c2350f7718da5bdbd856b6c302d3">getUnreachableBlock</a>();</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   <span class="keywordflow">for</span> (llvm::BasicBlock::use_iterator</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>          i = entry->use_begin(), e = entry->use_end(); i != e; ) {</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     llvm::Use &use = i.getUse();</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     ++i;</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>     use.set(unreachableBB);</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     <span class="comment">// The only uses should be fixup switches.</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     llvm::SwitchInst *si = cast<llvm::SwitchInst>(use.getUser());</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="keywordflow">if</span> (si->getNumCases() == 1 && si->getDefaultDest() == unreachableBB) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       <span class="comment">// Replace the switch with a branch.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       llvm::BranchInst::Create(si->case_begin().getCaseSuccessor(), si);</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>       <span class="comment">// The switch operand is a load from the cleanup-dest alloca.</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>       llvm::LoadInst *condition = cast<llvm::LoadInst>(si->getCondition());</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="comment">// Destroy the switch.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>       si->eraseFromParent();</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>       <span class="comment">// Destroy the load.</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       assert(condition->getOperand(0) == CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a502f8729f31601e16df454b5d19d24c6" title="i32s containing the indexes of the cleanup destinations.">NormalCleanupDest</a>);</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       assert(condition->use_empty());</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       condition->eraseFromParent();</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     }</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   }</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>   </div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   assert(entry->use_empty());</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   <span class="keyword">delete</span> entry;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> }</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> <span class="comment"></span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="comment">/// Pops a cleanup block.  If the block includes a normal cleanup, the</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> <span class="comment">/// current insertion point is threaded through the cleanup, as are</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> <span class="comment">/// any branch fixups on the cleanup.</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9">  562</a></span> <span class="comment"></span><span class="keywordtype">void</span> <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...">CodeGenFunction::PopCleanupBlock</a>(<span class="keywordtype">bool</span> FallthroughIsBranchThrough) {</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   assert(!EHStack.empty() && <span class="stringliteral">"cleanup stack is empty!"</span>);</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   assert(isa<EHCleanupScope>(*EHStack.begin()) && <span class="stringliteral">"top not a cleanup!"</span>);</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html" title="A cleanup scope which generates the cleanup blocks lazily.">EHCleanupScope</a> &Scope = cast<EHCleanupScope>(*EHStack.begin());</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   assert(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6f2f7264b8d837dce9db4978b179d0ef">getFixupDepth</a>() <= EHStack.getNumBranchFixups());</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>   <span class="comment">// Remember activation information.</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   <span class="keywordtype">bool</span> IsActive = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6f52c127901125ec7377a8e37b4d89be">isActive</a>();</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NormalActiveFlag =</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a227ae58edbc8b64c3c12109b75ead609">shouldTestFlagInNormalCleanup</a>() ? Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ae8cdb261bf559f213ff59d723125b273">getActiveFlag</a>() : 0;</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EHActiveFlag = </div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a21f097dc19575eded91af78e713a55e1">shouldTestFlagInEHCleanup</a>() ? Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ae8cdb261bf559f213ff59d723125b273">getActiveFlag</a>() : 0;</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="comment">// Check whether we need an EH cleanup.  This is only true if we've</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <span class="comment">// generated a lazy EH cleanup block.</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   llvm::BasicBlock *EHEntry = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aab25cdf91a6905f0f5052b379e902eb0">getCachedEHDispatchBlock</a>();</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   assert(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aef8e633f0e679fb719c3146303617c5c">hasEHBranches</a>() == (EHEntry != 0));</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <span class="keywordtype">bool</span> RequiresEHCleanup = (EHEntry != 0);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> EHParent = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ab0df2e53a38eec8c6692cee00870cf06">getEnclosingEHScope</a>();</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>   <span class="comment">// Check the three conditions which might require a normal cleanup:</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>   <span class="comment">// - whether there are branch fix-ups through this cleanup</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="keywordtype">unsigned</span> FixupDepth = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a6f2f7264b8d837dce9db4978b179d0ef">getFixupDepth</a>();</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="keywordtype">bool</span> HasFixups = EHStack.getNumBranchFixups() != FixupDepth;</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="comment">// - whether there are branch-throughs or branch-afters</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordtype">bool</span> HasExistingBranches = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a359280159ef02c5ff569ff3ac5583052" title="True if this cleanup scope has any branch-afters or branch-throughs.">hasBranches</a>();</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="comment">// - whether there's a fallthrough</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>   llvm::BasicBlock *FallthroughSource = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>   <span class="keywordtype">bool</span> HasFallthrough = (FallthroughSource != 0 && IsActive);</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">// Branch-through fall-throughs leave the insertion point set to the</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>   <span class="comment">// end of the last cleanup, which points to the current scope.  The</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>   <span class="comment">// rest of IR gen doesn't need to worry about this; it only happens</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="comment">// during the execution of PopCleanupBlocks().</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordtype">bool</span> HasPrebranchedFallthrough =</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     (FallthroughSource && FallthroughSource->getTerminator());</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> </div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>   <span class="comment">// If this is a normal cleanup, then having a prebranched</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="comment">// fallthrough implies that the fallthrough source unconditionally</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   <span class="comment">// jumps here.</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   assert(!Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>() || !HasPrebranchedFallthrough ||</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>          (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a057e47c6a7439c826864bd6acd9ec589">getNormalBlock</a>() &&</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>           FallthroughSource->getTerminator()->getSuccessor(0)</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>             == Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a057e47c6a7439c826864bd6acd9ec589">getNormalBlock</a>()));</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>   <span class="keywordtype">bool</span> RequiresNormalCleanup = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">if</span> (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>() &&</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       (HasFixups || HasExistingBranches || HasFallthrough)) {</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>     RequiresNormalCleanup = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>   }</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>   <span class="comment">// If we have a prebranched fallthrough into an inactive normal</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>   <span class="comment">// cleanup, rewrite it so that it leads to the appropriate place.</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="keywordflow">if</span> (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>() && HasPrebranchedFallthrough && !IsActive) {</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     llvm::BasicBlock *prebranchDest;</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>     <span class="comment">// If the prebranch is semantically branching through the next</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>     <span class="comment">// cleanup, just forward it to the next block, leaving the</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <span class="comment">// insertion point in the prebranched block.</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     <span class="keywordflow">if</span> (FallthroughIsBranchThrough) {</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html" title="A protected scope for zero-cost EH handling.">EHScope</a> &enclosing = *EHStack.find(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>());</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>       prebranchDest = <a class="code" href="CGCleanup_8cpp.html#aa323d300bf9815591a90103d2ae54609">CreateNormalEntry</a>(*<span class="keyword">this</span>, cast<EHCleanupScope>(enclosing));</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span> </div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <span class="comment">// Otherwise, we need to make a new block.  If the normal cleanup</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="comment">// isn't being used at all, we could actually reuse the normal</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     <span class="comment">// entry block, but this is simpler, and it avoids conflicts with</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <span class="comment">// dead optimistic fixup branches.</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>       prebranchDest = createBasicBlock(<span class="stringliteral">"forwarded-prebranch"</span>);</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>       EmitBlock(prebranchDest);</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     }</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span> </div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     llvm::BasicBlock *normalEntry = Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a057e47c6a7439c826864bd6acd9ec589">getNormalBlock</a>();</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     assert(normalEntry && !normalEntry->use_empty());</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>     <a class="code" href="CGCleanup_8cpp.html#ab8a54f348a8f8163f46755450feaf639">ForwardPrebranchedFallthrough</a>(FallthroughSource,</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>                                   normalEntry, prebranchDest);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   }</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span> </div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   <span class="comment">// If we don't need the cleanup at all, we're done.</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <span class="keywordflow">if</span> (!RequiresNormalCleanup && !RequiresEHCleanup) {</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <a class="code" href="CGCleanup_8cpp.html#a9601ad07196e6d46e0acf29b849b2ff2" title="We don't need a normal entry block for the given cleanup. Optimistic fixup branches can cause these b...">destroyOptimisticNormalEntry</a>(*<span class="keyword">this</span>, Scope);</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     EHStack.popCleanup(); <span class="comment">// safe because there are no fixups</span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     assert(EHStack.getNumBranchFixups() == 0 ||</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>            EHStack.hasNormalCleanups());</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="comment">// Copy the cleanup emission data out.  Note that SmallVector</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="comment">// guarantees maximal alignment for its buffer regardless of its</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="comment">// type parameter.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<char, 8*sizeof(void*)></a> CleanupBuffer;</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   CleanupBuffer.reserve(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#af5cd79b2dbf9d6f0ac48bf353b2b1770">getCleanupSize</a>());</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   memcpy(CleanupBuffer.data(),</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>          Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a74920d02bc02db38744ad034e6f3bf08">getCleanupBuffer</a>(), Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#af5cd79b2dbf9d6f0ac48bf353b2b1770">getCleanupSize</a>());</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   CleanupBuffer.set_size(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#af5cd79b2dbf9d6f0ac48bf353b2b1770">getCleanupSize</a>());</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> *Fn =</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a>*<span class="keyword">></span>(CleanupBuffer.data());</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>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html" title="Generation flags.">EHScopeStack::Cleanup::Flags</a> cleanupFlags;</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordflow">if</span> (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a3305402f5e49db883ef8bb9678baf95c">isNormalCleanup</a>())</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     cleanupFlags.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html#aae5c71eabbc5ba31935fa2807989a8ed">setIsNormalCleanupKind</a>();</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">if</span> (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ae9c757601de29eba33bda3feab6abac7">isEHCleanup</a>())</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     cleanupFlags.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup_1_1Flags.html#af3d4488bf80672bbc86edab6ebd53677">setIsEHCleanupKind</a>();</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="keywordflow">if</span> (!RequiresNormalCleanup) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <a class="code" href="CGCleanup_8cpp.html#a9601ad07196e6d46e0acf29b849b2ff2" title="We don't need a normal entry block for the given cleanup. Optimistic fixup branches can cause these b...">destroyOptimisticNormalEntry</a>(*<span class="keyword">this</span>, Scope);</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     EHStack.popCleanup();</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="comment">// If we have a fallthrough and no other need for the cleanup,</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>     <span class="comment">// emit it directly.</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="keywordflow">if</span> (HasFallthrough && !HasPrebranchedFallthrough &&</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         !HasFixups && !HasExistingBranches) {</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span> </div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>       <a class="code" href="CGCleanup_8cpp.html#a9601ad07196e6d46e0acf29b849b2ff2" title="We don't need a normal entry block for the given cleanup. Optimistic fixup branches can cause these b...">destroyOptimisticNormalEntry</a>(*<span class="keyword">this</span>, Scope);</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       EHStack.popCleanup();</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span> </div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       <a class="code" href="CGCleanup_8cpp.html#a4bbddcd864612a21a26cec3b402ebce1">EmitCleanup</a>(*<span class="keyword">this</span>, Fn, cleanupFlags, NormalActiveFlag);</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> </div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     <span class="comment">// Otherwise, the best approach is to thread everything through</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     <span class="comment">// the cleanup block and then try to clean up after ourselves.</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       <span class="comment">// Force the entry block to exist.</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       llvm::BasicBlock *NormalEntry = <a class="code" href="CGCleanup_8cpp.html#aa323d300bf9815591a90103d2ae54609">CreateNormalEntry</a>(*<span class="keyword">this</span>, Scope);</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> </div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       <span class="comment">// I.  Set up the fallthrough edge in.</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       CGBuilderTy::InsertPoint savedInactiveFallthroughIP;</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="comment">// If there's a fallthrough, we need to store the cleanup</span></div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       <span class="comment">// destination index.  For fall-throughs this is always zero.</span></div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       <span class="keywordflow">if</span> (HasFallthrough) {</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>         <span class="keywordflow">if</span> (!HasPrebranchedFallthrough)</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>           <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStore(<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt32(0), getNormalCleanupDestSlot());</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> </div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       <span class="comment">// Otherwise, save and clear the IP if we don't have fallthrough</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <span class="comment">// because the cleanup is inactive.</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FallthroughSource) {</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>         assert(!IsActive && <span class="stringliteral">"source without fallthrough for active cleanup"</span>);</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>         savedInactiveFallthroughIP = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.saveAndClearIP();</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">  707</span>       <span class="comment">// II.  Emit the entry block.  This implicitly branches to it if</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="comment">// we have fallthrough.  All the fixups and existing branches</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       <span class="comment">// should already be branched to it.</span></div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>       EmitBlock(NormalEntry);</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>       <span class="comment">// III.  Figure out where we're going and build the cleanup</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <span class="comment">// epilogue.</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span> </div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       <span class="keywordtype">bool</span> HasEnclosingCleanups =</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>         (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>() != EHStack.stable_end());</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span> </div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       <span class="comment">// Compute the branch-through dest if we need it:</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       <span class="comment">//   - if there are branch-throughs threaded through the scope</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       <span class="comment">//   - if fall-through is a branch-through</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <span class="comment">//   - if there are fixups that will be optimistically forwarded</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       <span class="comment">//     to the enclosing cleanup</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       llvm::BasicBlock *BranchThroughDest = 0;</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       <span class="keywordflow">if</span> (Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#aac75efce9198cb06fbad75f29a646dc8" title="Determines if this cleanup scope has any branch throughs.">hasBranchThroughs</a>() ||</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>           (FallthroughSource && FallthroughIsBranchThrough) ||</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>           (HasFixups && HasEnclosingCleanups)) {</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>         assert(HasEnclosingCleanups);</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>         <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html" title="A protected scope for zero-cost EH handling.">EHScope</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = *EHStack.find(Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#ad8e53ef85fe9d65ad3454aa74862b36b">getEnclosingNormalCleanup</a>());</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>         BranchThroughDest = <a class="code" href="CGCleanup_8cpp.html#aa323d300bf9815591a90103d2ae54609">CreateNormalEntry</a>(*<span class="keyword">this</span>, cast<EHCleanupScope>(S));</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> </div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>       llvm::BasicBlock *FallthroughDest = 0;</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>       <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Instruction*, 2></a> InstsToAppend;</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>       <span class="comment">// If there's exactly one branch-after and no other threads,</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>       <span class="comment">// we can route it without a switch.</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>       <span class="keywordflow">if</span> (!Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#aac75efce9198cb06fbad75f29a646dc8" title="Determines if this cleanup scope has any branch throughs.">hasBranchThroughs</a>() && !HasFixups && !HasFallthrough &&</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>           Scope.<a class="code" href="classclang_1_1CodeGen_1_1EHCleanupScope.html#a60bb1ffbabf54dee2aff9e03dbb02ffa" title=&