[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/CGExprAgg_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1554 @@
+<!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: CGExprAgg.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">CGExprAgg.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprAgg_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">//===--- CGExprAgg.cpp - Emit LLVM Code from Aggregate Expressions --------===//</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 to emit Aggregate Expr nodes as LLVM code.</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="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGObjCRuntime_8h.html">CGObjCRuntime.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</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="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="StmtVisitor_8h.html">clang/AST/StmtVisitor.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/IR/Constants.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/IR/Function.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/IR/GlobalVariable.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">using namespace </span>CodeGen;</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="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">//                        Aggregate Expression Emitter</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">namespace  </span>{</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span>AggExprEmitter : <span class="keyword">public</span> <a class="code" href="classclang_1_1StmtVisitor.html">StmtVisitor</a><AggExprEmitter> {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a5b4df39d75df3cedee71cc42402cc621">CGBuilderTy</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Dest;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">  /// We want to use 'dest' as the return slot except under two</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// conditions:</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  ///   - The destination slot requires garbage collection, so we</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  ///     need to use the GC API.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment">  ///   - The destination slot is potentially aliased.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment"></span>  <span class="keywordtype">bool</span> shouldUseDestForReturnSlot()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordflow">return</span> !(Dest.requiresGCollection() || Dest.isPotentiallyAliased());</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   }</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> getReturnValueSlot()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>     <span class="keywordflow">if</span> (!shouldUseDestForReturnSlot())</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>();</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(Dest.getAddr(), Dest.isVolatile());</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> </div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> EnsureSlot(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">if</span> (!Dest.isIgnored()) <span class="keywordflow">return</span> Dest;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">return</span> CGF.CreateAggTemp(T, <span class="stringliteral">"agg.tmp.ensured"</span>);</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   }</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordtype">void</span> EnsureDest(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <span class="keywordflow">if</span> (!Dest.isIgnored()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     Dest = CGF.CreateAggTemp(T, <span class="stringliteral">"agg.tmp.ensured"</span>);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   }</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   AggExprEmitter(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &cgf, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Dest)</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     : CGF(cgf), <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>(CGF.<a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>), Dest(Dest) {</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="comment">//                               Utilities</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  /// EmitAggLoadOfLValue - Given an expression with aggregate type that</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// represents a value lvalue, this method emits the address of the lvalue,</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// then loads the result into DestPtr.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment"></span>  <span class="keywordtype">void</span> EmitAggLoadOfLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E);</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">  /// EmitFinalDestCopy - Perform the final copy to DestPtr, if desired.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"></span>  <span class="keywordtype">void</span> EmitFinalDestCopy(<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>, <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> &src);</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordtype">void</span> EmitFinalDestCopy(<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_1RValue.html">RValue</a> src,</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>                          <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> srcAlignment = <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="l00081"></a><span class="lineno">   81</span>   <span class="keywordtype">void</span> EmitCopy(<a class="code" href="classclang_1_1QualType.html">QualType</a> type, <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> &dest,</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>                 <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> &src);</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordtype">void</span> EmitMoveFromReturnSlot(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Src);</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordtype">void</span> EmitArrayInit(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr, llvm::ArrayType *AType,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                      <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType, <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6">AggValueSlot::NeedsGCBarriers_t</a> needsGC(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="keywordflow">if</span> (CGF.getLangOpts().getGC() && TypeRequiresGCollection(T))</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6a05889a36706cee0b89d60688b1c15d07">AggValueSlot::NeedsGCBarriers</a>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>;</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> </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordtype">bool</span> TypeRequiresGCollection(<a class="code" href="classclang_1_1QualType.html">QualType</a> T);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment">//                            Visitor Methods</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordtype">void</span> VisitStmt(<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="l00102"></a><span class="lineno">  102</span>     CGF.ErrorUnsupported(S, <span class="stringliteral">"aggregate expression"</span>);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keywordtype">void</span> VisitParenExpr(<a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> *PE) { Visit(PE-><a class="code" href="classclang_1_1ParenExpr.html#afd9e25d5ae91df9ada9e26b74b60422b">getSubExpr</a>()); }</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordtype">void</span> VisitGenericSelectionExpr(<a class="code" href="classclang_1_1GenericSelectionExpr.html" title="Represents a C11 generic selection.">GenericSelectionExpr</a> *GE) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     Visit(GE-><a class="code" href="classclang_1_1GenericSelectionExpr.html#a078250182b8dc21030938e8d9125d060">getResultExpr</a>());</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   }</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordtype">void</span> VisitUnaryExtension(<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) { Visit(E-><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()); }</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keywordtype">void</span> VisitSubstNonTypeTemplateParmExpr(<a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html" title="Represents a reference to a non-type template parameter that has been substituted with a template arg...">SubstNonTypeTemplateParmExpr</a> *E) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1SubstNonTypeTemplateParmExpr.html#ae4cf8595c929a3957658a1853549ff3d">getReplacement</a>());</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   }</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="comment">// l-values.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordtype">void</span> VisitDeclRefExpr(<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *E) {</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="comment">// For aggregates, we should always be able to emit the variable</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="comment">// as an l-value unless it's a reference.  This is due to the fact</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="comment">// that we can't actually ever see a normal l2r conversion on an</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="comment">// aggregate in C++, and in C there's no language standard</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="comment">// actively preventing us from listing variables in the captures</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="comment">// list of a block.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>()-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConstantEmission.html">CodeGenFunction::ConstantEmission</a> result</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>             = CGF.tryEmitAsConstant(E)) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), result.getReferenceLValue(CGF, E));</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       }</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     }</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     EmitAggLoadOfLValue(E);</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> </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordtype">void</span> VisitMemberExpr(<a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME) { EmitAggLoadOfLValue(ME); }</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordtype">void</span> VisitUnaryDeref(<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *E) { EmitAggLoadOfLValue(E); }</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordtype">void</span> VisitStringLiteral(<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *E) { EmitAggLoadOfLValue(E); }</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordtype">void</span> VisitCompoundLiteralExpr(<a class="code" href="classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a> *E);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>   <span class="keywordtype">void</span> VisitArraySubscriptExpr(<a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> *E) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     EmitAggLoadOfLValue(E);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   }</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordtype">void</span> VisitPredefinedExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1PredefinedExpr.html" title="PredefinedExpr - [C99 6.4.2.2] - A predefined identifier such as func.">PredefinedExpr</a> *E) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     EmitAggLoadOfLValue(E);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>   <span class="comment">// Operators.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">void</span> VisitCastExpr(<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordtype">void</span> VisitCallExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *E);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>   <span class="keywordtype">void</span> VisitStmtExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> *E);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>   <span class="keywordtype">void</span> VisitBinaryOperator(<span class="keyword">const</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);</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keywordtype">void</span> VisitPointerToDataMemberBinaryOperator(<span class="keyword">const</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);</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordtype">void</span> VisitBinAssign(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordtype">void</span> VisitBinComma(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordtype">void</span> VisitObjCMessageExpr(<a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *E);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="keywordtype">void</span> VisitObjCIvarRefExpr(<a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a> *E) {</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     EmitAggLoadOfLValue(E);</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   }</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <span class="keywordtype">void</span> VisitAbstractConditionalOperator(<span class="keyword">const</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> *CO);</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   <span class="keywordtype">void</span> VisitChooseExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> *CE);</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordtype">void</span> VisitInitListExpr(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <span class="keywordtype">void</span> VisitImplicitValueInitExpr(<a class="code" href="classclang_1_1ImplicitValueInitExpr.html" title="Represents an implicitly-generated value initialization of an object of a given type.">ImplicitValueInitExpr</a> *E);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordtype">void</span> VisitCXXDefaultArgExpr(<a class="code" href="classclang_1_1CXXDefaultArgExpr.html" title="A default argument (C++ [dcl.fct.default]).">CXXDefaultArgExpr</a> *DAE) {</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     Visit(DAE-><a class="code" href="classclang_1_1CXXDefaultArgExpr.html#a6b83957a9f1fdde9130e0970c8d5b30d">getExpr</a>());</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   }</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordtype">void</span> VisitCXXDefaultInitExpr(<a class="code" href="classclang_1_1CXXDefaultInitExpr.html" title="A use of a default initializer in a constructor or in aggregate initialization.">CXXDefaultInitExpr</a> *DIE) {</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1CXXDefaultInitExprScope.html">CodeGenFunction::CXXDefaultInitExprScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(CGF);</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     Visit(DIE-><a class="code" href="classclang_1_1CXXDefaultInitExpr.html#a6879918eef5f3f76e80427766f6a954c" title="Get the initialization expression that will be used.">getExpr</a>());</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   }</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordtype">void</span> VisitCXXBindTemporaryExpr(<a class="code" href="classclang_1_1CXXBindTemporaryExpr.html" title="Represents binding an expression to a temporary.">CXXBindTemporaryExpr</a> *E);</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordtype">void</span> VisitCXXConstructExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *E);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordtype">void</span> VisitLambdaExpr(<a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *E);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordtype">void</span> VisitCXXStdInitializerListExpr(<a class="code" href="classclang_1_1CXXStdInitializerListExpr.html" title="Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...">CXXStdInitializerListExpr</a> *E);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keywordtype">void</span> VisitExprWithCleanups(<a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *E);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordtype">void</span> VisitCXXScalarValueInitExpr(<a class="code" href="classclang_1_1CXXScalarValueInitExpr.html">CXXScalarValueInitExpr</a> *E);</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordtype">void</span> VisitCXXTypeidExpr(<a class="code" href="classclang_1_1CXXTypeidExpr.html">CXXTypeidExpr</a> *E) { EmitAggLoadOfLValue(E); }</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="keywordtype">void</span> VisitMaterializeTemporaryExpr(<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *E);</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordtype">void</span> VisitOpaqueValueExpr(<a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *E);</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="keywordtype">void</span> VisitPseudoObjectExpr(<a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *E) {</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>()) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitPseudoObjectLValue(E);</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">return</span> EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), LV);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     }</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     CGF.EmitPseudoObjectRValue(E, EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</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> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordtype">void</span> VisitVAArgExpr(<a class="code" href="classclang_1_1VAArgExpr.html" title="VAArgExpr, used for the builtin function __builtin_va_arg.">VAArgExpr</a> *E);</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="keywordtype">void</span> EmitInitializationToLValue(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Address);</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordtype">void</span> EmitNullInitializationToLValue(<a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Address);</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">//  case Expr::ChooseExprClass:</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="keywordtype">void</span> VisitCXXThrowExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXThrowExpr.html" title="A C++ throw-expression (C++ [except.throw]).">CXXThrowExpr</a> *E) { CGF.EmitCXXThrowExpr(E); }</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordtype">void</span> VisitAtomicExpr(<a class="code" href="classclang_1_1AtomicExpr.html">AtomicExpr</a> *E) {</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     CGF.EmitAtomicExpr(E, EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()).getAddr());</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> };</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> }  <span class="comment">// end anonymous namespace.</span></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> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">//                                Utilities</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment"></span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">/// EmitAggLoadOfLValue - Given an expression with aggregate type that</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">/// represents a value lvalue, this method emits the address of the lvalue,</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">/// then loads the result into DestPtr.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitAggLoadOfLValue(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitLValue(E);</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>   <span class="comment">// If the type of the l-value is atomic, then do an atomic load.</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="keywordflow">if</span> (LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>()-><a class="code" href="classclang_1_1Type.html#a626764b819022cad4c8812cc25bbeb4d">isAtomicType</a>()) {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     CGF.EmitAtomicLoad(LV, E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), Dest);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   }</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), LV);</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> }</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment"></span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">/// \brief True if the given aggregate type requires special GC API calls.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment"></span><span class="keywordtype">bool</span> AggExprEmitter::TypeRequiresGCollection(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="comment">// Only record types have members that might require garbage collection.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RecordTy = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="keywordflow">if</span> (!RecordTy) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="comment">// Don't mess with non-trivial C++ types.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *Record = RecordTy-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>();</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordflow">if</span> (isa<CXXRecordDecl>(Record) &&</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       (cast<CXXRecordDecl>(Record)->hasNonTrivialCopyConstructor() ||</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>        !cast<CXXRecordDecl>(Record)->hasTrivialDestructor()))</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="comment">// Check whether the type has an object member.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">return</span> Record-><a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>();</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> }</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment"></span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">/// \brief Perform the final move to DestPtr if for some reason</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">/// getReturnValueSlot() didn't use it directly.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">/// The idea is that you do something like this:</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">///   RValue Result = EmitSomething(..., getReturnValueSlot());</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">///   EmitMoveFromReturnSlot(E, Result);</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">/// If nothing interferes, this will cause the result to be emitted</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">/// directly into the return value slot.  Otherwise, a final move</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">/// will be performed.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitMoveFromReturnSlot(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> src) {</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">if</span> (shouldUseDestForReturnSlot()) {</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="comment">// Logically, Dest.getAddr() should equal Src.getAggregateAddr().</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>     <span class="comment">// The possibility of undef rvalues complicates that a lot,</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="comment">// though, so we can't really assert.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordflow">return</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">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// Otherwise, copy from there to the destination.</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   assert(Dest.getAddr() != src.<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="l00255"></a><span class="lineno">  255</span>   std::pair<CharUnits, CharUnits> typeInfo = </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     CGF.getContext().getTypeInfoInChars(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), src, typeInfo.second);</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> }</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment"></span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">/// EmitFinalDestCopy - Perform the final copy to DestPtr, if desired.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitFinalDestCopy(<a class="code" href="classclang_1_1QualType.html">QualType</a> type, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> src,</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>                                        <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> srcAlign) {</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   assert(src.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a9de028e086fc0698020b18ebaf2806f5">isAggregate</a>() && <span class="stringliteral">"value must be aggregate value!"</span>);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> srcLV = CGF.MakeAddrLValue(src.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#ae56c586d571b8d6d1cea9a78b89d9439" title="getAggregateAddr() - Return the Value* of the address of the aggregate.">getAggregateAddr</a>(), <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, srcAlign);</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   EmitFinalDestCopy(type, srcLV);</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> }</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment"></span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">/// EmitFinalDestCopy - Perform the final copy to DestPtr, if desired.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitFinalDestCopy(<a class="code" href="classclang_1_1QualType.html">QualType</a> type, <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> &src) {</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="comment">// If Dest is ignored, then we're evaluating an aggregate expression</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="comment">// in a context that doesn't care about the result.  Note that loads</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>   <span class="comment">// from volatile l-values force the existence of a non-ignored</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>   <span class="comment">// destination.</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <span class="keywordflow">if</span> (Dest.isIgnored())</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keywordflow">return</span>;</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>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> srcAgg =</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(src, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>                             needsGC(type), <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7faace1c68f0603afb820d48040e0b82f27">AggValueSlot::IsAliased</a>);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   EmitCopy(type, Dest, srcAgg);</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> }</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment"></span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="comment">/// Perform a copy from the source into the destination.</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment">/// \param type - the type of the aggregate being copied; qualifiers are</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">///   ignored</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitCopy(<a class="code" href="classclang_1_1QualType.html">QualType</a> type, <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> &dest,</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>                               <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> &src) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <span class="keywordflow">if</span> (dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a0cf8baa2c5c8c844a5e7a572813d60ee">requiresGCollection</a>()) {</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> sz = CGF.getContext().getTypeSizeInChars(type);</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *size = llvm::ConstantInt::get(CGF.SizeTy, sz.<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="l00292"></a><span class="lineno">  292</span>     CGF.CGM.getObjCRuntime().EmitGCMemmoveCollectable(CGF,</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>                                                       dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(),</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>                                                       src.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(),</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>                                                       size);</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   }</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">// If the result of the assignment is used, copy the LHS there also.</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">// It's volatile if either side is.  Use the minimum alignment of</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="comment">// the two sides.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   CGF.EmitAggregateCopy(dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), src.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</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="l00303"></a><span class="lineno">  303</span>                         dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#ac50a70d28cd94aebcc695f4d21ecf3e0">isVolatile</a>() || src.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#ac50a70d28cd94aebcc695f4d21ecf3e0">isVolatile</a>(),</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>                         std::min(dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>(), src.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>()));</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> <span class="comment"></span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> <span class="comment">/// \brief Emit the initializer for a std::initializer_list initialized with a</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="comment">/// real initializer list.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> AggExprEmitter::VisitCXXStdInitializerListExpr(<a class="code" href="classclang_1_1CXXStdInitializerListExpr.html" title="Implicit construction of a std::initializer_list<T> object from an array temporary within list-initia...">CXXStdInitializerListExpr</a> *E) {</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="comment">// Emit an array containing the elements.  The array is externally destructed</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="comment">// if the std::initializer_list object is.</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx = CGF.getContext();</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Array = CGF.EmitLValue(E-><a class="code" href="classclang_1_1CXXStdInitializerListExpr.html#a2c3ed71fdc16fe59ed18ae7e56eec04e">getSubExpr</a>());</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   assert(Array.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>() && <span class="stringliteral">"initializer_list array not a simple lvalue"</span>);</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayPtr = Array.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *<a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> =</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>       Ctx.<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(E-><a class="code" href="classclang_1_1CXXStdInitializerListExpr.html#a2c3ed71fdc16fe59ed18ae7e56eec04e">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   assert(ArrayType && <span class="stringliteral">"std::initializer_list constructed from non-array"</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="comment">// FIXME: Perform the checks on the field types in SemaInit.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *Record = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = Record-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>();</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">if</span> (Field == Record-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>()) {</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"weird std::initializer_list"</span>);</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   }</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   <span class="comment">// Start pointer.</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">if</span> (!Field->getType()->isPointerType() ||</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       !Ctx.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(Field->getType()->getPointeeType(),</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>                        ArrayType-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>())) {</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"weird std::initializer_list"</span>);</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   }</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Dest = EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> DestLV = CGF.MakeAddrLValue(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>                                      Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>());</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> Start = CGF.EmitLValueForFieldInitialization(DestLV, *Field);</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = llvm::ConstantInt::get(CGF.PtrDiffTy, 0);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IdxStart[] = { Zero, Zero };</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayStart =</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(ArrayPtr, IdxStart, <span class="stringliteral">"arraystart"</span>);</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(ArrayStart), Start);</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   ++Field;</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="keywordflow">if</span> (Field == Record-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>()) {</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"weird std::initializer_list"</span>);</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.getInt(ArrayType-><a class="code" href="classclang_1_1ConstantArrayType.html#add90924c309ad1f353431f2b63e9ba2b">getSize</a>());</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> EndOrLength = CGF.EmitLValueForFieldInitialization(DestLV, *Field);</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keywordflow">if</span> (Field->getType()->isPointerType() &&</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       Ctx.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(Field->getType()->getPointeeType(),</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>                       ArrayType-><a class="code" href="classclang_1_1ArrayType.html#ad9681a11b43dc70a3c4db07d2a450d12">getElementType</a>())) {</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="comment">// End pointer.</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IdxEnd[] = { Zero, Size };</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayEnd =</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>         <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(ArrayPtr, IdxEnd, <span class="stringliteral">"arrayend"</span>);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(ArrayEnd), EndOrLength);</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Ctx.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(Field->getType(), Ctx.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>())) {</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="comment">// Length.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Size), EndOrLength);</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"weird std::initializer_list"</span>);</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">return</span>;</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> }</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> <span class="comment"></span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">/// \brief Emit initialization of an array from an initializer list.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> <span class="comment"></span><span class="keywordtype">void</span> AggExprEmitter::EmitArrayInit(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr, llvm::ArrayType *AType,</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>                                    <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType, <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E) {</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   uint64_t NumInitElements = E-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>();</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   uint64_t NumArrayElements = AType->getNumElements();</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   assert(NumInitElements <= NumArrayElements);</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>   <span class="comment">// DestPtr is an array*.  Construct an elementType* by drilling</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="comment">// down a level.</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *zero = llvm::ConstantInt::get(CGF.SizeTy, 0);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *indices[] = { zero, zero };</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *begin =</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(DestPtr, indices, <span class="stringliteral">"arrayinit.begin"</span>);</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="comment">// Exception safety requires us to destroy all the</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="comment">// already-constructed members if an initializer throws.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="comment">// For that, we'll need an EH cleanup.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = elementType.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   llvm::AllocaInst *endOfInit = 0;</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> cleanup;</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   llvm::Instruction *cleanupDominator = 0;</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   <span class="keywordflow">if</span> (CGF.needsEHCleanup(dtorKind)) {</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="comment">// In principle we could tell the cleanup where we are more</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="comment">// directly, but the control flow can get so varied here that it</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="comment">// would actually be quite complex.  Therefore we go through an</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <span class="comment">// alloca.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     endOfInit = CGF.CreateTempAlloca(begin->getType(),</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>                                      <span class="stringliteral">"arrayinit.endOfInit"</span>);</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     cleanupDominator = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStore(begin, endOfInit);</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     CGF.pushIrregularPartialArrayCleanup(begin, endOfInit, elementType,</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>                                          CGF.getDestroyer(dtorKind));</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>     cleanup = CGF.EHStack.stable_begin();</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="comment">// Otherwise, remember that we didn't need a cleanup.</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     dtorKind = <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca60f4838ac0cd80cff599fc5d88f7c272">QualType::DK_none</a>;</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   }</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *one = llvm::ConstantInt::get(CGF.SizeTy, 1);</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>   <span class="comment">// The 'current element to initialize'.  The invariants on this</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   <span class="comment">// variable are complicated.  Essentially, after each iteration of</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   <span class="comment">// the loop, it points to the last initialized element, except</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <span class="comment">// that it points to the beginning of the array before any</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="comment">// elements have been initialized.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *element = begin;</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>   <span class="comment">// Emit the explicit initializers.</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="keywordflow">for</span> (uint64_t i = 0; i != NumInitElements; ++i) {</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="comment">// Advance to the next element.</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="keywordflow">if</span> (i > 0) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       element = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(element, one, <span class="stringliteral">"arrayinit.element"</span>);</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       <span class="comment">// Tell the cleanup that it needs to destroy up to this</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="comment">// element.  TODO: some of these stores can be trivially</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       <span class="comment">// observed to be unnecessary.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>       <span class="keywordflow">if</span> (endOfInit) <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStore(element, endOfInit);</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>     }</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> elementLV = CGF.MakeAddrLValue(element, elementType);</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     EmitInitializationToLValue(E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(i), elementLV);</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   }</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="comment">// Check whether there's a non-trivial array-fill expression.</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="comment">// Note that this will be a CXXConstructExpr even if the element</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="comment">// type is an array (or array of array, etc.) of class type.</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *filler = E-><a class="code" href="classclang_1_1InitListExpr.html#aedc37ba20a990d2bc3e54a8dae290ea5" title="If this initializer list initializes an array with more elements than there are initializers in the l...">getArrayFiller</a>();</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordtype">bool</span> hasTrivialFiller = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *cons = dyn_cast_or_null<CXXConstructExpr>(filler)) {</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     assert(cons->getConstructor()->isDefaultConstructor());</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     hasTrivialFiller = cons->getConstructor()->isTrivial();</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   }</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> </div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="comment">// Any remaining elements need to be zero-initialized, possibly</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>   <span class="comment">// using the filler expression.  We can skip this if the we're</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="comment">// emitting to zeroed memory.</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="keywordflow">if</span> (NumInitElements != NumArrayElements &&</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       !(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>() && hasTrivialFiller &&</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>         CGF.getTypes().isZeroInitializable(elementType))) {</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="comment">// Use an actual loop.  This is basically</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="comment">//   do { *array++ = filler; } while (array != end);</span></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>     <span class="comment">// Advance to the start of the rest of the array.</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>     <span class="keywordflow">if</span> (NumInitElements) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       element = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(element, one, <span class="stringliteral">"arrayinit.start"</span>);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>       <span class="keywordflow">if</span> (endOfInit) <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStore(element, endOfInit);</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     }</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     <span class="comment">// Compute the end of the array.</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *end = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(begin,</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>                       llvm::ConstantInt::get(CGF.SizeTy, NumArrayElements),</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>                                                  <span class="stringliteral">"arrayinit.end"</span>);</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     llvm::BasicBlock *entryBB = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     llvm::BasicBlock *bodyBB = CGF.createBasicBlock(<span class="stringliteral">"arrayinit.body"</span>);</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> </div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="comment">// Jump into the body.</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     CGF.EmitBlock(bodyBB);</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     llvm::PHINode *currentElement =</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreatePHI(element->getType(), 2, <span class="stringliteral">"arrayinit.cur"</span>);</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     currentElement->addIncoming(element, entryBB);</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="comment">// Emit the actual filler expression.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> elementLV = CGF.MakeAddrLValue(currentElement, elementType);</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">if</span> (filler)</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       EmitInitializationToLValue(filler, elementLV);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       EmitNullInitializationToLValue(elementLV);</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="comment">// Move on to the next element.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *nextElement =</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateInBoundsGEP(currentElement, one, <span class="stringliteral">"arrayinit.next"</span>);</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="comment">// Tell the EH cleanup that we finished with the last element.</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="keywordflow">if</span> (endOfInit) <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStore(nextElement, endOfInit);</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="comment">// Leave the loop if we're done.</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *done = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateICmpEQ(nextElement, end,</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>                                              <span class="stringliteral">"arrayinit.done"</span>);</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     llvm::BasicBlock *endBB = CGF.createBasicBlock(<span class="stringliteral">"arrayinit.end"</span>);</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateCondBr(done, endBB, bodyBB);</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     currentElement->addIncoming(nextElement, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.GetInsertBlock());</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     CGF.EmitBlock(endBB);</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   }</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   <span class="comment">// Leave the partial-array cleanup if we entered one.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="keywordflow">if</span> (dtorKind) CGF.DeactivateCleanupBlock(cleanup, cleanupDominator);</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> }</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="comment">//                            Visitor Methods</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> <span class="keywordtype">void</span> AggExprEmitter::VisitMaterializeTemporaryExpr(<a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *E){</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   Visit(E-><a class="code" href="classclang_1_1MaterializeTemporaryExpr.html#a5dd4b02d9bf3c32392d3e99355165fc1" title="Retrieve the temporary-generating subexpression whose value will be materialized into a glvalue...">GetTemporaryExpr</a>());</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> }</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="keywordtype">void</span> AggExprEmitter::VisitOpaqueValueExpr(<a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *e) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   EmitFinalDestCopy(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), CGF.getOpaqueLValueMapping(e));</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> </div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> AggExprEmitter::VisitCompoundLiteralExpr(<a class="code" href="classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a> *E) {</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   <span class="keywordflow">if</span> (Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#adb219bf2d168b371f929182cccd37ec1">isPotentiallyAliased</a>() &&</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>       E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<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.getContext())) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="comment">// For a POD type, just emit a load of the lvalue + a copy, because our</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="comment">// compound literal might alias the destination.</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     EmitAggLoadOfLValue(E);</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   }</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   </div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   CGF.EmitAggExpr(E-><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a58a7892a6b8a634633af52490dc33879">getInitializer</a>(), Slot);</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> }</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> <span class="comment"></span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> <span class="comment">/// Attempt to look through various unimportant expressions to find a</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> <span class="comment">/// cast of the given kind.</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno"><a class="code" href="CGExprAgg_8cpp.html#a5ad6f021772a46ec1051a947ade2263d">  533</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="CGExprAgg_8cpp.html#a5ad6f021772a46ec1051a947ade2263d">findPeephole</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *op, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>) {</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     op = op-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *castE = dyn_cast<CastExpr>(op)) {</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>       <span class="keywordflow">if</span> (castE->getCastKind() == <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>)</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>         <span class="keywordflow">return</span> castE->getSubExpr();</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>       <span class="keywordflow">if</span> (castE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>)</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     }</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     <span class="keywordflow">return</span> 0;</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> }</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> <span class="keywordtype">void</span> AggExprEmitter::VisitCastExpr(<a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *E) {</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>()) {</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca256751070614007fb6d4b82e48460a97" title="CK_Dynamic - A C++ dynamic_cast.">CK_Dynamic</a>: {</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="comment">// FIXME: Can this actually happen? We have no test coverage for it.</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     assert(isa<CXXDynamicCastExpr>(E) && <span class="stringliteral">"CK_Dynamic without a dynamic_cast?"</span>);</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitCheckedLValue(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>(),</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6ad8ff8e321b7ca9aac56195de9ea05d94" title="Checking the operand of a load. Must be suitably sized and aligned.">CodeGenFunction::TCK_Load</a>);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="comment">// FIXME: Do we also need to handle property references here?</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <span class="keywordflow">if</span> (LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>())</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>       CGF.EmitDynamicCast(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), cast<CXXDynamicCastExpr>(E));</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       CGF.CGM.ErrorUnsupported(E, <span class="stringliteral">"non-simple lvalue dynamic_cast"</span>);</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     </div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     <span class="keywordflow">if</span> (!Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>())</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       CGF.CGM.ErrorUnsupported(E, <span class="stringliteral">"lvalue dynamic_cast with a destination"</span>);</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   }</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8ea0e009738649ecec9ae75302358e8a">CK_ToUnion</a>: {</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keywordflow">if</span> (Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>()) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>     <span class="comment">// GCC union extension</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> PtrTy = CGF.getContext().getPointerType(Ty);</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CastPtr = <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateBitCast(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(),</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>                                                  CGF.ConvertType(PtrTy));</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     EmitInitializationToLValue(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>(),</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>                                CGF.MakeAddrLValue(CastPtr, Ty));</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   }</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca73a268da1a2e05cdf1ace06c46412caa">CK_DerivedToBase</a>:</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacf9d54607fb757633eea67b88cd432b8">CK_BaseToDerived</a>:</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caafe5fe4f044e3c17524af98993c8b058">CK_UncheckedDerivedToBase</a>: {</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     llvm_unreachable(<span class="stringliteral">"cannot perform hierarchy conversion in EmitAggExpr: "</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>                 <span class="stringliteral">"should have been unpacked before we got here"</span>);</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> </div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a>:</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafb2f9da9740fb15b339767da2bcedc8a" title="Converts from _Atomic(T) to T.">CK_AtomicToNonAtomic</a>: {</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     <span class="keywordtype">bool</span> isToAtomic = (E-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a>);</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">// Determine the atomic and value types.</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> atomicType = E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> valueType = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <span class="keywordflow">if</span> (isToAtomic) std::swap(atomicType, valueType);</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>     assert(atomicType-><a class="code" href="classclang_1_1Type.html#a626764b819022cad4c8812cc25bbeb4d">isAtomicType</a>());</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>     assert(CGF.getContext().hasSameUnqualifiedType(valueType,</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>                           atomicType-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1AtomicType.html">AtomicType</a>>()-><a class="code" href="classclang_1_1AtomicType.html#a00c483aa6cbb1980e6aa1c3d1f4ee847">getValueType</a>()));</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>     <span class="comment">// Just recurse normally if we're ignoring the result or the</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     <span class="comment">// atomic type doesn't change representation.</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>     <span class="keywordflow">if</span> (Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>() || !CGF.CGM.isPaddedAtomicType(atomicType)) {</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>());</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> </div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> peepholeTarget =</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       (isToAtomic ? <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafb2f9da9740fb15b339767da2bcedc8a" title="Converts from _Atomic(T) to T.">CK_AtomicToNonAtomic</a> : <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab2c34ae82486ed6cd94d5cea5ef51704" title="Converts from T to _Atomic(T).">CK_NonAtomicToAtomic</a>);</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> </div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>     <span class="comment">// These two cases are reverses of each other; try to peephole them.</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html">Expr</a> *op = <a class="code" href="CGExprAgg_8cpp.html#a5ad6f021772a46ec1051a947ade2263d">findPeephole</a>(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>(), peepholeTarget)) {</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       assert(CGF.getContext().hasSameUnqualifiedType(op->getType(),</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>                                                      E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) &&</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>            <span class="stringliteral">"peephole significantly changed types?"</span>);</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="keywordflow">return</span> Visit(op);</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     }</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> </div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>     <span class="comment">// If we're converting an r-value of non-atomic type to an r-value</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     <span class="comment">// of atomic type, just emit directly into the relevant sub-object.</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>     <span class="keywordflow">if</span> (isToAtomic) {</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> valueDest = Dest;</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       <span class="keywordflow">if</span> (!valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>() && CGF.CGM.isPaddedAtomicType(atomicType)) {</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>         <span class="comment">// Zero-initialize.  (Strictly speaking, we only need to intialize</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>         <span class="comment">// the padding at the end, but this is simpler.)</span></div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>         <span class="keywordflow">if</span> (!Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>())</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>           CGF.EmitNullInitialization(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), atomicType);</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> </div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>         <span class="comment">// Build a GEP to refer to the subobject.</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *valueAddr =</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>             CGF.Builder.CreateStructGEP(valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), 0);</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>         valueDest = <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(valueAddr,</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>                                           valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>(),</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>                                           valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a91a427af6e1c6bc7bf934934c3a7c211">getQualifiers</a>(),</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>                                           valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a78962e2d67425fe7b466e6a3666808e1">isExternallyDestructed</a>(),</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>                                           valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a0cf8baa2c5c8c844a5e7a572813d60ee">requiresGCollection</a>(),</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>                                           valueDest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#adb219bf2d168b371f929182cccd37ec1">isPotentiallyAliased</a>(),</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>                                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a48c54c38e1ae284121c83e4c35bb6927a02fd5827776ffe17bab1eef5981533c9">AggValueSlot::IsZeroed</a>);</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>       </div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>       CGF.EmitAggExpr(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>(), valueDest);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       <span class="keywordflow">return</span>;</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> </div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     <span class="comment">// Otherwise, we're converting an atomic type to a non-atomic type.</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="comment">// Make an atomic temporary, emit into that, and then copy the value out.</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> atomicSlot =</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>       CGF.CreateAggTemp(atomicType, <span class="stringliteral">"atomic-to-nonatomic.temp"</span>);</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     CGF.EmitAggExpr(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>(), atomicSlot);</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> </div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *valueAddr =</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>.CreateStructGEP(atomicSlot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), 0);</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> rvalue = <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeeb48f4fb8409aca54d4611ad4a28559">RValue::getAggregate</a>(valueAddr, atomicSlot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#ac50a70d28cd94aebcc695f4d21ecf3e0">isVolatile</a>());</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     <span class="keywordflow">return</span> EmitFinalDestCopy(valueType, rvalue);</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   }</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> </div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>:</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     <span class="comment">// If we're loading from a volatile type, force the destination</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     <span class="comment">// into existence.</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>()) {</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       EnsureDest(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>());</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     }</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="comment">// fallthrough</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> </div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca84fedc22426b7cd5db4e84d590522adb">CK_UserDefinedConversion</a>:</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad2d52a3df80ffd6ed33b81af15c872b0">CK_ConstructorConversion</a>:</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     assert(CGF.getContext().hasSameUnqualifiedType(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>                                                    E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) &&</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>            <span class="stringliteral">"Implicit cast types must be compatible"</span>);</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     Visit(E-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>());</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="keywordflow">break</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="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26d313dc7aa71eb9a90dba577004ecdd">CK_LValueBitCast</a>:</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     llvm_unreachable(<span class="stringliteral">"should not be emitting lvalue bitcast as rvalue"</span>);</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span> </div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca083127f65375358e525293ded6aa20ff">CK_Dependent</a>:</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca966388c17db29effd052ff1f5da7f64f">CK_ArrayToPointerDecay</a>:</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab98f67d90bd9e115f96916271318fe71">CK_FunctionToPointerDecay</a>:</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>:</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca26ac11778b8142c489add68f63bb6dde">CK_NullToMemberPointer</a>:</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3c6a5409bb52618fc54e2a1b7fea53e8">CK_BaseToDerivedMemberPointer</a>:</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca82cc4f2178c9c3b36d0790c155939350">CK_DerivedToBaseMemberPointer</a>:</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71aec4768318edbbc08dbe65bc4f0e8d">CK_MemberPointerToBoolean</a>:</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cafe996870a0a2acb7913b2dfff4514961">CK_ReinterpretMemberPointer</a>:</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca25161f0bbb6d2b99bd5fbbf9c19ef751">CK_IntegralToPointer</a>:</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca71a69f66ffd32b22a11ee92d49359612">CK_PointerToIntegral</a>:</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2aba1f25bc41c5f972576e6b3aff5d3c">CK_PointerToBoolean</a>:</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5d34b62fbc611f2f762ff5c72845fa5">CK_ToVoid</a>:</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad92f354774050cdc155c425c4268c701">CK_VectorSplat</a>:</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cad71cad80dd5957bfc6e8aa8f3a36f814">CK_IntegralCast</a>:</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca10227766dc73da8ee82588b158be3ec5">CK_IntegralToBoolean</a>:</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2cf53b5b93effb16c027b884ed149c8d">CK_IntegralToFloating</a>:</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca0d5ae3f886d5297b84191286796cff35">CK_FloatingToIntegral</a>:</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca51c66fc8d55bbf9fbbe237705b1d01aa">CK_FloatingToBoolean</a>:</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab482ba41f148596616a763a65f09584c">CK_FloatingCast</a>:</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca49cdf8abcaeac51e47994305a998f3bd" title="Converting between two Objective-C object types, which can occur when performing reference binding to...">CK_ObjCObjectLValueCast</a>:</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca1cad6c2d96d3c0f2af106f2b1368492e" title="A conversion of a floating point real to a floating point complex of the original type...">CK_FloatingRealToComplex</a>:</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cae5c5fd1deef6203422d504a5f8bdc6ce" title="Converts a floating point complex to floating point real of the source's element type. Just discards the imaginary component. _Complex long double -> long double.">CK_FloatingComplexToReal</a>:</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca2bd6941fcc6aebca94562ecd98a7024e" title="Converts a floating point complex to bool by comparing against 0+0i.">CK_FloatingComplexToBoolean</a>:</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca4afeb9e95e7e3b7306549eadbdbe9c80" title="Converts between different floating point complex types. _Complex float -> _Complex double...">CK_FloatingComplexCast</a>:</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca43029dd8d1bc9710d1e43b8c0d294e71" title="Converts from a floating complex to an integral complex. _Complex float -> _Complex int...">CK_FloatingComplexToIntegralComplex</a>:</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca5cbf9648982576f016ac45aeb4ff06a1" title="Converts from an integral real to an integral complex whose element type matches the source...">CK_IntegralRealToComplex</a>:</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca354a7827d46025f132fd402f609f1e85" title="Converts an integral complex to an integral real of the source's element type by discarding the imagi...">CK_IntegralComplexToReal</a>:</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e687c96123e650206d3feb3aba3ff5a" title="Converts an integral complex to bool by comparing against 0+0i.">CK_IntegralComplexToBoolean</a>:</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab716d5bd471b943dda830dd2659cacce" title="Converts between different integral complex types. _Complex char -> _Complex long long _Complex unsig...">CK_IntegralComplexCast</a>:</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cab4da0cbf1af3ba6fc7b47af7c548ff31" title="Converts from an integral complex to a floating complex. _Complex unsigned -> _Complex float...">CK_IntegralComplexToFloatingComplex</a>:</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca9f5583b92f81ac9a5b9fb5ad43e8435c" title="[ARC] Produces a retainable object pointer so that it may be consumed, e.g. by being passed to a cons...">CK_ARCProduceObject</a>:</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cabd5bc09cee26b551eb8174e32f1239cf" title="[ARC] Consumes a retainable object pointer that has just been produced, e.g. as the return value of a...">CK_ARCConsumeObject</a>:</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca54bc1edcd89f791f8516abeea370fa49" title="[ARC] Reclaim a retainable object pointer object that may have been produced and autoreleased as part...">CK_ARCReclaimReturnedObject</a>:</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca88a24e1d8c6ee42652b389edc898488f" title="[ARC] Causes a value of block type to be copied to the heap, if it is not already there...">CK_ARCExtendBlockObject</a>:</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3d6e9ee43c0dc11f3efca79e7c563a20" title="Causes a block literal to by copied to the heap and then autoreleased.">CK_CopyAndAutoreleaseBlockObject</a>:</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8caac03ac448a686cc808b1b7490e2e696a">CK_BuiltinFnToFnPtr</a>:</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca8e560e545d9c0c051691299879d30932">CK_ZeroToOCLEvent</a>:</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     llvm_unreachable(<span class="stringliteral">"cast kind invalid for aggregate types"</span>);</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> }</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> <span class="keywordtype">void</span> AggExprEmitter::VisitCallExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *E) {</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CallExpr.html#abacb26ed953d3bdb1f8bb67cdeaba298">getCallReturnType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     EmitAggLoadOfLValue(E);</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = CGF.EmitCallExpr(E, getReturnValueSlot());</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   EmitMoveFromReturnSlot(E, RV);</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> </div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="keywordtype">void</span> AggExprEmitter::VisitObjCMessageExpr(<a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *E) {</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = CGF.EmitObjCMessageExpr(E, getReturnValueSlot());</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   EmitMoveFromReturnSlot(E, RV);</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> }</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> <span class="keywordtype">void</span> AggExprEmitter::VisitBinComma(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   CGF.EmitIgnoredExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span> }</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span> </div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span> <span class="keywordtype">void</span> AggExprEmitter::VisitStmtExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> *E) {</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1StmtExprEvaluation.html">CodeGenFunction::StmtExprEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   CGF.EmitCompoundStmt(*E-><a class="code" href="classclang_1_1StmtExpr.html#a0f25641e4a28c9c33580fb2703999958">getSubStmt</a>(), <span class="keyword">true</span>, Dest);</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="keywordtype">void</span> AggExprEmitter::VisitBinaryOperator(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a31e63255bd536c2d74a66ac47160ed53">BO_PtrMemD</a> || E-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>)</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     VisitPointerToDataMemberBinaryOperator(E);</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"aggregate binary expression"</span>);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span> }</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span> </div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> <span class="keywordtype">void</span> AggExprEmitter::VisitPointerToDataMemberBinaryOperator(</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>                                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitPointerToDataMemberBinaryExpr(E);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), LV);</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> }</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment"></span></div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span> <span class="comment">/// Is the value of the given expression possibly a reference to or</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> <span class="comment">/// into a __block variable?</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno"><a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">  760</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   <span class="comment">// Make sure we look through parens.</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <span class="comment">// Check for a direct reference to a __block variable.</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</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>(E)) {</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var = dyn_cast<<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>>(DRE->getDecl());</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>     <span class="keywordflow">return</span> (var && var-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1BlocksAttr.html">BlocksAttr</a>>());</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   }</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span> </div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="comment">// More complicated stuff.</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span> </div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   <span class="comment">// Binary operators.</span></div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *op = dyn_cast<BinaryOperator>(E)) {</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <span class="comment">// For an assignment or pointer-to-member operation, just care</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     <span class="comment">// about the LHS.</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="keywordflow">if</span> (op->isAssignmentOp() || op->isPtrMemOp())</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>       <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(op->getLHS());</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span> </div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="comment">// For a comma, just care about the RHS.</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="keywordflow">if</span> (op->getOpcode() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>)</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(op->getRHS());</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span> </div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     <span class="comment">// FIXME: pointer arithmetic?</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> </div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <span class="comment">// Check both sides of a conditional operator.</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> *op</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>                = dyn_cast<AbstractConditionalOperator>(E)) {</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(op->getTrueExpr())</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>         || <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(op->getFalseExpr());</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>   <span class="comment">// OVEs are required to support BinaryConditionalOperators.</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *op</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>                = dyn_cast<OpaqueValueExpr>(E)) {</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *src = op->getSourceExpr())</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>       <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(src);</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> </div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>   <span class="comment">// Casts are necessary to get things like (*(int*)&var) = foo().</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   <span class="comment">// We don't really care about the kind of cast here, except</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>   <span class="comment">// we don't want to look through l2r casts, because it's okay</span></div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   <span class="comment">// to get the *value* in a __block variable.</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *cast = dyn_cast<CastExpr>(E)) {</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordflow">if</span> (cast->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>)</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(cast->getSubExpr());</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span> </div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>   <span class="comment">// Handle unary operators.  Again, just aggressively look through</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>   <span class="comment">// it, ignoring the operation.</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *uop = dyn_cast<UnaryOperator>(E)) {</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(uop->getSubExpr());</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>   <span class="comment">// Look into the base of a field access.</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *mem = dyn_cast<MemberExpr>(E)) {</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(mem->getBase());</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span> </div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   <span class="comment">// Look into the base of a subscript.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> *sub = dyn_cast<ArraySubscriptExpr>(E)) {</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     <span class="keywordflow">return</span> <a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(sub->getBase());</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   }</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span> </div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   <span class="keywordflow">return</span> <span class="keyword">false</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> </div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span> <span class="keywordtype">void</span> AggExprEmitter::VisitBinAssign(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *E) {</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>   <span class="comment">// For an assignment to work, the value on the right has</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>   <span class="comment">// to be compatible with the value on the left.</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   assert(CGF.getContext().hasSameUnqualifiedType(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>                                                  E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>          && <span class="stringliteral">"Invalid assignment"</span>);</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> </div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>   <span class="comment">// If the LHS might be a __block variable, and the RHS can</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>   <span class="comment">// potentially cause a block copy, we need to evaluate the RHS first</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>   <span class="comment">// so that the assignment goes the right place.</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>   <span class="comment">// This is pretty semantically fragile.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>   <span class="keywordflow">if</span> (<a class="code" href="CGExprAgg_8cpp.html#a2a1f3e356c08fe877c67050c9bf66379">isBlockVarRef</a>(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()) &&</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</a>(CGF.getContext())) {</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     <span class="comment">// Ensure that we have a destination, and evaluate the RHS into that.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>     EnsureDest(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span> </div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="comment">// Now emit the LHS and copy into it.</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS = CGF.EmitCheckedLValue(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a958228d51bdf7739b42b3131a3f64ecd" title="Checking the destination of a store. Must be suitably sized and aligned.">CodeGenFunction::TCK_Store</a>);</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span> </div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <span class="comment">// That copy is an atomic copy if the LHS is atomic.</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     <span class="keywordflow">if</span> (LHS.getType()->isAtomicType()) {</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       CGF.EmitAtomicStore(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a7db14eb5994ec93ea9206e82777cc6de">asRValue</a>(), LHS, <span class="comment">/*isInit*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     }</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> </div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     EmitCopy(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>              <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LHS, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>                                      needsGC(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7faace1c68f0603afb820d48040e0b82f27">AggValueSlot::IsAliased</a>),</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>              Dest);</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>   }</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>   </div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LHS = CGF.EmitLValue(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span> </div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>   <span class="comment">// If we have an atomic type, evaluate into the destination and then</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>   <span class="comment">// do an atomic copy.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>   <span class="keywordflow">if</span> (LHS.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>()-><a class="code" href="classclang_1_1Type.html#a626764b819022cad4c8812cc25bbeb4d">isAtomicType</a>()) {</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     EnsureDest(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     Visit(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     CGF.EmitAtomicStore(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a7db14eb5994ec93ea9206e82777cc6de">asRValue</a>(), LHS, <span class="comment">/*isInit*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>   }</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> </div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>   <span class="comment">// Codegen the RHS so that it stores directly into the LHS.</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> LHSSlot =</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LHS, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>, </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>                             needsGC(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>                             <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7faace1c68f0603afb820d48040e0b82f27">AggValueSlot::IsAliased</a>);</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>   <span class="comment">// A non-volatile aggregate destination might have volatile member.</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>   <span class="keywordflow">if</span> (!LHSSlot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#ac50a70d28cd94aebcc695f4d21ecf3e0">isVolatile</a>() &&</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       CGF.hasVolatileMember(E-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()))</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     LHSSlot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a05f37782d7547d66d8888aa296feb531">setVolatile</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>       </div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>   CGF.EmitAggExpr(E-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>(), LHSSlot);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span> </div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>   <span class="comment">// Copy into the destination if the assignment isn't ignored.</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>   EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), LHS);</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span> }</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> </div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> <span class="keywordtype">void</span> AggExprEmitter::</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> VisitAbstractConditionalOperator(<span class="keyword">const</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> *E) {</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>   llvm::BasicBlock *LHSBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.true"</span>);</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>   llvm::BasicBlock *RHSBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.false"</span>);</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>   llvm::BasicBlock *ContBlock = CGF.createBasicBlock(<span class="stringliteral">"cond.end"</span>);</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span> </div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>   <span class="comment">// Bind the common expression if necessary.</span></div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1OpaqueValueMapping.html" title="An RAII object to set (and then clear) a mapping for an OpaqueValueExpr.">CodeGenFunction::OpaqueValueMapping</a> binding(CGF, E);</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span> </div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">CodeGenFunction::ConditionalEvaluation</a> eval(CGF);</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>   CGF.EmitBranchOnBoolExpr(E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068">getCond</a>(), LHSBlock, RHSBlock);</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>   <span class="comment">// Save whether the destination's lifetime is externally managed.</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   <span class="keywordtype">bool</span> isExternallyDestructed = Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a78962e2d67425fe7b466e6a3666808e1">isExternallyDestructed</a>();</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span> </div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>   eval.begin(CGF);</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   CGF.EmitBlock(LHSBlock);</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>   Visit(E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8">getTrueExpr</a>());</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>   eval.end(CGF);</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>   assert(CGF.HaveInsertPoint() && <span class="stringliteral">"expression evaluation ended with no IP!"</span>);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>   CGF.Builder.CreateBr(ContBlock);</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span> </div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>   <span class="comment">// If the result of an agg expression is unused, then the emission</span></div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>   <span class="comment">// of the LHS might need to create a destination slot.  That's fine</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>   <span class="comment">// with us, and we can safely emit the RHS into the same slot, but</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>   <span class="comment">// we shouldn't claim that it's already being destructed.</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>   Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a57c314a91cd01bceabd0cb2045d87518">setExternallyDestructed</a>(isExternallyDestructed);</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span> </div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>   eval.begin(CGF);</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   CGF.EmitBlock(RHSBlock);</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>   Visit(E-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1">getFalseExpr</a>());</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>   eval.end(CGF);</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span> </div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>   CGF.EmitBlock(ContBlock);</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span> }</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span> </div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span> <span class="keywordtype">void</span> AggExprEmitter::VisitChooseExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> *CE) {</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>   Visit(CE-><a class="code" href="classclang_1_1ChooseExpr.html#a7fe9638c5238cf46b7038ef3fe8ee4d5">getChosenSubExpr</a>());</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span> }</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> </div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span> <span class="keywordtype">void</span> AggExprEmitter::VisitVAArgExpr(<a class="code" href="classclang_1_1VAArgExpr.html" title="VAArgExpr, used for the builtin function __builtin_va_arg.">VAArgExpr</a> *VE) {</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArgValue = CGF.EmitVAListRef(VE-><a class="code" href="classclang_1_1VAArgExpr.html#a8718a713d4c2cf595a0fde339a2fd9b6">getSubExpr</a>());</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArgPtr = CGF.EmitVAArg(ArgValue, VE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span> </div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>   <span class="keywordflow">if</span> (!ArgPtr) {</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     CGF.ErrorUnsupported(VE, <span class="stringliteral">"aggregate va_arg expression"</span>);</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   EmitFinalDestCopy(VE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), CGF.MakeAddrLValue(ArgPtr, VE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</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="keywordtype">void</span> AggExprEmitter::VisitCXXBindTemporaryExpr(<a class="code" href="classclang_1_1CXXBindTemporaryExpr.html" title="Represents binding an expression to a temporary.">CXXBindTemporaryExpr</a> *E) {</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="comment">// Ensure that we have a slot, but if we already do, remember</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="comment">// whether it was externally destructed.</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   <span class="keywordtype">bool</span> wasExternallyDestructed = Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a78962e2d67425fe7b466e6a3666808e1">isExternallyDestructed</a>();</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   EnsureDest(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span> </div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   <span class="comment">// We're going to push a destructor if there isn't already one.</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>   Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a57c314a91cd01bceabd0cb2045d87518">setExternallyDestructed</a>();</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span> </div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>   Visit(E-><a class="code" href="classclang_1_1CXXBindTemporaryExpr.html#aaf4a9a110306f2635542e15ac4a85d7e">getSubExpr</a>());</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> </div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>   <span class="comment">// Push that destructor we promised.</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keywordflow">if</span> (!wasExternallyDestructed)</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     CGF.EmitCXXTemporary(E-><a class="code" href="classclang_1_1CXXBindTemporaryExpr.html#adef4eac5211f775751b7178963aea42c">getTemporary</a>(), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>());</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span> }</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span> </div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span> AggExprEmitter::VisitCXXConstructExpr(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *E) {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   CGF.EmitCXXConstructExpr(E, Slot);</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> }</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> </div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span> AggExprEmitter::VisitLambdaExpr(<a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *E) {</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   CGF.EmitLambdaExpr(E, Slot);</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> }</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span> </div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> <span class="keywordtype">void</span> AggExprEmitter::VisitExprWithCleanups(<a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *E) {</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   CGF.enterFullExpression(E);</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</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...">CodeGenFunction::RunCleanupsScope</a> cleanups(CGF);</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   Visit(E-><a class="code" href="classclang_1_1ExprWithCleanups.html#aea629f8b6da8f66df2207e7efe9a07a0">getSubExpr</a>());</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span> }</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> <span class="keywordtype">void</span> AggExprEmitter::VisitCXXScalarValueInitExpr(<a class="code" href="classclang_1_1CXXScalarValueInitExpr.html">CXXScalarValueInitExpr</a> *E) {</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = EnsureSlot(T);</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), T));</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> }</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span> </div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span> <span class="keywordtype">void</span> AggExprEmitter::VisitImplicitValueInitExpr(<a class="code" href="classclang_1_1ImplicitValueInitExpr.html" title="Represents an implicitly-generated value initialization of an object of a given type.">ImplicitValueInitExpr</a> *E) {</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot = EnsureSlot(T);</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   EmitNullInitializationToLValue(CGF.MakeAddrLValue(Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), T));</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span> }</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span> <span class="comment"></span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span> <span class="comment">/// isSimpleZero - If emitting this value will obviously just cause a store of</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment">/// zero to memory, return true.  This can return false if uncertain, so it just</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span> <span class="comment">/// handles simple cases.</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno"><a class="code" href="CGExprAgg_8cpp.html#a8309624ed7b1ced0e0498be346f8b9b7">  987</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGExprAgg_8cpp.html#a8309624ed7b1ced0e0498be346f8b9b7">isSimpleZero</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span> </div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>   <span class="comment">// 0</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *IL = dyn_cast<IntegerLiteral>(E))</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <span class="keywordflow">return</span> IL->getValue() == 0;</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   <span class="comment">// +0.0</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *FL = dyn_cast<FloatingLiteral>(E))</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>     <span class="keywordflow">return</span> FL->getValue().isPosZero();</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>   <span class="comment">// int()</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>   <span class="keywordflow">if</span> ((isa<ImplicitValueInitExpr>(E) || isa<CXXScalarValueInitExpr>(E)) &&</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</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#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()))</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   <span class="comment">// (int*)0 - Null pointer expressions.</span></div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *ICE = dyn_cast<CastExpr>(E))</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="keywordflow">return</span> ICE->getCastKind() == <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca69507b9309c485f20be46a41f657630c">CK_NullToPointer</a>;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>   <span class="comment">// '\0'</span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CharacterLiteral.html">CharacterLiteral</a> *CL = dyn_cast<CharacterLiteral>(E))</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="keywordflow">return</span> CL->getValue() == 0;</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   </div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>   <span class="comment">// Otherwise, hard case: conservatively return false.</span></div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> }</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="keywordtype">void</span> </div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> AggExprEmitter::EmitInitializationToLValue(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV) {</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> type = LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>();</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   <span class="comment">// FIXME: Ignore result?</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>   <span class="comment">// FIXME: Are initializers affected by volatile?</span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>   <span class="keywordflow">if</span> (Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>() && <a class="code" href="CGExprAgg_8cpp.html#a8309624ed7b1ced0e0498be346f8b9b7">isSimpleZero</a>(E, CGF)) {</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>     <span class="comment">// Storing "i32 0" to a zero'd memory location is a noop.</span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<ImplicitValueInitExpr>(E) || isa<CXXScalarValueInitExpr>(E)) {</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>     <span class="keywordflow">return</span> EmitNullInitializationToLValue(LV);</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = CGF.EmitReferenceBindingToExpr(E);</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     <span class="keywordflow">return</span> CGF.EmitStoreThroughLValue(RV, LV);</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>   }</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>   </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   <span class="keywordflow">switch</span> (CGF.getEvaluationKind(type)) {</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>:</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     CGF.EmitComplexExprIntoLValue(E, LV, <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>:</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     CGF.EmitAggExpr(E, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LV,</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>                                                <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>                                                <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>,</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>                                                Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>()));</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="keywordflow">if</span> (LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>()) {</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>       CGF.EmitScalarInit(E, <span class="comment">/*D=*/</span>0, LV, <span class="comment">/*Captured=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>       CGF.EmitStoreThroughLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(CGF.EmitScalarExpr(E)), LV);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>     }</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>   }</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</span>);</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> }</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordtype">void</span> AggExprEmitter::EmitNullInitializationToLValue(<a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lv) {</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> type = lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>();</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>   <span class="comment">// If the destination slot is already zeroed out before the aggregate is</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>   <span class="comment">// copied into it, we don't have to emit any zeros here.</span></div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>   <span class="keywordflow">if</span> (Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>() && CGF.getTypes().isZeroInitializable(type))</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>   </div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   <span class="keywordflow">if</span> (CGF.hasScalarEvaluationKind(type)) {</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     <span class="comment">// For non-aggregates, we can store the appropriate null constant.</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *null = CGF.CGM.EmitNullConstant(type);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>     <span class="comment">// Note that the following is not equivalent to</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>     <span class="comment">// EmitStoreThroughBitfieldLValue for ARC types.</span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     <span class="keywordflow">if</span> (lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8901b8a21b2acf2f4cdd27513824426e">isBitField</a>()) {</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>       CGF.EmitStoreThroughBitfieldLValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(null), lv);</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>       assert(lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>());</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       CGF.EmitStoreOfScalar(null, lv, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     }</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>     <span class="comment">// There's a potential optimization opportunity in combining</span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>     <span class="comment">// memsets; that would be easy for arrays, but relatively</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>     <span class="comment">// difficult for structures with the current code.</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     CGF.EmitNullInitialization(lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>());</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   }</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="keywordtype">void</span> AggExprEmitter::VisitInitListExpr(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *E) {</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="preprocessor">#if 0</span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="preprocessor"></span>  <span class="comment">// FIXME: Assess perf here?  Figure out what cases are worth optimizing here</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="comment">// (Length of globals? Chunks of zeroed-out space?).</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="comment">// If we can, prefer a copy from a global; this is a lot less code for long</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   <span class="comment">// globals, and it's easier for the current optimizers to analyze.</span></div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="keywordflow">if</span> (llvm::Constant* C = CGF.CGM.EmitConstantExpr(E, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), &CGF)) {</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     llvm::GlobalVariable* GV =</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     <span class="keyword">new</span> llvm::GlobalVariable(CGF.CGM.getModule(), C->getType(), <span class="keyword">true</span>,</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>                              <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6a140eea3dcce11b617f72600f6644f4a3" title="Internal linkage, which indicates that the entity can be referred to from within the translation unit...">llvm::GlobalValue::InternalLinkage</a>, C, <span class="stringliteral">""</span>);</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     EmitFinalDestCopy(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), CGF.MakeAddrLValue(GV, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   }</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="preprocessor"></span>  <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1InitListExpr.html#a5deb0e3be271ac96bd9080cf51cd5c27">hadArrayRangeDesignator</a>())</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>     CGF.ErrorUnsupported(E, <span class="stringliteral">"GNU array range designator extension"</span>);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Dest = EnsureSlot(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> DestLV = CGF.MakeAddrLValue(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>                                      Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>());</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   <span class="comment">// Handle initialization of an array.</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1InitListExpr.html#a5b5af73a0bd066a4d484ad409e3ebefc">isStringLiteralInit</a>())</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>       <span class="keywordflow">return</span> Visit(E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0));</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType =</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>         CGF.getContext().getAsArrayType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> </div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>     llvm::PointerType *APType =</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       cast<llvm::PointerType>(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>()->getType());</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     llvm::ArrayType *AType =</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       cast<llvm::ArrayType>(APType->getElementType());</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>     EmitArrayInit(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), AType, elementType, E);</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   assert(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() && <span class="stringliteral">"Only support structs/unions here!"</span>);</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="comment">// Do struct initialization; this code just sets each individual member</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   <span class="comment">// to the approprate value.  This makes bitfield support automatic;</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="comment">// the disadvantage is that the generated code is more difficult for</span></div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="comment">// the optimizer, especially with bitfields.</span></div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <span class="keywordtype">unsigned</span> NumInitElements = E-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>();</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *record = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl();</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> </div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="comment">// Prepare a 'this' for CXXDefaultInitExprs.</span></div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1FieldConstructionScope.html">CodeGenFunction::FieldConstructionScope</a> FCS(CGF, Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>());</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <span class="keywordflow">if</span> (record-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>     <span class="comment">// Only initialize one field of a union. The field itself is</span></div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="comment">// specified by the initializer list.</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>()) {</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>       <span class="comment">// Empty union; we have nothing to do.</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> </div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> <span class="preprocessor"></span>      <span class="comment">// Make sure that it's really an empty and not a failure of</span></div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>       <span class="comment">// semantic analysis.</span></div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = record-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>                                    FieldEnd = record-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>            Field != FieldEnd; ++Field)</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>         assert(Field->isUnnamedBitfield() && <span class="stringliteral">"Only unnamed bitfields allowed"</span>);</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="preprocessor"></span>      <span class="keywordflow">return</span>;</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">// FIXME: volatility</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = E-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>();</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> FieldLoc = CGF.EmitLValueForFieldInitialization(DestLV, Field);</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>     <span class="keywordflow">if</span> (NumInitElements) {</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       <span class="comment">// Store the initializer into the field</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>       EmitInitializationToLValue(E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(0), FieldLoc);</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>       <span class="comment">// Default-initialize to null.</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>       EmitNullInitializationToLValue(FieldLoc);</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> </div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>   }</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>   <span class="comment">// We'll need to enter cleanup scopes in case any of the member</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>   <span class="comment">// initializers throw an exception.</span></div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<EHScopeStack::stable_iterator, 16></a> cleanups;</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>   llvm::Instruction *cleanupDominator = 0;</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>   <span class="comment">// Here we iterate over the fields; this makes it simpler to both</span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>   <span class="comment">// default-initialize fields and skip over unnamed fields.</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   <span class="keywordtype">unsigned</span> curInitIndex = 0;</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> field = record-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>                                fieldEnd = record-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>        field != fieldEnd; ++field) {</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>     <span class="comment">// We're done once we hit the flexible array member.</span></div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     <span class="keywordflow">if</span> (field->getType()->isIncompleteArrayType())</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <span class="comment">// Always skip anonymous bitfields.</span></div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     <span class="keywordflow">if</span> (field->isUnnamedBitfield())</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     <span class="comment">// We're done if we reach the end of the explicit initializers, we</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="comment">// have a zeroed object, and the rest of the fields are</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>     <span class="comment">// zero-initializable.</span></div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     <span class="keywordflow">if</span> (curInitIndex == NumInitElements && Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>() &&</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>         CGF.getTypes().isZeroInitializable(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()))</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     </div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> </div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.EmitLValueForFieldInitialization(DestLV, *field);</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>     <span class="comment">// We never generate write-barries for initialized fields.</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ad56f6bb7326ffc476a59349adf6910dc">setNonGC</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>     </div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>     <span class="keywordflow">if</span> (curInitIndex < NumInitElements) {</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>       <span class="comment">// Store the initializer into the field.</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>       EmitInitializationToLValue(E-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(curInitIndex++), LV);</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>       <span class="comment">// We're out of initalizers; default-initialize to null</span></div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>       EmitNullInitializationToLValue(LV);</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     }</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> </div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>     <span class="comment">// Push a destructor if necessary.</span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     <span class="comment">// FIXME: if we have an array of structures, all explicitly</span></div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>     <span class="comment">// initialized, we can end up pushing a linear number of cleanups.</span></div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     <span class="keywordtype">bool</span> pushedCleanup = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>           = field->getType().isDestructedType()) {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       assert(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>());</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       <span class="keywordflow">if</span> (CGF.needsEHCleanup(dtorKind)) {</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>         <span class="keywordflow">if</span> (!cleanupDominator)</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>           cleanupDominator = CGF.Builder.CreateUnreachable(); <span class="comment">// placeholder</span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> </div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>         CGF.pushDestroy(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), field->getType(),</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>                         CGF.getDestroyer(dtorKind), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>         cleanups.push_back(CGF.EHStack.stable_begin());</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>         pushedCleanup = <span class="keyword">true</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>     }</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>     </div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     <span class="comment">// If the GEP didn't get used because of a dead zero init or something</span></div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     <span class="comment">// else, clean it up for -O0 builds and general tidiness.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>     <span class="keywordflow">if</span> (!pushedCleanup && LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a8e2a971f64f67d31f84bc136c53c72c0">isSimple</a>()) </div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       <span class="keywordflow">if</span> (llvm::GetElementPtrInst *GEP =</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>             dyn_cast<llvm::GetElementPtrInst>(LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>()))</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>         <span class="keywordflow">if</span> (GEP->use_empty())</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>           GEP->eraseFromParent();</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   }</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> </div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   <span class="comment">// Deactivate all the partial cleanups in reverse order, which</span></div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>   <span class="comment">// generally means popping them.</span></div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = cleanups.size(); i != 0; --i)</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     CGF.DeactivateCleanupBlock(cleanups[i-1], cleanupDominator);</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="comment">// Destroy the placeholder if we made one.</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="keywordflow">if</span> (cleanupDominator)</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>     cleanupDominator->eraseFromParent();</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> </div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> <span class="comment">//                        Entry Points into this File</span></div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> <span class="comment"></span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="comment">/// GetNumNonZeroBytesInInit - Get an approximate count of the number of</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> <span class="comment">/// non-zero bytes that will be stored when outputting the initializer for the</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> <span class="comment">/// specified initializer expression.</span></div>
+<div class="line"><a name="l01243"></a><span class="lineno"><a class="code" href="CGExprAgg_8cpp.html#a04fddf254cd8c0283831c8230f64f834"> 1243</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="CGExprAgg_8cpp.html#a04fddf254cd8c0283831c8230f64f834">GetNumNonZeroBytesInInit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>   E = E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> </div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   <span class="comment">// 0 and 0.0 won't require any non-zero stores!</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>   <span class="keywordflow">if</span> (<a class="code" href="CGExprAgg_8cpp.html#a8309624ed7b1ced0e0498be346f8b9b7">isSimpleZero</a>(E, CGF)) <span class="keywordflow">return</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="l01248"></a><span class="lineno"> 1248</span> </div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <span class="comment">// If this is an initlist expr, sum up the size of sizes of the (present)</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <span class="comment">// elements.  If this is something weird, assume the whole thing is non-zero.</span></div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = dyn_cast<<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a>>(E);</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="keywordflow">if</span> (ILE == 0 || !CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(ILE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()))</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   </div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <span class="comment">// InitListExprs for structs have to be handled carefully.  If there are</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <span class="comment">// reference members, we need to consider the size of the reference, not the</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   <span class="comment">// referencee.  InitListExprs for unions and arrays can't have references.</span></div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>     <span class="keywordflow">if</span> (!RT->isUnionType()) {</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>       <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *SD = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">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="l01261"></a><span class="lineno"> 1261</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> NumNonZeroBytes = <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="l01262"></a><span class="lineno"> 1262</span>       </div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>       <span class="keywordtype">unsigned</span> ILEElement = 0;</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = SD-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(),</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>            FieldEnd = SD-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>(); Field != FieldEnd; ++Field) {</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>         <span class="comment">// We're done once we hit the flexible array member or run out of</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>         <span class="comment">// InitListExpr elements.</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>         <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#a9394ebc74a8c7ad58b9f15abafcbbde2">isIncompleteArrayType</a>() ||</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>             ILEElement == ILE-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>())</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>         <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1FieldDecl.html#a6e726e3d2fc5514bb6e0c213d11b232b" title="Determines whether this is an unnamed bitfield.">isUnnamedBitfield</a>())</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> </div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E = ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(ILEElement++);</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>         </div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>         <span class="comment">// Reference values are always non-null and have the width of a pointer.</span></div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>         <span class="keywordflow">if</span> (Field-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>           NumNonZeroBytes += 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>(</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>               CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a79ccbed497a604ca6d9dbfd9b8ac548f" title="Return the width of pointers on this target, for the specified address space.">getPointerWidth</a>(0));</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>           NumNonZeroBytes += <a class="code" href="CGExprAgg_8cpp.html#a04fddf254cd8c0283831c8230f64f834">GetNumNonZeroBytesInInit</a>(E, CGF);</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>       }</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="keywordflow">return</span> NumNonZeroBytes;</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     }</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   }</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   </div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>   </div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> NumNonZeroBytes = <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="l01290"></a><span class="lineno"> 1290</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ILE-><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>(); i != e; ++i)</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     NumNonZeroBytes += <a class="code" href="CGExprAgg_8cpp.html#a04fddf254cd8c0283831c8230f64f834">GetNumNonZeroBytesInInit</a>(ILE-><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(i), CGF);</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>   <span class="keywordflow">return</span> NumNonZeroBytes;</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> }</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> <span class="comment"></span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> <span class="comment">/// CheckAggExprForMemSetUse - If the initializer is large and has a lot of</span></div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <span class="comment">/// zeros in it, emit a memset and avoid storing the individual zeros.</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"><a class="code" href="CGExprAgg_8cpp.html#aeec108c7808159b22ae378e98ed2f0c4"> 1298</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprAgg_8cpp.html#aeec108c7808159b22ae378e98ed2f0c4">CheckAggExprForMemSetUse</a>(<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> &Slot, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E,</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>   <span class="comment">// If the slot is already known to be zeroed, nothing to do.  Don't mess with</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>   <span class="comment">// volatile stores.</span></div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>   <span class="keywordflow">if</span> (Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>() || Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#ac50a70d28cd94aebcc695f4d21ecf3e0">isVolatile</a>() || Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>() == 0) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> </div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>   <span class="comment">// C++ objects with a user-declared constructor don't need zero'ing.</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().CPlusPlus)</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>                        .<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())->getAs<RecordType>()) {</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = cast<CXXRecordDecl>(RT->getDecl());</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a4f05b1193093cd297caff86bfa349fd8" title="Determine whether this class has any user-declared constructors.">hasUserDeclaredConstructor</a>())</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     }</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>   <span class="comment">// If the type is 16-bytes or smaller, prefer individual stores over memset.</span></div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>   std::pair<CharUnits, CharUnits> <a class="code" href="structTypeInfo.html">TypeInfo</a> =</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abd8adaff3fe53124096c820470099ed1">getTypeInfoInChars</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   <span class="keywordflow">if</span> (TypeInfo.first <= <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(16))</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   <span class="comment">// Check to see if over 3/4 of the initializer are known to be zero.  If so,</span></div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>   <span class="comment">// we prefer to emit memset + individual stores for the rest.</span></div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> NumNonZeroBytes = <a class="code" href="CGExprAgg_8cpp.html#a04fddf254cd8c0283831c8230f64f834">GetNumNonZeroBytesInInit</a>(E, CGF);</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   <span class="keywordflow">if</span> (NumNonZeroBytes*4 > TypeInfo.first)</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>   </div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>   <span class="comment">// Okay, it seems like a good idea to use an initial memset, emit the call.</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>   llvm::Constant *SizeVal = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt64(TypeInfo.first.getQuantity());</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Align = TypeInfo.second;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> </div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Loc = Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>();</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>   </div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   Loc = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Loc, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemSet(Loc, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8(0), SizeVal, </div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>                            Align.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>   </div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>   <span class="comment">// Tell the AggExprEmitter that the slot is known zero.</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>   Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a582ed812ea9a453220a34f6a7074fbb6">setZeroed</a>();</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</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> </div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> <span class="comment"></span></div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> <span class="comment">/// EmitAggExpr - Emit the computation of the specified expression of aggregate</span></div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> <span class="comment">/// type.  The result is computed into DestPtr.  Note that if DestPtr is null,</span></div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <span class="comment">/// the value of the aggregate expression is not needed.  If VolatileDest is</span></div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="comment">/// true, DestPtr cannot be 0.</span></div>
+<div class="line"><a name="l01346"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5"> 1346</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">CodeGenFunction::EmitAggExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot) {</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   assert(E && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adb210db7ab6920236d4403eaca7d663b">hasAggregateEvaluationKind</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) &&</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>          <span class="stringliteral">"Invalid aggregate expression to emit"</span>);</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   assert((Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>() != 0 || Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>()) &&</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>          <span class="stringliteral">"slot has bits but no address"</span>);</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   <span class="comment">// Optimize the slot if possible.</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   <a class="code" href="CGExprAgg_8cpp.html#aeec108c7808159b22ae378e98ed2f0c4">CheckAggExprForMemSetUse</a>(Slot, E, *<span class="keyword">this</span>);</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>   AggExprEmitter(*<span class="keyword">this</span>, Slot).Visit(const_cast<Expr*>(E));</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> </div>
+<div class="line"><a name="l01358"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a77ac4a960c1c6a2e758738423648ce80"> 1358</a></span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a77ac4a960c1c6a2e758738423648ce80">CodeGenFunction::EmitAggExprToLValue</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adb210db7ab6920236d4403eaca7d663b">hasAggregateEvaluationKind</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) && <span class="stringliteral">"Invalid argument!"</span>);</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Temp = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(Temp, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(E, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LV, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a80826bad4d38de95d9c8614c4b1612a5">AggValueSlot::IsNotDestructed</a>,</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>                                          <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>                                          <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>));</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   <span class="keywordflow">return</span> LV;</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> }</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
+<div class="line"><a name="l01368"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a"> 1368</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">CodeGenFunction::EmitAggregateCopy</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr,</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>                                         <span class="keywordtype">bool</span> isVolatile,</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>                                         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> alignment,</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>                                         <span class="keywordtype">bool</span> isAssignment) {</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   assert(!Ty-><a class="code" href="classclang_1_1Type.html#a292ac10726adf5426212b5c6ee14d9bb">isAnyComplexType</a>() && <span class="stringliteral">"Shouldn't happen for complex"</span>);</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> </div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().CPlusPlus) {</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = Ty-><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="l01377"></a><span class="lineno"> 1377</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Record = cast<CXXRecordDecl>(RT->getDecl());</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>       assert((Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#ab8839e371c9c9d02ab43f0de669969a7" title="Determine whether this class has a trivial copy constructor (C++ [class.copy]p6, C++11 [class...">hasTrivialCopyConstructor</a>() || </div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>               Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a23982e32c70367ecf0a47d4fbb8cae63" title="Determine whether this class has a trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25)">hasTrivialCopyAssignment</a>() ||</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>               Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a07897d986b167418bc3debd8be7e37d4" title="Determine whether this class has a trivial move constructor (C++11 [class.copy]p12)">hasTrivialMoveConstructor</a>() ||</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>               Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a33442e47a5c45784a830b49ad54cee83" title="Determine whether this class has a trivial move assignment operator (C++11 [class.copy]p25)">hasTrivialMoveAssignment</a>()) &&</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>              <span class="stringliteral">"Trying to aggregate-copy a type without a trivial copy/move "</span></div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>              <span class="stringliteral">"constructor or assignment operator"</span>);</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>       <span class="comment">// Ignore empty classes in C++.</span></div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>       <span class="keywordflow">if</span> (Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a2c1511d7b34b98b0f9763a3d2a73d557" title="Determine whether this is an empty class in the sense of (C++11 [meta.unary.prop]).">isEmpty</a>())</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>     }</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   }</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   </div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>   <span class="comment">// Aggregate assignment turns into llvm.memcpy.  This is almost valid per</span></div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>   <span class="comment">// C99 6.5.16.1p3, which states "If the value being stored in an object is</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>   <span class="comment">// read from another object that overlaps in anyway the storage of the first</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>   <span class="comment">// object, then the overlap shall be exact and the two objects shall have</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>   <span class="comment">// qualified or unqualified versions of a compatible type."</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>   <span class="comment">// memcpy is not defined if the source and destination pointers are exactly</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   <span class="comment">// equal, but other compilers do this optimization, and almost every memcpy</span></div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>   <span class="comment">// implementation handles this case safely.  If there is a libc that does not</span></div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>   <span class="comment">// safely handle this, we can add a target hook.</span></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>   <span class="comment">// Get data size and alignment info for this aggregate. If this is an</span></div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>   <span class="comment">// assignment don't copy the tail padding. Otherwise copying it is fine.</span></div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>   std::pair<CharUnits, CharUnits> <a class="code" href="structTypeInfo.html">TypeInfo</a>;</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>   <span class="keywordflow">if</span> (isAssignment)</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>     TypeInfo = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a57873531c896d6b5c74e781fa34e6a71">getTypeInfoDataSizeInChars</a>(Ty);</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     TypeInfo = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abd8adaff3fe53124096c820470099ed1">getTypeInfoInChars</a>(Ty);</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <span class="keywordflow">if</span> (alignment.<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="l01410"></a><span class="lineno"> 1410</span>     alignment = TypeInfo.second;</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> </div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>   <span class="comment">// FIXME: Handle variable sized types.</span></div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> </div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>   <span class="comment">// FIXME: If we have a volatile struct, the optimizer can remove what might</span></div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>   <span class="comment">// appear to be `extra' memory ops:</span></div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>   <span class="comment">// volatile struct { int i; } a, b;</span></div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>   <span class="comment">// int main() {</span></div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>   <span class="comment">//   a = b;</span></div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   <span class="comment">//   a = b;</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="comment">// }</span></div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>   <span class="comment">// we need to use a different call here.  We use isVolatile to indicate when</span></div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>   <span class="comment">// either the source or the destination is volatile.</span></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>   llvm::PointerType *DPT = cast<llvm::PointerType>(DestPtr->getType());</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   llvm::Type *DBP =</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     llvm::Type::getInt8PtrTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), DPT->getAddressSpace());</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   DestPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(DestPtr, DBP);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> </div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   llvm::PointerType *SPT = cast<llvm::PointerType>(SrcPtr->getType());</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>   llvm::Type *SBP =</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>     llvm::Type::getInt8PtrTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), SPT->getAddressSpace());</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, SBP);</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   <span class="comment">// Don't do any of the memmove_collectable tests if GC isn't set.</span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</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>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>) {</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>     <span class="comment">// fall through</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RecordTy = Ty-><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="l01441"></a><span class="lineno"> 1441</span>     <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *Record = RecordTy-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>();</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>     <span class="keywordflow">if</span> (Record-><a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>()) {</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> size = TypeInfo.first;</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</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="l01445"></a><span class="lineno"> 1445</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SizeVal = llvm::ConstantInt::get(SizeTy, 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="l01446"></a><span class="lineno"> 1446</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7aeb2a65629c8594093f25ef67bc5f47">EmitGCMemmoveCollectable</a>(*<span class="keyword">this</span>, DestPtr, SrcPtr, </div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>                                                     SizeVal);</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>     }</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Ty-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>()) {</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> BaseType = <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>(Ty);</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RecordTy = BaseType-><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="l01453"></a><span class="lineno"> 1453</span>       <span class="keywordflow">if</span> (RecordTy-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()-><a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>()) {</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> size = TypeInfo.first;</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</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="l01456"></a><span class="lineno"> 1456</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SizeVal = </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>           llvm::ConstantInt::get(SizeTy, 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="l01458"></a><span class="lineno"> 1458</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7aeb2a65629c8594093f25ef67bc5f47">EmitGCMemmoveCollectable</a>(*<span class="keyword">this</span>, DestPtr, SrcPtr, </div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>                                                       SizeVal);</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>       }</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>     }</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   }</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <span class="comment">// Determine the metadata to describe the position of any padding in this</span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>   <span class="comment">// memcpy, as well as the TBAA tags for the members of the struct, in case</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   <span class="comment">// the optimizer wishes to expand it in to scalar memory operations.</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>   llvm::MDNode *TBAAStructTag = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0eea8fb6e6dfc6ff935233f8ed0b0ad2">getTBAAStructInfo</a>(Ty);</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   </div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(DestPtr, SrcPtr,</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>                        llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>, </div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>                                               TypeInfo.first.getQuantity()),</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>                        alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(), isVolatile,</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>                        <span class="comment">/*TBAATag=*/</span>0, TBAAStructTag);</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:24 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/CGExprAgg_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprAgg_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,688 @@
+<!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: CGExprAgg.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">CGExprAgg.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprAgg_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/CGExprAgg.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGExprAgg.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGExprAgg.cpp CodeGenFunction.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 CGDebugInfo.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</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="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</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="l00099"></a><span class="lineno">   99</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="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.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/StmtNodes.inc \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CGValue.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h EHScopeStack.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 \
+ CGCall.h ABIInfo.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 CGObjCRuntime.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/StmtVisitor.h \</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtOpenMP.h \</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.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.def \</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.h \</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen</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> CodeGenFunction.h:</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> CGBuilder.h:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.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/Support/Compiler.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/Config/llvm-config.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/Support/MathExtras.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/Support/SwapByteOrder.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/DataTypes.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/type_traits.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/ADT/StringRef.h:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> /home/tstellar/llvm/include/llvm/ADT/Twine.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/ErrorHandling.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/IR/BasicBlock.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/ADT/ilist.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/IR/Instruction.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/ilist_node.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/IR/User.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/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.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/IR/Use.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/ADT/PointerIntPair.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/Support/PointerLikeTypeTraits.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/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> /home/tstellar/llvm/include/llvm/Support/Casting.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-c/Core.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/Support/DebugLoc.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/IR/Instruction.def:</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/IR/SymbolTableListTraits.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/IR/DataLayout.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/ADT/DenseMap.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/ADT/DenseMapInfo.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/DerivedTypes.h:</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> /home/tstellar/llvm/include/llvm/IR/Type.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/ADT/APFloat.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/APInt.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/Pass.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/PassSupport.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/Pass.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/InitializePasses.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/PassRegistry.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/Support/Atomic.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/Support/Valgrind.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/PassAnalysisSupport.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/IR/Instructions.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/IR/Attributes.h:</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.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/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="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/IR/InstrTypes.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/OperandTraits.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/LLVMContext.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/IR/Operator.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/Constants.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/Constant.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/Support/GetElementPtrTypeIterator.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/Support/ConstantFolder.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/Support/ValueHandle.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> CGDebugInfo.h:</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.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/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.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/ADT/APSInt.h:</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> </div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.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/AttrIterator.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/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/Decl.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/DeclBase.h:</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> </div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.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/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</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/SmallString.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/include/llvm/ADT/StringMap.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/Basic/PartialDiagnostic.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/Basic/Diagnostic.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/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.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/DiagnosticCommonKinds.inc:</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/DiagnosticOptions.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/DiagnosticOptions.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/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.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/STLExtras.h:</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/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="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/Specifiers.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/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> </div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> </div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.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#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</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/<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="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/ADT/Optional.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/TypeNodes.def:</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</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/include/llvm/Support/raw_ostream.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/include/llvm/Support/FileSystem.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/include/llvm/ADT/OwningPtr.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/include/llvm/Support/TimeValue.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/include/llvm/Support/system_error.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/AST/DeclAccessPair.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/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.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/Stmt.h:</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/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.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/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.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/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.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/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</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/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.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/Basic/CharInfo.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/Basic/TypeTraits.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/Basic/Builtins.def:</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/Frontend/CodeGenOptions.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/Frontend/CodeGenOptions.def:</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/include/llvm/DIBuilder.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/include/llvm/DebugInfo.h:</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/include/llvm/ADT/SmallPtrSet.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/include/llvm/IR/Metadata.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/include/llvm/Support/Dwarf.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> CGValue.h:</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/ASTContext.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/AST/ASTTypeTraits.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/AST/ASTFwd.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/AST/TypeLoc.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/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</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/AST/CanonicalType.h:</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/AST/CommentCommandTraits.h:</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/CommentOptions.h:</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/CommentCommandList.inc:</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/AST/PrettyPrinter.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/LangOptions.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/ObjCRuntime.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/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.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/ADT/Triple.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/Sanitizers.def:</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/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</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/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.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/include/llvm/ADT/DenseSet.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/include/llvm/Support/MemoryBuffer.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/Basic/AddressSpaces.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/include/llvm/ADT/TinyPtrVector.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> EHScopeStack.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> CodeGenModule.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> CGVTables.h:</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/AST/BaseSubobject.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/AST/GlobalDecl.h:</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/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.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/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.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/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.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/DeclObjC.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/<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="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/Basic/ABI.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/VTableBuilder.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/CXXInheritance.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/TypeOrdering.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/include/llvm/ADT/MapVector.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/include/llvm/ADT/SmallSet.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/RecordLayout.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/include/llvm/ADT/SetVector.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/include/llvm/IR/GlobalVariable.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/include/llvm/IR/GlobalValue.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> CodeGenTypes.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> CGCall.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> ABIInfo.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/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.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/include/llvm/IR/Module.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/IR/Function.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/Argument.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/GlobalAlias.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.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/Basic/AttrKinds.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/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</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/ADT/StringSwitch.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/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</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/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.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/Basic/Module.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/include/llvm/Transforms/Utils/SpecialCaseList.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/AST/ExprObjC.h:</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/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.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/Basic/TargetCXXABI.h:</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/Basic/TargetOptions.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/include/llvm/Support/Debug.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> CGObjCRuntime.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/DeclTemplate.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/AST/StmtVisitor.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/AST/StmtCXX.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/AST/StmtObjC.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/tools/clang/lib/CodeGen/../../include/clang/AST/StmtOpenMP.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenMPKinds.def:</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/include/llvm/IR/Intrinsics.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/include/llvm/IR/Intrinsics.gen:</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:24 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/CGExprCXX_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1954 @@
+<!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: CGExprCXX.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">CGExprCXX.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprCXX_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">//===--- CGExprCXX.cpp - Emit LLVM Code for C++ expressions ---------------===//</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 code generation of C++ expressions</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="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGCUDARuntime_8h.html">CGCUDARuntime.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGCXXABI_8h.html">CGCXXABI.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CGDebugInfo_8h.html">CGDebugInfo.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CGObjCRuntime_8h.html">CGObjCRuntime.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/Support/CallSite.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">   27</a></span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">CodeGenFunction::EmitCXXMemberCall</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="l00028"></a><span class="lineno">   28</span>                                           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> CallLoc,</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee,</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>                                           <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue,</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This,</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>                                           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ImplicitParam,</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>                                           <a class="code" href="classclang_1_1QualType.html">QualType</a> ImplicitParamTy,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                                           <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgBeg,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>                                           <a class="code" href="classclang_1_1ConstExprIterator.html">CallExpr::const_arg_iterator</a> ArgEnd) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   assert(MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>() &&</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>          <span class="stringliteral">"Trying to emit a member call expr on a static method!"</span>);</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// C++11 [class.mfct.non-static]p2:</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment">//   If a non-static member function of a class X is called for an object that</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="comment">//   is not of type X, or of a type derived from X, the behavior is undefined.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abcdc546762ac7c5e06fc043cb509106a" title="Emit a check that V is the address of storage of the appropriate size and alignment for an object of ...">EmitTypeCheck</a>(isa<CXXConstructorDecl>(MD) ? <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6a864c16feda667eb2680f10095c359c59" title="Checking the 'this' pointer for a constructor call.">TCK_ConstructorCall</a></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>                                             : <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6ab20998f64be59fdd97dce6447d594ab9">TCK_MemberCall</a>,</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>                 CallLoc, This, <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>(MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()));</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="comment">// Push the this ptr.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   Args.<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>(This), MD-><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="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="comment">// If there is an implicit parameter (e.g. VTT), emit it.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">if</span> (ImplicitParam) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     Args.<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>(ImplicitParam), ImplicitParamTy);</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="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = MD-><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="l00057"></a><span class="lineno">   57</span>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#a85298aad637d789fba9c5f6e4719ee4a">RequiredArgs::forPrototypePlus</a>(FPT, Args.size());</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// And the rest of the call args.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   EmitCallArgs(Args, FPT, ArgBeg, ArgEnd);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">return</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, required),</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>                   Callee, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, MD);</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> </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a2355de92c44f021f07809c32ed376577">   66</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="CGExprCXX_8cpp.html#a2355de92c44f021f07809c32ed376577">getCXXRecord</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PTy = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>())</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     T = PTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *Ty = T-><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="l00071"></a><span class="lineno">   71</span>   <span class="keywordflow">return</span> cast<CXXRecordDecl>(Ty-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> }</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">// Note: This function also emit constructor calls to support a MSVC</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">// extensions allowing explicit constructor function call.</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a50221316407907ed3eae500ca54cae33">   76</a></span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a50221316407907ed3eae500ca54cae33">CodeGenFunction::EmitCXXMemberCallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a> *CE,</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue) {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *callee = CE-><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keywordflow">if</span> (isa<BinaryOperator>(callee))</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ace920f2ecd33b4961312cae5f321e888">EmitCXXMemberPointerCallExpr</a>(CE, ReturnValue);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *ME = cast<MemberExpr>(callee);</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = cast<CXXMethodDecl>(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="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">if</span> (MD->isStatic()) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="comment">// The method is static, emit it as we would a regular call.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</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#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(MD);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerType(MD->getType()), Callee,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                     CE-><a class="code" href="classclang_1_1CallExpr.html#a4852265598bd0c47f24844f91d0e700c">getLocStart</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>(),</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>                     CE-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>());</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   }</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="comment">// Compute the object pointer.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <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> = ME-><a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">bool</span> CanUseVirtualCall = MD->isVirtual() && !ME-><a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47" title="Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...">hasQualifier</a>();</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <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> *DevirtualizedMethod = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">if</span> (CanUseVirtualCall && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a383e8c56f76a6fa5d2c665538b148826">CanDevirtualizeMemberFunctionCall</a>(Base, MD)) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BestDynamicDecl = 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="l00101"></a><span class="lineno">  101</span>     DevirtualizedMethod = MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#acca243ff57c9f2b2a2ee0c7cd867615b" title="Find the method in RD that corresponds to this one.">getCorrespondingMethodInClass</a>(BestDynamicDecl);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     assert(DevirtualizedMethod);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DevirtualizedClass = DevirtualizedMethod-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>();</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Inner = Base-><a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">ignoreParenBaseCasts</a>();</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">if</span> (<a class="code" href="CGExprCXX_8cpp.html#a2355de92c44f021f07809c32ed376577">getCXXRecord</a>(Inner) == DevirtualizedClass)</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       <span class="comment">// If the class of the Inner expression is where the dynamic method</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>       <span class="comment">// is defined, build the this pointer from it.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>       Base = Inner;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="CGExprCXX_8cpp.html#a2355de92c44f021f07809c32ed376577">getCXXRecord</a>(Base) != DevirtualizedClass) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>       <span class="comment">// If the method is defined in a class that is not the best dynamic</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       <span class="comment">// one or the one of the full expression, we would have to build</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>       <span class="comment">// a derived-to-base cast to compute the correct this pointer, but</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>       <span class="comment">// we don't have support for that yet, so do a virtual call.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       DevirtualizedMethod = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     }</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="comment">// If the return types are not the same, this might be a case where more</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="comment">// code needs to run to compensate for it. For example, the derived</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="comment">// method might return a type that inherits form from the return</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="comment">// type of MD and has a prefix.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <span class="comment">// For now we just avoid devirtualizing these covariant cases.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">if</span> (DevirtualizedMethod &&</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         DevirtualizedMethod-><a class="code" href="classclang_1_1FunctionDecl.html#a2a4fd00240b9b7552c4d2fbc90c71528">getResultType</a>().<a class="code" href="classclang_1_1QualType.html#abae06108b779ed32a4dc18fe8802fd6e">getCanonicalType</a>() !=</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>         MD->getResultType().getCanonicalType())</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       DevirtualizedMethod = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</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> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span> (ME-><a class="code" href="classclang_1_1MemberExpr.html#a22d0072d3f57ed584f03e37d9dd0dc34">isArrow</a>())</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     This = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(Base);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     This = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(Base).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">if</span> (MD->isTrivial()) {</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <span class="keywordflow">if</span> (isa<CXXDestructorDecl>(MD)) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(0);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     <span class="keywordflow">if</span> (isa<CXXConstructorDecl>(MD) && </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>         cast<CXXConstructorDecl>(MD)->isDefaultConstructor())</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(0);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">if</span> (MD->isCopyAssignmentOperator() || MD->isMoveAssignmentOperator()) {</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       <span class="comment">// We don't like to generate the trivial copy/move assignment operator</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       <span class="comment">// when it isn't necessary; just produce the proper effect here.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHS = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(*CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>()).getAddress();</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a767f80cb15817dd5e0bfdab31d3515e1">EmitAggregateAssign</a>(This, RHS, CE-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(This);</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>     </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span> (isa<CXXConstructorDecl>(MD) && </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         cast<CXXConstructorDecl>(MD)->isCopyOrMoveConstructor()) {</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       <span class="comment">// Trivial move and copy ctor are the same.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RHS = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(*CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>()).getAddress();</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaeba75ea2575ac1e0b62d87db08f4e79">EmitSynthesizedCXXCopyCtorCall</a>(cast<CXXConstructorDecl>(MD), This, RHS,</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                                      CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>(), CE-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>());</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(This);</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     }</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     llvm_unreachable(<span class="stringliteral">"unknown trivial member function"</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> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="comment">// Compute the function type we're calling.</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</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> *CalleeDecl = DevirtualizedMethod ? DevirtualizedMethod : MD;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *FInfo = 0;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">if</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 = dyn_cast<CXXDestructorDecl>(CalleeDecl))</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     FInfo = &<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#a50b6ae880f9bcf0b6b8c13cba50860d7">arrangeCXXDestructor</a>(Dtor,</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>                                                  <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>);</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</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 = dyn_cast<CXXConstructorDecl>(CalleeDecl))</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     FInfo = &<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,</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>                                                              <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>);</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     FInfo = &<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>(CalleeDecl);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   llvm::FunctionType *Ty = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(*FInfo);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">// C++ [class.virtual]p12:</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="comment">//   Explicit qualification with the scope operator (5.1) suppresses the</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <span class="comment">//   virtual call mechanism.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>   <span class="comment">// We also don't emit a virtual call if the base expression has a record type</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="comment">// because then we know what the type is.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <span class="keywordtype">bool</span> UseVirtualCall = CanUseVirtualCall && !DevirtualizedMethod;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordflow">if</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 = dyn_cast<CXXDestructorDecl>(MD)) {</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     assert(CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>() == CE-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>() &&</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>            <span class="stringliteral">"Destructor shouldn't have explicit parameters"</span>);</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     assert(ReturnValue.<a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html#a9128d2eb4842b48578d34071997756f0">isNull</a>() && <span class="stringliteral">"Destructor shouldn't have return value"</span>);</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>     <span class="keywordflow">if</span> (UseVirtualCall) {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</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#aba0a3098ad85071da805ba38a3ff424d" title="Emit the ABI-specific virtual destructor call.">EmitVirtualDestructorCall</a>(*<span class="keyword">this</span>, Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>,</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>                                                 CE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), This);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</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="l00191"></a><span class="lineno">  191</span>           MD->isVirtual() &&</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>           ME-><a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47" title="Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...">hasQualifier</a>())</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>         Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afa1ba31b8ae6dbe05f7264d63dbed92f">BuildAppleKextVirtualCall</a>(MD, ME-><a class="code" href="classclang_1_1MemberExpr.html#a13671e2075971d5f20a160e15cdd13ab" title="If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...">getQualifier</a>(), Ty);</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!DevirtualizedMethod)</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</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>(Dtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>, FInfo, Ty);</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DDtor =</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>           cast<CXXDestructorDecl>(DevirtualizedMethod);</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</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#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(DDtor, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>), Ty);</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>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(MD, CE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), Callee, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, This,</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>                         <span class="comment">/*ImplicitParam=*/</span>0, <a class="code" href="classclang_1_1QualType.html">QualType</a>(), 0, 0);</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     }</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(0);</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="keywordflow">if</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 = dyn_cast<CXXConstructorDecl>(MD)) {</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</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#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(Ctor, <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>), Ty);</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (UseVirtualCall) {</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</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#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, Ty);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</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="l00213"></a><span class="lineno">  213</span>         MD->isVirtual() &&</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         ME-><a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47" title="Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...">hasQualifier</a>())</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afa1ba31b8ae6dbe05f7264d63dbed92f">BuildAppleKextVirtualCall</a>(MD, ME-><a class="code" href="classclang_1_1MemberExpr.html#a13671e2075971d5f20a160e15cdd13ab" title="If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...">getQualifier</a>(), Ty);</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!DevirtualizedMethod)</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</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#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(MD, Ty);</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</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#ac7a1043756ac6082fa8e9540afa830a9">GetAddrOfFunction</a>(DevirtualizedMethod, Ty);</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>   }</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">if</span> (MD->isVirtual())</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</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>, MD, This);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(MD, CE-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), Callee, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, This,</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>                            <span class="comment">/*ImplicitParam=*/</span>0, <a class="code" href="classclang_1_1QualType.html">QualType</a>(),</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>                            CE-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>(), CE-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>());</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> }</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a></div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ace920f2ecd33b4961312cae5f321e888">  232</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ace920f2ecd33b4961312cae5f321e888">CodeGenFunction::EmitCXXMemberPointerCallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a> *E,</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue) {</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="keyword">const</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 =</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       cast<BinaryOperator>(E-><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>());</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *BaseExpr = BO-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>();</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *MemFnExpr = BO-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>();</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   </div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT = </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     MemFnExpr-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a>>();</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT = </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a3f0b2f25c4ad91d2e8bd2752d9552199">getPointeeType</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="l00244"></a><span class="lineno">  244</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     cast<CXXRecordDecl>(MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a74f40efdd2bcca293720459931fba7ea">getClass</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="comment">// Get the member function pointer.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *MemFnPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(MemFnExpr);</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="comment">// Emit the 'this' pointer.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This;</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>   <span class="keywordflow">if</span> (BO-><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>)</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>     This = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(BaseExpr);</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>   <span class="keywordflow">else</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     This = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(BaseExpr).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abcdc546762ac7c5e06fc043cb509106a" title="Emit a check that V is the address of storage of the appropriate size and alignment for an object of ...">EmitTypeCheck</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a506527ab7d0b728228596e9a81c811c6ab20998f64be59fdd97dce6447d594ab9">TCK_MemberCall</a>, E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), This,</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>                 <a class="code" href="classclang_1_1QualType.html">QualType</a>(MPT-><a class="code" href="classclang_1_1MemberPointerType.html#a74f40efdd2bcca293720459931fba7ea">getClass</a>(), 0));</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">// Ask the ABI to load the callee.  Note that This is modified.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee =</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</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#aeea55eec5afa93e69e61750b6b26fbe2">EmitLoadOfMemberFunctionPointer</a>(*<span class="keyword">this</span>, This, MemFnPtr, MPT);</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>   <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="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ThisType = </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <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>().getTagDeclType(RD));</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>   <span class="comment">// Push the this ptr.</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   Args.<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>(This), ThisType);</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>   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html">RequiredArgs</a> required = <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#a85298aad637d789fba9c5f6e4719ee4a">RequiredArgs::forPrototypePlus</a>(FPT, 1);</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>   <span class="comment">// And the rest of the call args</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   EmitCallArgs(Args, FPT, E-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>(), E-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>());</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">return</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, required),</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>                   Callee, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> }</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a></div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afc4766f77c0a6f6ced565b4700cbcce4">  282</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afc4766f77c0a6f6ced565b4700cbcce4">CodeGenFunction::EmitCXXOperatorMemberCallExpr</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="l00283"></a><span class="lineno">  283</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="l00284"></a><span class="lineno">  284</span>                                                <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue) {</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   assert(MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a855a9f0b238457d3131b854bdeae7bce">isInstance</a>() &&</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>          <span class="stringliteral">"Trying to emit a member call expr on a static method!"</span>);</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(E-><a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(0));</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *This = LV.getAddress();</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="keywordflow">if</span> ((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>() || 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="l00291"></a><span class="lineno">  291</span>       MD-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</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_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(1)).getAddress();</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a767f80cb15817dd5e0bfdab31d3515e1">EmitAggregateAssign</a>(This, Src, Ty);</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(This);</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> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Callee = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7d130f8d4fd24eba65279eae83adecd2">EmitCXXOperatorMemberCallee</a>(E, MD, This);</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2fe85c885aa79e232427f3aa6973f948">EmitCXXMemberCall</a>(MD, E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(), Callee, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, This,</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>                            <span class="comment">/*ImplicitParam=*/</span>0, <a class="code" href="classclang_1_1QualType.html">QualType</a>(),</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>                            E-><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>() + 1, E-><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>());</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> </div>
+<div class="line"><a name="l00304"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa229091cd1f8b3c8e8dc46adfd6d835e">  304</a></span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa229091cd1f8b3c8e8dc46adfd6d835e">CodeGenFunction::EmitCUDAKernelCallExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CUDAKernelCallExpr.html" title="Represents a call to a CUDA kernel function.">CUDAKernelCallExpr</a> *E,</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>                                                <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnValue) {</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</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#ab135c68b1102806613601c8628b75f15" title="getCUDARuntime() - Return a reference to the configured CUDA runtime.">getCUDARuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCUDARuntime.html#a955d40627fc9771e1d7cdae642c1052c">EmitCUDAKernelCallExpr</a>(*<span class="keyword">this</span>, E, ReturnValue);</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> }</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a91814cc5a71d8210f409107af964e475">  309</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#a91814cc5a71d8210f409107af964e475">EmitNullBaseClassInitialization</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr,</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1Base.html">Base</a>) {</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordflow">if</span> (Base-><a class="code" href="classclang_1_1CXXRecordDecl.html#a2c1511d7b34b98b0f9763a3d2a73d557" title="Determine whether this is an empty class in the sense of (C++11 [meta.unary.prop]).">isEmpty</a>())</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="keywordflow">return</span>;</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>   DestPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa21b88eb12dee547d5a0919e7ff6b5e2" title="Emit a cast to void* in the appropriate address space.">EmitCastToVoidPtr</a>(DestPtr);</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &Layout = CGF.<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>(Base);</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Size = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#aa1bd731febbd3352b47620e7e363b5f4">getNonVirtualSize</a>();</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Align = Layout.<a class="code" href="classclang_1_1ASTRecordLayout.html#ad9896934d81f332620f7d2048c345bae">getNonVirtualAlign</a>();</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SizeVal = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#afc1a42dd19d9f4d3fdb1e9d15cf26810" title="getSize - Emit the given number of characters as a value of type size_t.">getSize</a>(Size);</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="comment">// If the type contains a pointer to data member we can't memset it to zero.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="comment">// Instead, create a null constant and copy it to the destination.</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="comment">// TODO: there are other patterns besides zero that we can usefully memset,</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="comment">// like -1, which happens to be the pattern used by member-pointers.</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="comment">// TODO: isZeroInitializable can be over-conservative in the case where a</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="comment">// virtual base contains a member pointer.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</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#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(Base)) {</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     llvm::Constant *NullConstant = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1bcb6b9baec3ff9bdc5ac0e381f544bd">EmitNullConstantForBase</a>(Base);</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     llvm::GlobalVariable *NullVariable = </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <span class="keyword">new</span> llvm::GlobalVariable(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>(), NullConstant->getType(),</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>                                <span class="comment">/*isConstant=*/</span><span class="keyword">true</span>, </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>                                llvm::GlobalVariable::PrivateLinkage,</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>                                NullConstant, Twine());</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     NullVariable->setAlignment(Align.<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="l00338"></a><span class="lineno">  338</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa21b88eb12dee547d5a0919e7ff6b5e2" title="Emit a cast to void* in the appropriate address space.">EmitCastToVoidPtr</a>(NullVariable);</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     <span class="comment">// Get and call the appropriate llvm.memcpy overload.</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(DestPtr, SrcPtr, SizeVal, Align.<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="l00342"></a><span class="lineno">  342</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   } </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   </div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="comment">// Otherwise, just memset the whole thing to zero.  This is legal</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="comment">// because in LLVM, all default initializers (other than the ones we just</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="comment">// handled above) are guaranteed to have a bit pattern of all zeros.</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemSet(DestPtr, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8(0), SizeVal,</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>                            Align.<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="l00350"></a><span class="lineno">  350</span> }</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0a37f4ebe1d91b4b093ca0221ce0aecf">  353</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0a37f4ebe1d91b4b093ca0221ce0aecf">CodeGenFunction::EmitCXXConstructExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *E,</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Dest) {</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   assert(!Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abd0f8b9466eed06c860ebb8a02d33990">isIgnored</a>() && <span class="stringliteral">"Must have a destination!"</span>);</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = E-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>();</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">// If we require zero initialization before (or instead of) calling the</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="comment">// constructor, as can be the case with a non-user-provided default</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   <span class="comment">// constructor, emit the zero initialization now, unless destination is</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="comment">// already zeroed.</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a3727360c5e70d957b8f335c3d828eb87" title="Whether this construction first requires zero-initialization before the initializer is called...">requiresZeroInitialization</a>() && !Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a45fcc662c47f6f4804f03ae61c534f3a">isZeroed</a>()) {</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a16d6423dec3a69e3b652f21e46441c02" title="Determine whether this constructor is actually constructing a base class (rather than a complete obje...">getConstructionKind</a>()) {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a22f1a5d2b5baa0b0726243ef8ffd27ee">CXXConstructExpr::CK_Delegating</a>:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a3733e434dafb17cdbee82c01462a4da8">CXXConstructExpr::CK_Complete</a>:</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7344a3814e9742710d31ef902d639de2">EmitNullInitialization</a>(Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a0b85c1db0f2c292fce108d89f2f16f05">CXXConstructExpr::CK_VirtualBase</a>:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a4018db20cea3318e42f7eda9798449fa">CXXConstructExpr::CK_NonVirtualBase</a>:</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <a class="code" href="CGExprCXX_8cpp.html#a91814cc5a71d8210f409107af964e475">EmitNullBaseClassInitialization</a>(*<span class="keyword">this</span>, Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), CD->getParent());</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     }</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   }</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="comment">// If this is a call to a trivial default constructor, do nothing.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="keywordflow">if</span> (CD->isTrivial() && CD->isDefaultConstructor())</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>     <span class="keywordflow">return</span>;</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>   <span class="comment">// Elide the constructor if we're constructing from a temporary.</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="comment">// The temporary check is required because Sema sets this on NRVO</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   <span class="comment">// returns.</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ElideConstructors && E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a6380b96eb14f321ce2fb7e3037d8a3cc" title="Whether this construction is elidable.">isElidable</a>()) {</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().hasSameUnqualifiedType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>                                                E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(0)-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(0)-><a class="code" href="classclang_1_1Expr.html#a5f329c4e416440b980064951f6980cfa" title="Determine whether the result of this expression is a temporary object of the given class type...">isTemporaryObject</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), CD->getParent())) {</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a9f460dadf776a2efd0177aafc06f6b50" title="Return the specified argument.">getArg</a>(0), Dest);</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="keywordflow">return</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>   }</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *arrayType </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>         = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a881d1a09f9d299e910aaa0b6c40a7780">getAsConstantArrayType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())) {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474">EmitCXXAggrConstructorCall</a>(CD, arrayType, Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(), </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>                                E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a02a3f183e61ab841250d72e855c05134">arg_begin</a>(), E-><a class="code" href="classclang_1_1CXXConstructExpr.html#aa1ae21d82be55480e3baf5a89bebcbee">arg_end</a>());</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16d" title="C++ constructor types.">CXXCtorType</a> <a class="code" href="classclang_1_1Type.html">Type</a> = <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="keywordtype">bool</span> ForVirtualBase = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordtype">bool</span> Delegating = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a16d6423dec3a69e3b652f21e46441c02" title="Determine whether this constructor is actually constructing a base class (rather than a complete obje...">getConstructionKind</a>()) {</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>      <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a22f1a5d2b5baa0b0726243ef8ffd27ee">CXXConstructExpr::CK_Delegating</a>:</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>       <span class="comment">// We should be emitting a constructor; GlobalDecl will assert this</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       Type = <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="l00404"></a><span class="lineno">  404</span>       Delegating = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>      <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a3733e434dafb17cdbee82c01462a4da8">CXXConstructExpr::CK_Complete</a>:</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>       Type = <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16daa026c895b0ea9b02db8749b3cfeec973" title="Complete object ctor.">Ctor_Complete</a>;</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       <span class="keywordflow">break</span>;</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>      <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a0b85c1db0f2c292fce108d89f2f16f05">CXXConstructExpr::CK_VirtualBase</a>:</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       ForVirtualBase = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       <span class="comment">// fall-through</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> </div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>      <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CXXConstructExpr.html#a88db2c2b9ae313af0f3310a600bc44b5a4018db20cea3318e42f7eda9798449fa">CXXConstructExpr::CK_NonVirtualBase</a>:</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       Type = <a class="code" href="namespaceclang.html#a07c209a701587314a04d68c934e5a16da09d2d6db60ced3215694a5b6c13888be" title="Base object ctor.">Ctor_Base</a>;</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>     }</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     </div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <span class="comment">// Call the constructor.</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e79cd96285d711efa7b3a77dfa4aa7a">EmitCXXConstructorCall</a>(CD, Type, ForVirtualBase, Delegating, Dest.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a14cb9ceb0a07bd9c0090df861f550105">getAddr</a>(),</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>                            E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a02a3f183e61ab841250d72e855c05134">arg_begin</a>(), E-><a class="code" href="classclang_1_1CXXConstructExpr.html#aa1ae21d82be55480e3baf5a89bebcbee">arg_end</a>());</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> }</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="keywordtype">void</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abade08d2208f8a9d20644c8db9ab15ca">  426</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abade08d2208f8a9d20644c8db9ab15ca">CodeGenFunction::EmitSynthesizedCXXCopyCtor</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Dest, </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>                                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Src,</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Exp) {</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *E = dyn_cast<ExprWithCleanups>(Exp))</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     Exp = E->getSubExpr();</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   assert(isa<CXXConstructExpr>(Exp) && </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>          <span class="stringliteral">"EmitSynthesizedCXXCopyCtor - unknown copy ctor expr"</span>);</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a>* E = cast<CXXConstructExpr>(Exp);</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *CD = E-><a class="code" href="classclang_1_1CXXConstructExpr.html#acc1f0a9fee67eb3f6b8592495ff56548">getConstructor</a>();</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</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="l00436"></a><span class="lineno">  436</span>   </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="comment">// If we require zero initialization before (or instead of) calling the</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="comment">// constructor, as can be the case with a non-user-provided default</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="comment">// constructor, emit the zero initialization now.</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="comment">// FIXME. Do I still need this for a copy ctor synthesis?</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a3727360c5e70d957b8f335c3d828eb87" title="Whether this construction first requires zero-initialization before the initializer is called...">requiresZeroInitialization</a>())</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7344a3814e9742710d31ef902d639de2">EmitNullInitialization</a>(Dest, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   assert(!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getAsConstantArrayType(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>          && <span class="stringliteral">"EmitSynthesizedCXXCopyCtor - Copied-in Array"</span>);</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aaeba75ea2575ac1e0b62d87db08f4e79">EmitSynthesizedCXXCopyCtorCall</a>(CD, Dest, Src, E-><a class="code" href="classclang_1_1CXXConstructExpr.html#a02a3f183e61ab841250d72e855c05134">arg_begin</a>(), E-><a class="code" href="classclang_1_1CXXConstructExpr.html#aa1ae21d82be55480e3baf5a89bebcbee">arg_end</a>());</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> }</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#acb1e12bedbf7c8470480334b61ab1afe">  449</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="CGExprCXX_8cpp.html#acb1e12bedbf7c8470480334b61ab1afe">CalculateCookiePadding</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E) {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>())</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     <span class="keywordflow">return</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="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   <span class="comment">// No cookie is required if the operator new[] being used is the</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   <span class="comment">// reserved placement operator new[].</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXNewExpr.html#acadf60d786e74e7bcde56b2d603696ad">getOperatorNew</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#ae3d8cdd48f4d8850c50db283cd8acb76" title="Determines whether this operator new or delete is one of the reserved global placement operators: voi...">isReservedGlobalPlacementOperator</a>())</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">return</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="l00458"></a><span class="lineno">  458</span> </div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="keywordflow">return</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#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#acebc8d1052e73f3fd9c38fed66101d50">GetArrayCookieSize</a>(E);</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> </div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a30806658b96b1ac45f2ad32c7e0131ad">  462</a></span> <span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGExprCXX_8cpp.html#a30806658b96b1ac45f2ad32c7e0131ad">EmitCXXNewAllocSize</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *e,</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>                                         <span class="keywordtype">unsigned</span> minElements,</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&numElements,</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&sizeWithoutCookie) {</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</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> = e-><a class="code" href="classclang_1_1CXXNewExpr.html#af5c824f72fa7d8dfb182e43cd486f9ee">getAllocatedType</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>   <span class="keywordflow">if</span> (!e-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>()) {</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> typeSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(type);</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     sizeWithoutCookie</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, typeSize.<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="l00473"></a><span class="lineno">  473</span>     <span class="keywordflow">return</span> sizeWithoutCookie;</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> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   <span class="comment">// The width of size_t.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordtype">unsigned</span> sizeWidth = CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>->getBitWidth();</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>   <span class="comment">// Figure out the cookie size.</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   llvm::APInt cookieSize(sizeWidth,</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>                          <a class="code" href="CGExprCXX_8cpp.html#acb1e12bedbf7c8470480334b61ab1afe">CalculateCookiePadding</a>(CGF, e).getQuantity());</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">// Emit the array size expression.</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="comment">// We multiply the size of all dimensions for NumElements.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <span class="comment">// e.g for 'int[2][3]', ElemType is 'int' and NumElements is 6.</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(e-><a class="code" href="classclang_1_1CXXNewExpr.html#a84d1e92b746a89e7fa6a4d8110fcb022">getArraySize</a>());</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   assert(isa<llvm::IntegerType>(numElements->getType()));</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">// The number of elements can be have an arbitrary integer type;</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="comment">// essentially, we need to multiply it by a constant factor, add a</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   <span class="comment">// cookie size, and verify that the result is representable as a</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <span class="comment">// size_t.  That's just a gloss, though, and it's wrong in one</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   <span class="comment">// important way: if the count is negative, it's an error even if</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <span class="comment">// the cookie size would bring the total size >= 0.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   <span class="keywordtype">bool</span> isSigned </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     = e-><a class="code" href="classclang_1_1CXXNewExpr.html#a84d1e92b746a89e7fa6a4d8110fcb022">getArraySize</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac1a93888d84731955cd5e95d6510aea6">isSignedIntegerOrEnumerationType</a>();</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   llvm::IntegerType *numElementsType</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     = cast<llvm::IntegerType>(numElements->getType());</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordtype">unsigned</span> numElementsWidth = numElementsType->getBitWidth();</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>   <span class="comment">// Compute the constant factor.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   llvm::APInt arraySizeMultiplier(sizeWidth, 1);</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>   <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAT</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</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>(type)) {</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     type = CAT->getElementType();</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     arraySizeMultiplier *= CAT->getSize();</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> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> typeSize = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(type);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   llvm::APInt typeSizeMultiplier(sizeWidth, typeSize.<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="l00511"></a><span class="lineno">  511</span>   typeSizeMultiplier *= arraySizeMultiplier;</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   <span class="comment">// This will be a size_t.</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *size;</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   </div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   <span class="comment">// If someone is doing 'new int[42]' there is no need to do a dynamic check.</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   <span class="comment">// Don't bloat the -O0 code.</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   <span class="keywordflow">if</span> (llvm::ConstantInt *numElementsC =</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         dyn_cast<llvm::ConstantInt>(numElements)) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keyword">const</span> llvm::APInt &count = numElementsC->getValue();</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="keywordtype">bool</span> hasAnyOverflow = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">// If 'count' was a negative number, it's an overflow.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="keywordflow">if</span> (isSigned && count.isNegative())</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>       hasAnyOverflow = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     <span class="comment">// We want to do all this arithmetic in size_t.  If numElements is</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>     <span class="comment">// wider than that, check whether it's already too big, and if so,</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>     <span class="comment">// overflow.</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numElementsWidth > sizeWidth &&</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>              numElementsWidth - sizeWidth > count.countLeadingZeros())</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       hasAnyOverflow = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <span class="comment">// Okay, compute a count at the right width.</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     llvm::APInt adjustedCount = count.zextOrTrunc(sizeWidth);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <span class="comment">// If there is a brace-initializer, we cannot allocate fewer elements than</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="comment">// there are initializers. If we do, that's treated like an overflow.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">if</span> (adjustedCount.ult(minElements))</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       hasAnyOverflow = <span class="keyword">true</span>;</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>     <span class="comment">// Scale numElements by that.  This might overflow, but we don't</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>     <span class="comment">// care because it only overflows if allocationSize does, too, and</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="comment">// if that overflows then we shouldn't use this.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     numElements = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>,</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>                                          adjustedCount * arraySizeMultiplier);</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="comment">// Compute the size before cookie, and track whether it overflowed.</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordtype">bool</span> overflow;</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     llvm::APInt allocationSize</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       = adjustedCount.umul_ov(typeSizeMultiplier, overflow);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     hasAnyOverflow |= overflow;</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>     <span class="comment">// Add in the cookie, and check whether it's overflowed.</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>     <span class="keywordflow">if</span> (cookieSize != 0) {</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>       <span class="comment">// Save the current size without a cookie.  This shouldn't be</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>       <span class="comment">// used if there was overflow.</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       sizeWithoutCookie = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, allocationSize);</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>       allocationSize = allocationSize.uadd_ov(cookieSize, overflow);</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       hasAnyOverflow |= overflow;</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     }</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> </div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="comment">// On overflow, produce a -1 so operator new will fail.</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <span class="keywordflow">if</span> (hasAnyOverflow) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>       size = llvm::Constant::getAllOnesValue(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>       size = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, allocationSize);</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> </div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   <span class="comment">// Otherwise, we might need to use the overflow intrinsics.</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <span class="comment">// There are up to five conditions we need to test for:</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <span class="comment">// 1) if isSigned, we need to check whether numElements is negative;</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>     <span class="comment">// 2) if numElementsWidth > sizeWidth, we need to check whether</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     <span class="comment">//   numElements is larger than something representable in size_t;</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <span class="comment">// 3) if minElements > 0, we need to check whether numElements is smaller</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     <span class="comment">//    than that.</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>     <span class="comment">// 4) we need to compute</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>     <span class="comment">//      sizeWithoutCookie := numElements * typeSizeMultiplier</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>     <span class="comment">//    and check whether it overflows; and</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="comment">// 5) if we need a cookie, we need to compute</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="comment">//      size := sizeWithoutCookie + cookieSize</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>     <span class="comment">//    and check whether it overflows.</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *hasOverflow = 0;</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>     <span class="comment">// If numElementsWidth > sizeWidth, then one way or another, we're</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     <span class="comment">// going to have to do a comparison for (2), and this happens to</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <span class="comment">// take care of (1), too.</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="keywordflow">if</span> (numElementsWidth > sizeWidth) {</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       llvm::APInt threshold(numElementsWidth, 1);</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       threshold <<= sizeWidth;</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> </div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *thresholdV</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>         = llvm::ConstantInt::get(numElementsType, threshold);</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>       hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpUGE(numElements, thresholdV);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateTrunc(numElements, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</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">// Otherwise, if we're signed, we want to sext up to size_t.</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isSigned) {</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <span class="keywordflow">if</span> (numElementsWidth < sizeWidth)</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateSExt(numElements, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</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="comment">// If there's a non-1 type size multiplier, then we can do the</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       <span class="comment">// signedness check at the same time as we do the multiply</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="comment">// because a negative number times anything will cause an</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">// unsigned overflow.  Otherwise, we have to do it here. But at least</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <span class="comment">// in this case, we can subsume the >= minElements check.</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <span class="keywordflow">if</span> (typeSizeMultiplier == 1)</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpSLT(numElements,</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>                               llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, minElements));</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">// Otherwise, zext up to size_t if necessary.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numElementsWidth < sizeWidth) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>       numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateZExt(numElements, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     }</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span> </div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     assert(numElements->getType() == CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</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>     <span class="keywordflow">if</span> (minElements) {</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>       <span class="comment">// Don't allow allocation of fewer elements than we have initializers.</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>       <span class="keywordflow">if</span> (!hasOverflow) {</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>         hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpULT(numElements,</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>                               llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, minElements));</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numElementsWidth > sizeWidth) {</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>         <span class="comment">// The other existing overflow subsumes this check.</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>         <span class="comment">// We do an unsigned comparison, since any signed value < -1 is</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>         <span class="comment">// taken care of either above or below.</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>         hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateOr(hasOverflow,</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>                           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpULT(numElements,</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>                               llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, minElements)));</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> </div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     size = numElements;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span> </div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>     <span class="comment">// Multiply by the type size if necessary.  This multiplier</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="comment">// includes all the factors for nested arrays.</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="comment">// This step also causes numElements to be scaled up by the</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="comment">// nested-array factor if necessary.  Overflow on this computation</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="comment">// can be ignored because the result shouldn't be used if</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <span class="comment">// allocation fails.</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">if</span> (typeSizeMultiplier != 1) {</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *umul_with_overflow</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</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#a746e030a00d8dc22123b52c48120aad3">getIntrinsic</a>(llvm::Intrinsic::umul_with_overflow, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> </div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *tsmV =</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, typeSizeMultiplier);</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result =</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall2(umul_with_overflow, size, tsmV);</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> </div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *overflowed = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(result, 1);</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>       <span class="keywordflow">if</span> (hasOverflow)</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>         hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateOr(hasOverflow, overflowed);</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>         hasOverflow = overflowed;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> </div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(result, 0);</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>       <span class="comment">// Also scale up numElements by the array size multiplier.</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>       <span class="keywordflow">if</span> (arraySizeMultiplier != 1) {</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>         <span class="comment">// If the base element type size is 1, then we can re-use the</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>         <span class="comment">// multiply we just did.</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>         <span class="keywordflow">if</span> (typeSize.<a class="code" href="classclang_1_1CharUnits.html#ac02a310fd7d1f2bea9d1a0f0ee8cb9d8" title="isOne - Test whether the quantity equals one.">isOne</a>()) {</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>           assert(arraySizeMultiplier == typeSizeMultiplier);</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>           numElements = size;</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>         <span class="comment">// Otherwise we need a separate multiply.</span></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>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *asmV =</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>             llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, arraySizeMultiplier);</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>           numElements = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMul(numElements, asmV);</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         }</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       }</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>       <span class="comment">// numElements doesn't need to be scaled.</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       assert(arraySizeMultiplier == 1);</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>     </div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>     <span class="comment">// Add in the cookie size if necessary.</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     <span class="keywordflow">if</span> (cookieSize != 0) {</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       sizeWithoutCookie = size;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span> </div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *uadd_with_overflow</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</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#a746e030a00d8dc22123b52c48120aad3">getIntrinsic</a>(llvm::Intrinsic::uadd_with_overflow, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>);</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> </div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *cookieSizeV = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, cookieSize);</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result =</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall2(uadd_with_overflow, size, cookieSizeV);</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span> </div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *overflowed = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(result, 1);</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       <span class="keywordflow">if</span> (hasOverflow)</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>         hasOverflow = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateOr(hasOverflow, overflowed);</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>         hasOverflow = overflowed;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> </div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(result, 0);</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>     }</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span> </div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="comment">// If we had any possibility of dynamic overflow, make a select to</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="comment">// overwrite 'size' with an all-ones value, which should cause</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="comment">// operator new to throw.</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">if</span> (hasOverflow)</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateSelect(hasOverflow,</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>                                  llvm::Constant::getAllOnesValue(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>),</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>                                       size);</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> </div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">if</span> (cookieSize == 0)</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     sizeWithoutCookie = size;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     assert(sizeWithoutCookie && <span class="stringliteral">"didn't set sizeWithoutCookie?"</span>);</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="keywordflow">return</span> size;</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> }</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> </div>
+<div class="line"><a name="l00721"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a091597adb93507924a5eadfdcefd9c35">  721</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#a091597adb93507924a5eadfdcefd9c35">StoreAnyExprIntoOneUnit</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init,</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>                                     <a class="code" href="classclang_1_1QualType.html">QualType</a> AllocType, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr) {</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="comment">// FIXME: Refactor with EmitExprAsInit.</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</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>(AllocType);</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>   <span class="keywordflow">switch</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(AllocType)) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">EmitScalarInit</a>(Init, 0, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(NewPtr, AllocType,</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>                                                    Alignment),</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>                        <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>:</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1bd5d8252eada9df4a531d3ca8bf6500">EmitComplexExprIntoLValue</a>(Init, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(NewPtr, AllocType,</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>                                                            Alignment),</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>                                   <span class="comment">/*isInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>: {</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</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="l00738"></a><span class="lineno">  738</span>       = <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(NewPtr, Alignment, AllocType.<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="l00739"></a><span class="lineno">  739</span>                               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>                               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>                               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>);</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(Init, Slot);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">return</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>   }</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>   llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</span>);</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span> }</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span> </div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00750"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a51b9abc730c4b4702efbb1ca1915f08d">  750</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a51b9abc730c4b4702efbb1ca1915f08d">CodeGenFunction::EmitNewArrayInitializer</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E, </div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>                                          <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType,</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *beginPtr,</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>                                          <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements) {</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1CXXNewExpr.html#aa6ae7ac78e40c48645f1d8d6b39fea20" title="Whether this new-expression has any initializer at all.">hasInitializer</a>())</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     <span class="keywordflow">return</span>; <span class="comment">// We have a POD type.</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> </div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *explicitPtr = beginPtr;</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="comment">// Find the end of the array, hoisted out of the loop.</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *endPtr =</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(beginPtr, numElements, <span class="stringliteral">"array.end"</span>);</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> </div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="keywordtype">unsigned</span> initializerElements = 0;</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = E-><a class="code" href="classclang_1_1CXXNewExpr.html#a71970a260c17ee5914667f39e1dbbee7" title="The initializer of this new-expression.">getInitializer</a>();</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   llvm::AllocaInst *endOfInit = 0;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = elementType.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> cleanup;</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   llvm::Instruction *cleanupDominator = 0;</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span> </div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="comment">// If the initializer is an initializer list, first do the explicit elements.</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = dyn_cast<InitListExpr>(Init)) {</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     initializerElements = ILE->getNumInits();</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span> </div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>     <span class="comment">// If this is a multi-dimensional array new, we will initialize multiple</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     <span class="comment">// elements with each init list element.</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> AllocType = E-><a class="code" href="classclang_1_1CXXNewExpr.html#af5c824f72fa7d8dfb182e43cd486f9ee">getAllocatedType</a>();</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *CAT = dyn_cast_or_null<ConstantArrayType>(</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>             AllocType-><a class="code" href="classclang_1_1Type.html#ae2ffc12f9601382aa216450a2d33c823">getAsArrayTypeUnsafe</a>())) {</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>       <span class="keywordtype">unsigned</span> AS = explicitPtr->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       llvm::Type *AllocPtrTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(AllocType)->getPointerTo(AS);</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>       explicitPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(explicitPtr, AllocPtrTy);</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       initializerElements *= <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a005f5ecbd6b231199c2df852550d9d01" title="Return number of constant array elements.">getConstantArrayElementCount</a>(CAT);</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="comment">// Enter a partial-destruction cleanup if necessary.</span></div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</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="l00787"></a><span class="lineno">  787</span>       <span class="comment">// In principle we could tell the cleanup where we are more</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>       <span class="comment">// directly, but the control flow can get so varied here that it</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>       <span class="comment">// would actually be quite complex.  Therefore we go through an</span></div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>       <span class="comment">// alloca.</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       endOfInit = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(beginPtr->getType(), <span class="stringliteral">"array.endOfInit"</span>);</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>       cleanupDominator = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(beginPtr, endOfInit);</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e775e1217a397d86340718d5edf5a2">pushIrregularPartialArrayCleanup</a>(beginPtr, endOfInit, elementType,</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>                                        <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind));</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>       cleanup = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     }</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> </div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ILE->getNumInits(); i != e; ++i) {</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>       <span class="comment">// Tell the cleanup that it needs to destroy up to this</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>       <span class="comment">// element.  TODO: some of these stores can be trivially</span></div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>       <span class="comment">// observed to be unnecessary.</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       <span class="keywordflow">if</span> (endOfInit) <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(explicitPtr, endOfInit);</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       <a class="code" href="CGExprCXX_8cpp.html#a091597adb93507924a5eadfdcefd9c35">StoreAnyExprIntoOneUnit</a>(*<span class="keyword">this</span>, ILE->getInit(i),</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>                               ILE->getInit(i)->getType(), explicitPtr);</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       explicitPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(explicitPtr, 1,</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>                                                <span class="stringliteral">"array.exp.next"</span>);</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     }</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> </div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     <span class="comment">// The remaining elements are filled with the array filler expression.</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     Init = ILE->getArrayFiller();</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>     explicitPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(explicitPtr, beginPtr->getType());</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>   }</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> </div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>   <span class="comment">// Create the continuation block.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</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">"new.loop.end"</span>);</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span> </div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="comment">// If the number of elements isn't constant, we have to now check if there is</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="comment">// anything left to initialize.</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="keywordflow">if</span> (llvm::ConstantInt *constNum = dyn_cast<llvm::ConstantInt>(numElements)) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <span class="comment">// If all elements have already been initialized, skip the whole loop.</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>     <span class="keywordflow">if</span> (constNum->getZExtValue() <= initializerElements) {</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>       <span class="comment">// If there was a cleanup, deactivate it.</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>       <span class="keywordflow">if</span> (cleanupDominator)</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7269997253c3e7e47f864add0bdf2a0e" title="Deactive a cleanup that was created in an active state.">DeactivateCleanupBlock</a>(cleanup, cleanupDominator);</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>     }</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     llvm::BasicBlock *nonEmptyBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"new.loop.nonempty"</span>);</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isEmpty = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(explicitPtr, endPtr,</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>                                                 <span class="stringliteral">"array.isempty"</span>);</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isEmpty, contBB, nonEmptyBB);</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(nonEmptyBB);</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> </div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>   <span class="comment">// Enter the loop.</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>   llvm::BasicBlock *entryBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</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.loop"</span>);</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(loopBB);</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span> </div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>   <span class="comment">// Set up the current-element phi.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   llvm::PHINode *curPtr =</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(explicitPtr->getType(), 2, <span class="stringliteral">"array.cur"</span>);</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>   curPtr->addIncoming(explicitPtr, entryBB);</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> </div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>   <span class="comment">// Store the new cleanup position for irregular cleanups.</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>   <span class="keywordflow">if</span> (endOfInit) <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(curPtr, endOfInit);</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> </div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>   <span class="comment">// Enter a partial-destruction cleanup if necessary.</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>   <span class="keywordflow">if</span> (!cleanupDominator && <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab5de8b85a1f54e0dd9d5dce5527faf23">needsEHCleanup</a>(dtorKind)) {</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a21c0cccb40980a1b634413a4bce5b277">pushRegularPartialArrayCleanup</a>(beginPtr, curPtr, elementType,</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind));</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     cleanup = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     cleanupDominator = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>   }</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span> </div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   <span class="comment">// Emit the initializer into this element.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   <a class="code" href="CGExprCXX_8cpp.html#a091597adb93507924a5eadfdcefd9c35">StoreAnyExprIntoOneUnit</a>(*<span class="keyword">this</span>, Init, E-><a class="code" href="classclang_1_1CXXNewExpr.html#af5c824f72fa7d8dfb182e43cd486f9ee">getAllocatedType</a>(), curPtr);</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span> </div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>   <span class="comment">// Leave the cleanup if we entered one.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>   <span class="keywordflow">if</span> (cleanupDominator) {</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7269997253c3e7e47f864add0bdf2a0e" title="Deactive a cleanup that was created in an active state.">DeactivateCleanupBlock</a>(cleanup, cleanupDominator);</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     cleanupDominator->eraseFromParent();</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="comment">// Advance to the next element.</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *nextPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(curPtr, 1, <span class="stringliteral">"array.next"</span>);</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> </div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   <span class="comment">// Check whether we've gotten to the end of the array and, if so,</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>   <span class="comment">// exit the loop.</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *isEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(nextPtr, endPtr, <span class="stringliteral">"array.atend"</span>);</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isEnd, contBB, loopBB);</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>   curPtr->addIncoming(nextPtr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock());</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(contBB);</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span> }</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span> </div>
+<div class="line"><a name="l00879"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#ae976cf96daf55f86e27e27f4bee07146">  879</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#ae976cf96daf55f86e27e27f4bee07146">EmitZeroMemSet</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size) {</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa21b88eb12dee547d5a0919e7ff6b5e2" title="Emit a cast to void* in the appropriate address space.">EmitCastToVoidPtr</a>(NewPtr);</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</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>(T);</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemSet(NewPtr, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt8(0), Size,</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>                            Alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> }</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>                        </div>
+<div class="line"><a name="l00887"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a411e8c22c338d5b10f9318249345f8b2">  887</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#a411e8c22c338d5b10f9318249345f8b2">EmitNewInitializer</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E,</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>                                <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType,</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr,</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements,</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AllocSizeWithoutCookie) {</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = E-><a class="code" href="classclang_1_1CXXNewExpr.html#a71970a260c17ee5914667f39e1dbbee7" title="The initializer of this new-expression.">getInitializer</a>();</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>()) {</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CCE = dyn_cast_or_null<CXXConstructExpr>(Init)){</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>       <a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Ctor = CCE->getConstructor();</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>       <span class="keywordflow">if</span> (Ctor-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>()) {</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>         <span class="comment">// If new expression did not specify value-initialization, then there</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         <span class="comment">// is no initialization.</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         <span class="keywordflow">if</span> (!CCE->requiresZeroInitialization() || Ctor-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXRecordDecl.html#a2c1511d7b34b98b0f9763a3d2a73d557" title="Determine whether this is an empty class in the sense of (C++11 [meta.unary.prop]).">isEmpty</a>())</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       </div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>         <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#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(ElementType)) {</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>           <span class="comment">// Optimization: since zero initialization will just set the memory</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>           <span class="comment">// to all zeroes, generate a single memset to do it in one shot.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>           <a class="code" href="CGExprCXX_8cpp.html#ae976cf96daf55f86e27e27f4bee07146">EmitZeroMemSet</a>(CGF, ElementType, NewPtr, AllocSizeWithoutCookie);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>         }</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       }</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> </div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12c251b3a88bd0cdc0332092a1c9e474">EmitCXXAggrConstructorCall</a>(Ctor, NumElements, NewPtr,</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>                                      CCE->arg_begin(),  CCE->arg_end(),</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>                                      CCE->requiresZeroInitialization());</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Init && isa<ImplicitValueInitExpr>(Init) &&</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</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#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#ad8782689c4996336272c868f602c8896">isZeroInitializable</a>(ElementType)) {</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>       <span class="comment">// Optimization: since zero initialization will just set the memory</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <span class="comment">// to all zeroes, generate a single memset to do it in one shot.</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <a class="code" href="CGExprCXX_8cpp.html#ae976cf96daf55f86e27e27f4bee07146">EmitZeroMemSet</a>(CGF, ElementType, NewPtr, AllocSizeWithoutCookie);</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     }</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a51b9abc730c4b4702efbb1ca1915f08d">EmitNewArrayInitializer</a>(E, ElementType, NewPtr, NumElements);</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>   }</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span> </div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>   <span class="keywordflow">if</span> (!Init)</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     <span class="keywordflow">return</span>;</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>   <a class="code" href="CGExprCXX_8cpp.html#a091597adb93507924a5eadfdcefd9c35">StoreAnyExprIntoOneUnit</a>(CGF, Init, E-><a class="code" href="classclang_1_1CXXNewExpr.html#af5c824f72fa7d8dfb182e43cd486f9ee">getAllocatedType</a>(), NewPtr);</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span> }</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span> <span class="comment"></span></div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span> <span class="comment">/// Emit a call to an operator new or operator delete function, as implicitly</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span> <span class="comment">/// created by new-expressions and delete-expressions.</span></div>
+<div class="line"><a name="l00933"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">  933</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *Callee,</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *CalleeType,</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>) {</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>   llvm::Instruction *CallOrInvoke;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CalleeAddr = CGF.<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>(Callee);</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV =</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(Args, CalleeType),</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>                    CalleeAddr, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>                    Callee, &CallOrInvoke);</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span> <span class="comment"></span></div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span> <span class="comment">  /// C++1y [expr.new]p10:</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <span class="comment">  ///   [In a new-expression,] an implementation is allowed to omit a call</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span> <span class="comment">  ///   to a replaceable global allocation function.</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> <span class="comment">  /// We model such elidable calls with the 'builtin' attribute.</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> <span class="comment"></span>  llvm::Function *Fn = dyn_cast<llvm::Function>(CalleeAddr);</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keywordflow">if</span> (Callee->isReplaceableGlobalAllocationFunction() &&</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>       Fn && Fn->hasFnAttribute(llvm::Attribute::NoBuiltin)) {</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     <span class="comment">// FIXME: Add addAttribute to CallSite.</span></div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>     <span class="keywordflow">if</span> (llvm::CallInst *CI = dyn_cast<llvm::CallInst>(CallOrInvoke))</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       CI->addAttribute(llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>                        llvm::Attribute::Builtin);</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (llvm::InvokeInst *II = dyn_cast<llvm::InvokeInst>(CallOrInvoke))</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>       II->addAttribute(llvm::AttributeSet::FunctionIndex,</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>                        llvm::Attribute::Builtin);</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       llvm_unreachable(<span class="stringliteral">"unexpected kind of call instruction"</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="keywordflow">return</span> RV;</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> }</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span> </div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span> <span class="comment">  /// A cleanup to call the given 'operator delete' function upon</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span> <span class="comment">  /// abnormal exit from a new expression.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span> <span class="comment"></span>  <span class="keyword">class </span>CallDeleteDuringNew : <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="l00970"></a><span class="lineno">  970</span>     <span class="keywordtype">size_t</span> NumPlacementArgs;</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete;</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr;</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AllocSize;</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>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> *getPlacementArgs() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a>*<span class="keyword">></span>(<span class="keyword">this</span>+1); }</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> </div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     <span class="keyword">static</span> <span class="keywordtype">size_t</span> getExtraSize(<span class="keywordtype">size_t</span> NumPlacementArgs) {</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>       <span class="keywordflow">return</span> NumPlacementArgs * <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a>);</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> </div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     CallDeleteDuringNew(<span class="keywordtype">size_t</span> NumPlacementArgs,</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>                         <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete,</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AllocSize) </div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       : NumPlacementArgs(NumPlacementArgs), OperatorDelete(OperatorDelete),</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>         Ptr(Ptr), AllocSize(AllocSize) {}</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span> </div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     <span class="keywordtype">void</span> setPlacementArg(<span class="keywordtype">unsigned</span> I, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Arg) {</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       assert(I < NumPlacementArgs && <span class="stringliteral">"index out of range"</span>);</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>       getPlacementArgs()[I] = Arg;</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> Emit(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, Flags flags) {</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>         = OperatorDelete->getType()-><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="l00997"></a><span class="lineno">  997</span>       assert(FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == NumPlacementArgs + 1 ||</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>              (FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == 2 && NumPlacementArgs == 0));</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span> </div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>       <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> DeleteArgs;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> </div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>       <span class="comment">// The first argument is always a void*.</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>       <a class="code" href="classclang_1_1QualType.html">FunctionProtoType::arg_type_iterator</a> AI = FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a4d754a59b4408c1e6e20c2edefdfb940">arg_type_begin</a>();</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       DeleteArgs.<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>(Ptr), *AI++);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       <span class="comment">// A member 'operator delete' can take an extra 'size_t' argument.</span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>       <span class="keywordflow">if</span> (FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == NumPlacementArgs + 2)</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         DeleteArgs.<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>(AllocSize), *AI++);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="comment">// Pass the rest of the arguments, which must match exactly.</span></div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != NumPlacementArgs; ++I)</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>         DeleteArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(getPlacementArgs()[I], *AI++);</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>       <span class="comment">// Call 'operator delete'.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>       <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(CGF, OperatorDelete, FPT, DeleteArgs);</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     }</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>   };</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment"></span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="comment">  /// A cleanup to call the given 'operator delete' function upon</span></div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">  /// abnormal exit from a new expression when the new expression is</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="comment">  /// conditional.</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="comment"></span>  <span class="keyword">class </span>CallDeleteDuringConditionalNew : <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="l01023"></a><span class="lineno"> 1023</span>     <span class="keywordtype">size_t</span> NumPlacementArgs;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> Ptr;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>     <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> AllocSize;</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> *getPlacementArgs() {</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a>*<span class="keyword">></span>(<span class="keyword">this</span>+1);</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     }</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>     <span class="keyword">static</span> <span class="keywordtype">size_t</span> getExtraSize(<span class="keywordtype">size_t</span> NumPlacementArgs) {</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       <span class="keywordflow">return</span> NumPlacementArgs * <span class="keyword">sizeof</span>(<a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a>);</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     }</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     CallDeleteDuringConditionalNew(<span class="keywordtype">size_t</span> NumPlacementArgs,</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete,</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>                                    <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> Ptr,</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>                               <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> AllocSize)</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>       : NumPlacementArgs(NumPlacementArgs), OperatorDelete(OperatorDelete),</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         Ptr(Ptr), AllocSize(AllocSize) {}</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     <span class="keywordtype">void</span> setPlacementArg(<span class="keywordtype">unsigned</span> I, <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> Arg) {</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>       assert(I < NumPlacementArgs && <span class="stringliteral">"index out of range"</span>);</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>       getPlacementArgs()[I] = Arg;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>     }</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</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="l01050"></a><span class="lineno"> 1050</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *FPT</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>         = OperatorDelete->getType()-><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="l01052"></a><span class="lineno"> 1052</span>       assert(FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == NumPlacementArgs + 1 ||</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>              (FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == 2 && NumPlacementArgs == 0));</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>       <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> DeleteArgs;</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>       <span class="comment">// The first argument is always a void*.</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>       <a class="code" href="classclang_1_1QualType.html">FunctionProtoType::arg_type_iterator</a> AI = FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a4d754a59b4408c1e6e20c2edefdfb940">arg_type_begin</a>();</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>       DeleteArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(Ptr.restore(CGF), *AI++);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> </div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>       <span class="comment">// A member 'operator delete' can take an extra 'size_t' argument.</span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>       <span class="keywordflow">if</span> (FPT-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == NumPlacementArgs + 2) {</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>         <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = AllocSize.restore(CGF);</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>         DeleteArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(RV, *AI++);</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>       }</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>       <span class="comment">// Pass the rest of the arguments, which must match exactly.</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != NumPlacementArgs; ++I) {</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>         <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = getPlacementArgs()[I].restore(CGF);</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>         DeleteArgs.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(RV, *AI++);</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>       }</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       <span class="comment">// Call 'operator delete'.</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(CGF, OperatorDelete, FPT, DeleteArgs);</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>   };</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> <span class="comment"></span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="comment">/// Enter a cleanup to call 'operator delete' if the initializer in a</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="comment">/// new-expression throws.</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a2e76f9dfdc2068d6f0ad1598e3d7d056"> 1081</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#a2e76f9dfdc2068d6f0ad1598e3d7d056">EnterNewDeleteCleanup</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E,</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NewPtr,</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AllocSize,</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &NewArgs) {</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>   <span class="comment">// If we're not inside a conditional branch, then the cleanup will</span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   <span class="comment">// dominate and we can do the easier (and more efficient) thing.</span></div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   <span class="keywordflow">if</span> (!CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a031fe736ab2254d7a58ae0ababaa2219">isInConditionalBranch</a>()) {</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     CallDeleteDuringNew *Cleanup = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>       .<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ae57ac8a6fede1063c45aefb817c3768b">pushCleanupWithExtra</a><CallDeleteDuringNew>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>,</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>                                                  E-><a class="code" href="classclang_1_1CXXNewExpr.html#a4972da9c4a47de6a3de8a2123f12746c">getNumPlacementArgs</a>(),</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>                                                  E-><a class="code" href="classclang_1_1CXXNewExpr.html#ad595b749170e8995f3f44e43c2c7d811">getOperatorDelete</a>(),</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>                                                  NewPtr, AllocSize);</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = E-><a class="code" href="classclang_1_1CXXNewExpr.html#a4972da9c4a47de6a3de8a2123f12746c">getNumPlacementArgs</a>(); I != N; ++I)</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>       Cleanup->setPlacementArg(I, NewArgs[I+1].RV);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   }</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>   <span class="comment">// Otherwise, we need to save all this stuff.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> SavedNewPtr =</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     <a class="code" href="structclang_1_1CodeGen_1_1InvariantValue.html#a5a95bc40699a2f96e8a5f0d14d624ff2">DominatingValue<RValue>::save</a>(CGF, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(NewPtr));</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>   <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::saved_type</a> SavedAllocSize =</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <a class="code" href="structclang_1_1CodeGen_1_1InvariantValue.html#a5a95bc40699a2f96e8a5f0d14d624ff2">DominatingValue<RValue>::save</a>(CGF, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(AllocSize));</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   CallDeleteDuringConditionalNew *Cleanup = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>     .<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ae57ac8a6fede1063c45aefb817c3768b">pushCleanupWithExtra</a><CallDeleteDuringConditionalNew>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>,</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>                                                  E-><a class="code" href="classclang_1_1CXXNewExpr.html#a4972da9c4a47de6a3de8a2123f12746c">getNumPlacementArgs</a>(),</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>                                                  E-><a class="code" href="classclang_1_1CXXNewExpr.html#ad595b749170e8995f3f44e43c2c7d811">getOperatorDelete</a>(),</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>                                                  SavedNewPtr,</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>                                                  SavedAllocSize);</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = E-><a class="code" href="classclang_1_1CXXNewExpr.html#a4972da9c4a47de6a3de8a2123f12746c">getNumPlacementArgs</a>(); I != N; ++I)</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>     Cleanup->setPlacementArg(I,</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>                      <a class="code" href="structclang_1_1CodeGen_1_1DominatingValue.html">DominatingValue<RValue>::save</a>(CGF, NewArgs[I+1].RV));</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> </div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a42da694c2e722bbd1f9664fc04bc6733">initFullExprCleanup</a>();</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"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a514f540adbef29da4bdc220a0052b058"> 1119</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a514f540adbef29da4bdc220a0052b058">CodeGenFunction::EmitCXXNewExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXNewExpr.html" title="Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...">CXXNewExpr</a> *E) {</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="comment">// The element type being allocated.</span></div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> allocType = <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>(E-><a class="code" href="classclang_1_1CXXNewExpr.html#af5c824f72fa7d8dfb182e43cd486f9ee">getAllocatedType</a>());</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <span class="comment">// 1. Build a call to the allocation function.</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *allocator = E-><a class="code" href="classclang_1_1CXXNewExpr.html#acadf60d786e74e7bcde56b2d603696ad">getOperatorNew</a>();</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *allocatorType =</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     allocator-><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="l01127"></a><span class="lineno"> 1127</span> </div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> allocatorArgs;</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="comment">// The allocation size is the first argument.</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> sizeType = <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="l01132"></a><span class="lineno"> 1132</span> </div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   <span class="comment">// If there is a brace-initializer, cannot allocate fewer elements than inits.</span></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>   <span class="keywordtype">unsigned</span> minElements = 0;</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>() && E-><a class="code" href="classclang_1_1CXXNewExpr.html#aa6ae7ac78e40c48645f1d8d6b39fea20" title="Whether this new-expression has any initializer at all.">hasInitializer</a>()) {</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *ILE = dyn_cast<InitListExpr>(E-><a class="code" href="classclang_1_1CXXNewExpr.html#a71970a260c17ee5914667f39e1dbbee7" title="The initializer of this new-expression.">getInitializer</a>()))</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>       minElements = ILE->getNumInits();</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   }</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> </div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements = 0;</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocSizeWithoutCookie = 0;</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocSize =</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     <a class="code" href="CGExprCXX_8cpp.html#a30806658b96b1ac45f2ad32c7e0131ad">EmitCXXNewAllocSize</a>(*<span class="keyword">this</span>, E, minElements, numElements,</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>                         allocSizeWithoutCookie);</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>   </div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   allocatorArgs.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(allocSize), sizeType);</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>   <span class="comment">// Emit the rest of the arguments.</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   <span class="comment">// FIXME: Ideally, this should just use EmitCallArgs.</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   <a class="code" href="classclang_1_1ConstExprIterator.html">CXXNewExpr::const_arg_iterator</a> placementArg = E-><a class="code" href="classclang_1_1CXXNewExpr.html#ac0627f0e7a3057ddb8e12be27790c40a">placement_arg_begin</a>();</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>   <span class="comment">// First, use the types from the function type.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   <span class="comment">// We start at 1 here because the first argument (the allocation size)</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>   <span class="comment">// has already been emitted.</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1, e = allocatorType-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>(); i != e;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>        ++i, ++placementArg) {</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> argType = allocatorType-><a class="code" href="classclang_1_1FunctionProtoType.html#ab515293e3ef4f959921927dd03dcf085">getArgType</a>(i);</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().hasSameUnqualifiedType(argType.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>(),</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>                                                placementArg-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()) &&</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>            <span class="stringliteral">"type mismatch in call argument!"</span>);</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> </div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3" title="EmitCallArg - Emit a single call argument.">EmitCallArg</a>(allocatorArgs, *placementArg, argType);</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>   }</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> </div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</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="l01167"></a><span class="lineno"> 1167</span>   <span class="comment">// variadic function.</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>   assert((placementArg == E-><a class="code" href="classclang_1_1CXXNewExpr.html#a41cf1aab9e9e44963f8d1683db76beb0">placement_arg_end</a>() ||</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>           allocatorType-><a class="code" href="classclang_1_1FunctionProtoType.html#aa39a01bfe913d6cfb6828486fcd089c0">isVariadic</a>()) &&</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>          <span class="stringliteral">"Extra arguments to non-variadic function!"</span>);</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</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="l01173"></a><span class="lineno"> 1173</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ConstExprIterator.html">CXXNewExpr::const_arg_iterator</a> placementArgsEnd = E-><a class="code" href="classclang_1_1CXXNewExpr.html#a41cf1aab9e9e44963f8d1683db76beb0">placement_arg_end</a>();</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>        placementArg != placementArgsEnd; ++placementArg) {</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7bc8ff8f3e706c49a171712be9c8a6d3" title="EmitCallArg - Emit a single call argument.">EmitCallArg</a>(allocatorArgs, *placementArg, placementArg-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="comment">// Emit the allocation call.  If the allocator is a global placement</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   <span class="comment">// operator, just "inline" it directly.</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV;</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <span class="keywordflow">if</span> (allocator-><a class="code" href="classclang_1_1FunctionDecl.html#ae3d8cdd48f4d8850c50db283cd8acb76" title="Determines whether this operator new or delete is one of the reserved global placement operators: voi...">isReservedGlobalPlacementOperator</a>()) {</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     assert(allocatorArgs.size() == 2);</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     RV = allocatorArgs[1].RV;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     <span class="comment">// TODO: kill any unnecessary computations done for the size</span></div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     <span class="comment">// argument.</span></div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     RV = <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(*<span class="keyword">this</span>, allocator, allocatorType, allocatorArgs);</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> </div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>   <span class="comment">// Emit a null check on the allocation result if the allocation</span></div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>   <span class="comment">// function is allowed to return null (because it has a non-throwing</span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>   <span class="comment">// exception spec; for this part, we inline</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>   <span class="comment">// CXXNewExpr::shouldNullCheckAllocation()) and we have an</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>   <span class="comment">// interesting initializer.</span></div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>   <span class="keywordtype">bool</span> nullCheck = allocatorType-><a class="code" href="classclang_1_1FunctionProtoType.html#a30284f5fb89857d1a8db2d6b06e8f477">isNothrow</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) &&</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     (!allocType.<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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) || E-><a class="code" href="classclang_1_1CXXNewExpr.html#aa6ae7ac78e40c48645f1d8d6b39fea20" title="Whether this new-expression has any initializer at all.">hasInitializer</a>());</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> </div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   llvm::BasicBlock *nullCheckBB = 0;</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   llvm::BasicBlock *contBB = 0;</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocation = 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="l01202"></a><span class="lineno"> 1202</span>   <span class="keywordtype">unsigned</span> AS = allocation->getType()->getPointerAddressSpace();</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   <span class="comment">// The null-check means that the initializer is conditionally</span></div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   <span class="comment">// evaluated.</span></div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html" title="An object to manage conditionally-evaluated expressions.">ConditionalEvaluation</a> conditional(*<span class="keyword">this</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="keywordflow">if</span> (nullCheck) {</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>     conditional.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html#a3046835ae0c0878c9a5f95904c074fd1">begin</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     nullCheckBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</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">"new.notnull"</span>);</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     contBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"new.cont"</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>     <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(allocation, <span class="stringliteral">"new.isnull"</span>);</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isNull, contBB, notNullBB);</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(notNullBB);</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   }</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> </div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>   <span class="comment">// If there's an operator delete, enter a cleanup to call it if an</span></div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="comment">// exception is thrown.</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> operatorDeleteCleanup;</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>   llvm::Instruction *cleanupDominator = 0;</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXNewExpr.html#ad595b749170e8995f3f44e43c2c7d811">getOperatorDelete</a>() &&</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       !E-><a class="code" href="classclang_1_1CXXNewExpr.html#ad595b749170e8995f3f44e43c2c7d811">getOperatorDelete</a>()-><a class="code" href="classclang_1_1FunctionDecl.html#ae3d8cdd48f4d8850c50db283cd8acb76" title="Determines whether this operator new or delete is one of the reserved global placement operators: voi...">isReservedGlobalPlacementOperator</a>()) {</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <a class="code" href="CGExprCXX_8cpp.html#a2e76f9dfdc2068d6f0ad1598e3d7d056">EnterNewDeleteCleanup</a>(*<span class="keyword">this</span>, E, allocation, allocSize, allocatorArgs);</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     operatorDeleteCleanup = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab05f975e8eb3a12ca85225dc6da12684">stable_begin</a>();</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     cleanupDominator = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</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>   assert((allocSize == allocSizeWithoutCookie) ==</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>          <a class="code" href="CGExprCXX_8cpp.html#acb1e12bedbf7c8470480334b61ab1afe">CalculateCookiePadding</a>(*<span class="keyword">this</span>, E).isZero());</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordflow">if</span> (allocSize != allocSizeWithoutCookie) {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     assert(E-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>());</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     allocation = <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#a5c0696a248150db5a76f92cea6d10ada">InitializeArrayCookie</a>(*<span class="keyword">this</span>, allocation,</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>                                                        numElements,</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>                                                        E, allocType);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   }</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> </div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   llvm::Type *elementPtrTy</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(allocType)->getPointerTo(AS);</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *result = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(allocation, elementPtrTy);</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>   <a class="code" href="CGExprCXX_8cpp.html#a411e8c22c338d5b10f9318249345f8b2">EmitNewInitializer</a>(*<span class="keyword">this</span>, E, allocType, result, numElements,</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>                      allocSizeWithoutCookie);</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXNewExpr.html#a75bbeee456e9bf2e4b2543dc906c8b79">isArray</a>()) {</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>     <span class="comment">// NewPtr is a pointer to the base element type.  If we're</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>     <span class="comment">// allocating an array of arrays, we'll need to cast back to the</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>     <span class="comment">// array pointer type.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>     llvm::Type *resultType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>     <span class="keywordflow">if</span> (result->getType() != resultType)</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>       result = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>   }</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <span class="comment">// Deactivate the 'operator delete' cleanup if we finished</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <span class="comment">// initialization.</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   <span class="keywordflow">if</span> (operatorDeleteCleanup.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html#aaaa8ff69955e285c731f5ebb9304c41d">isValid</a>()) {</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7269997253c3e7e47f864add0bdf2a0e" title="Deactive a cleanup that was created in an active state.">DeactivateCleanupBlock</a>(operatorDeleteCleanup, cleanupDominator);</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>     cleanupDominator->eraseFromParent();</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">if</span> (nullCheck) {</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     conditional.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1ConditionalEvaluation.html#af1253e4715a161f6c65791f65c9219da">end</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> </div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>     llvm::BasicBlock *notNullBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(contBB);</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> </div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     llvm::PHINode *PHI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(result->getType(), 2);</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     PHI->addIncoming(result, notNullBB);</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>     PHI->addIncoming(llvm::Constant::getNullValue(result->getType()),</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>                      nullCheckBB);</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     result = PHI;</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   }</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>   </div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> }</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> </div>
+<div class="line"><a name="l01279"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6357cadd6625f4591aa04c901bb271af"> 1279</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6357cadd6625f4591aa04c901bb271af">CodeGenFunction::EmitDeleteCall</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *DeleteFD,</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> DeleteTy) {</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   assert(DeleteFD-><a class="code" href="classclang_1_1FunctionDecl.html#add2961020f578864af81da463b72f5ae">getOverloadedOperator</a>() == OO_Delete);</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="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *DeleteFTy =</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     DeleteFD-><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="l01286"></a><span class="lineno"> 1286</span> </div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> DeleteArgs;</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> </div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   <span class="comment">// Check if we need to pass the size to the delete operator.</span></div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size = 0;</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>;</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>   <span class="keywordflow">if</span> (DeleteFTy->getNumArgs() == 2) {</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>     SizeTy = DeleteFTy->getArgType(1);</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> DeleteTypeSize = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(DeleteTy);</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     Size = llvm::ConstantInt::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(SizeTy), </div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>                                   DeleteTypeSize.<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="l01297"></a><span class="lineno"> 1297</span>   }</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   </div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgTy = DeleteFTy->getArgType(0);</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DeletePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(ArgTy));</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>   DeleteArgs.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(DeletePtr), ArgTy);</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> </div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   <span class="keywordflow">if</span> (Size)</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>     DeleteArgs.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Size), SizeTy);</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> </div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>   <span class="comment">// Emit the call to delete.</span></div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(*<span class="keyword">this</span>, DeleteFD, DeleteFTy, DeleteArgs);</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> }</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> </div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="comment">  /// Calls the given 'operator delete' on a single object.</span></div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="comment"></span>  <span class="keyword">struct </span>CallObjectDelete : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete;</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType;</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> </div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>     CallObjectDelete(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                      <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete,</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                      <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType)</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>       : Ptr(Ptr), OperatorDelete(OperatorDelete), ElementType(ElementType) {}</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</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="l01323"></a><span class="lineno"> 1323</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6357cadd6625f4591aa04c901bb271af">EmitDeleteCall</a>(OperatorDelete, Ptr, ElementType);</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>   };</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> }</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> <span class="comment"></span></div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <span class="comment">/// Emit the code for deleting a single object.</span></div>
+<div class="line"><a name="l01329"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a65cd731e9569eb43aeb8ba318fae2b28"> 1329</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#a65cd731e9569eb43aeb8ba318fae2b28" title="Emit the code for deleting a single object.">EmitObjectDelete</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete,</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>                              <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>                              <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType,</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>                              <span class="keywordtype">bool</span> UseGlobalDelete) {</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>   <span class="comment">// Find the destructor for the type, if applicable.  If the</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>   <span class="comment">// destructor is virtual, we'll just emit the vcall and return.</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</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 = 0;</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = ElementType-><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="l01338"></a><span class="lineno"> 1338</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = cast<CXXRecordDecl>(RT->getDecl());</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>     <span class="keywordflow">if</span> (RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a29a073661abb8822828dab8774075563">hasDefinition</a>() && !RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>()) {</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>       Dtor = RD-><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="l01341"></a><span class="lineno"> 1341</span> </div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>       <span class="keywordflow">if</span> (Dtor-><a class="code" href="classclang_1_1CXXMethodDecl.html#abcaff495a9ded37cbe66b06973308b62">isVirtual</a>()) {</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>         <span class="keywordflow">if</span> (UseGlobalDelete) {</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>           <span class="comment">// If we're supposed to call the global delete, make sure we do so</span></div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>           <span class="comment">// even if the destructor throws.</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>           <span class="comment">// Derive the complete-object pointer, which is what we need</span></div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>           <span class="comment">// to pass to the deallocation function.</span></div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *completePtr =</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</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#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#ae72aa2ca2fbfc826b5ed8ccd9d06a5a7">adjustToCompleteObject</a>(CGF, Ptr, ElementType);</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> </div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjectDelete>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>                                                     completePtr, OperatorDelete,</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>                                                     ElementType);</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>         }</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>         <span class="comment">// FIXME: Provide a source location here.</span></div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>         <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157" title="C++ destructor types.">CXXDtorType</a> DtorType = UseGlobalDelete ? <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a> : <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a6d0294bcd8bda68ffda82e44bd50e4e3" title="Deleting dtor.">Dtor_Deleting</a>;</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</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#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#aba0a3098ad85071da805ba38a3ff424d" title="Emit the ABI-specific virtual destructor call.">EmitVirtualDestructorCall</a>(CGF, Dtor, DtorType,</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</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>(), Ptr);</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>         <span class="keywordflow">if</span> (UseGlobalDelete) {</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9" title="Pops a cleanup block. If the block includes a normal cleanup, the current insertion point is threaded...">PopCleanupBlock</a>();</div>
+<div class="line"><a name="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="keywordflow">return</span>;</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>       }</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>     }</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>   }</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>   <span class="comment">// Make sure that we call delete even if the dtor throws.</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>   <span class="comment">// This doesn't have to a conditional cleanup because we're going</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   <span class="comment">// to pop it off in a second.</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjectDelete>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>                                             Ptr, OperatorDelete, ElementType);</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>   <span class="keywordflow">if</span> (Dtor)</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</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="l01379"></a><span class="lineno"> 1379</span>                               <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>                               <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>                               Ptr);</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>            ElementType-><a class="code" href="classclang_1_1Type.html#a51d4c15edd09e2d58c0a5342abd06307">isObjCLifetimeType</a>()) {</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     <span class="keywordflow">switch</span> (ElementType.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>()) {</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a29b319bca942e44bf183ca2749b072b3" title="There is no lifetime qualification on this type.">Qualifiers::OCL_None</a>:</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>:</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300afd7d211973aef2cc5945b96a963f0e4f" title="Assigning into this object requires a lifetime extension.">Qualifiers::OCL_Autoreleasing</a>:</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> </div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>: {</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>       <span class="comment">// Load the pointer value.</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *PtrValue = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(Ptr, </div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>                                              ElementType.<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>());</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>         </div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(PtrValue, <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a1fa599feff7af33fae2bda52a0a6a516">ARCPreciseLifetime</a>);</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>     }</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>         </div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300ad62a7a19d7027c37d407d2ca7638a89c" title="Reading or writing from this object requires a barrier call.">Qualifiers::OCL_Weak</a>:</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafb0889b796846ed4e1efa47ca06338b">EmitARCDestroyWeak</a>(Ptr);</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       <span class="keywordflow">break</span>;</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>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9" title="Pops a cleanup block. If the block includes a normal cleanup, the current insertion point is threaded...">PopCleanupBlock</a>();</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> }</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="comment">  /// Calls the given 'operator delete' on an array of objects.</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> <span class="comment"></span>  <span class="keyword">struct </span>CallArrayDelete : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr;</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete;</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> CookieSize;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> </div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>     CallArrayDelete(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr,</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>                     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *OperatorDelete,</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>                     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NumElements,</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>                     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType,</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>                     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> CookieSize)</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       : Ptr(Ptr), OperatorDelete(OperatorDelete), NumElements(NumElements),</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>         ElementType(ElementType), CookieSize(CookieSize) {}</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     <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="l01426"></a><span class="lineno"> 1426</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *DeleteFTy =</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>         OperatorDelete->getType()-><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="l01428"></a><span class="lineno"> 1428</span>       assert(DeleteFTy-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == 1 || DeleteFTy-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == 2);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> </div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</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="l01431"></a><span class="lineno"> 1431</span>       </div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>       <span class="comment">// Pass the pointer as the first argument.</span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> VoidPtrTy = DeleteFTy-><a class="code" href="classclang_1_1FunctionProtoType.html#ab515293e3ef4f959921927dd03dcf085">getArgType</a>(0);</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DeletePtr</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>         = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Ptr, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(VoidPtrTy));</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>       Args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(DeletePtr), VoidPtrTy);</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">// Pass the original requested size as the second argument.</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>       <span class="keywordflow">if</span> (DeleteFTy-><a class="code" href="classclang_1_1FunctionProtoType.html#a3bf15e11417c0547307698e6b3fc8772">getNumArgs</a>() == 2) {</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>         <a class="code" href="classclang_1_1QualType.html">QualType</a> <span class="keywordtype">size_t</span> = DeleteFTy-><a class="code" href="classclang_1_1FunctionProtoType.html#ab515293e3ef4f959921927dd03dcf085">getArgType</a>(1);</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>         llvm::IntegerType *SizeTy</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>           = cast<llvm::IntegerType>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(<span class="keywordtype">size_t</span>));</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>         </div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>         <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> ElementTypeSize =</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</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#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(ElementType);</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> </div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>         <span class="comment">// The size of an element, multiplied by the number of elements.</span></div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>           = llvm::ConstantInt::get(SizeTy, ElementTypeSize.getQuantity());</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>         Size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMul(Size, NumElements);</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> </div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>         <span class="comment">// Plus the size of the cookie if applicable.</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>         <span class="keywordflow">if</span> (!CookieSize.isZero()) {</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CookieSizeV</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>             = llvm::ConstantInt::get(SizeTy, CookieSize.getQuantity());</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>           Size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAdd(Size, CookieSizeV);</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>         }</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> </div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>         Args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(Size), <span class="keywordtype">size_t</span>);</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>       }</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>       <span class="comment">// Emit the call to delete.</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>       <a class="code" href="CGExprCXX_8cpp.html#a12bd804f80d533b624cf0bed891dbd21">EmitNewDeleteCall</a>(CGF, OperatorDelete, DeleteFTy, Args);</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>     }</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   };</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> }</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="comment"></span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="comment">/// Emit the code for deleting an array of objects.</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#ab74d0213116f8de9d68962301d859d0d"> 1469</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#ab74d0213116f8de9d68962301d859d0d" title="Emit the code for deleting an array of objects.">EmitArrayDelete</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDeleteExpr.html" title="Represents a delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray"...">CXXDeleteExpr</a> *E,</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>                             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *deletedPtr,</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>                             <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType) {</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *numElements = 0;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *allocatedPtr = 0;</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> cookieSize;</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</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#abcced6119cfc90ff6332ec96766ff70a">getCXXABI</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGCXXABI.html#a5f0031634bf233f2b3f5537f43b3f8ca">ReadArrayCookie</a>(CGF, deletedPtr, E, elementType,</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>                                       numElements, allocatedPtr, cookieSize);</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   assert(allocatedPtr && <span class="stringliteral">"ReadArrayCookie didn't set allocated pointer"</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="comment">// Make sure that we call delete even if one of the dtors throws.</span></div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *operatorDelete = E-><a class="code" href="classclang_1_1CXXDeleteExpr.html#ad14ef548fa19e67ee61bf01652db0312">getOperatorDelete</a>();</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallArrayDelete>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>                                            allocatedPtr, operatorDelete,</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>                                            numElements, elementType,</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>                                            cookieSize);</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="comment">// Destroy the elements.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = elementType.isDestructedType()) {</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>     assert(numElements && <span class="stringliteral">"no element count for a type with a destructor!"</span>);</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEnd =</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(deletedPtr, numElements, <span class="stringliteral">"delete.end"</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>     <span class="comment">// Note that it is legal to allocate a zero-length array, and we</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>     <span class="comment">// can never fold the check away because the length should always</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>     <span class="comment">// come from a cookie.</span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23541801eeae0273a8b6c468496baf1">emitArrayDestroy</a>(deletedPtr, arrayEnd, elementType,</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>                          CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind),</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>                          <span class="comment">/*checkZeroLength*/</span> <span class="keyword">true</span>,</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>                          CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab5de8b85a1f54e0dd9d5dce5527faf23">needsEHCleanup</a>(dtorKind));</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>   }</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   <span class="comment">// Pop the cleanup block.</span></div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9" title="Pops a cleanup block. If the block includes a normal cleanup, the current insertion point is threaded...">PopCleanupBlock</a>();</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> }</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> </div>
+<div class="line"><a name="l01508"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ef7df0a45259ed230e44be87d557bb8"> 1508</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ef7df0a45259ed230e44be87d557bb8">CodeGenFunction::EmitCXXDeleteExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDeleteExpr.html" title="Represents a delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray"...">CXXDeleteExpr</a> *E) {</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Arg = E-><a class="code" href="classclang_1_1CXXDeleteExpr.html#a4209bf12d646451c7206292e454c05f9">getArgument</a>();</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(Arg);</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> </div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>   <span class="comment">// Null check the pointer.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>   llvm::BasicBlock *DeleteNotNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"delete.notnull"</span>);</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>   llvm::BasicBlock *DeleteEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"delete.end"</span>);</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> </div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   <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(Ptr, <span class="stringliteral">"isnull"</span>);</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> </div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsNull, DeleteEnd, DeleteNotNull);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(DeleteNotNull);</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> </div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   <span class="comment">// We might be deleting a pointer to array.  If so, GEP down to the</span></div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="comment">// first non-array element.</span></div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>   <span class="comment">// (this assumes that A(*)[3][7] is converted to [3 x [7 x %A]]*)</span></div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DeleteTy = Arg-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>   <span class="keywordflow">if</span> (DeleteTy-><a class="code" href="classclang_1_1Type.html#a8d3adfc31904ddd5a944cea189750f10">isConstantArrayType</a>()) {</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Zero = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt32(0);</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*,8></a> GEP;</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> </div>
+<div class="line"><a name="l