[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="l01529"></a><span class="lineno"> 1529</span> GEP.push_back(Zero); <span class="comment">// point at the outermost array</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="comment">// For each layer of array type we're pointing at:</span></div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConstantArrayType.html">ConstantArrayType</a> *Arr</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getAsConstantArrayType(DeleteTy)) {</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <span class="comment">// 1. Unpeel the array type.</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> DeleteTy = Arr->getElementType();</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> </div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="comment">// 2. GEP to the first element of the array.</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> GEP.push_back(Zero);</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> }</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> </div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> Ptr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(Ptr, GEP, <span class="stringliteral">"del.first"</span>);</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> }</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> </div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(DeleteTy) ==</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> cast<llvm::PointerType>(Ptr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>());</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXDeleteExpr.html#ac50285cb77af48b7a4a574f85ab70370">isArrayForm</a>()) {</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> <a class="code" href="CGExprCXX_8cpp.html#ab74d0213116f8de9d68962301d859d0d" title="Emit the code for deleting an array of objects.">EmitArrayDelete</a>(*<span class="keyword">this</span>, E, Ptr, DeleteTy);</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <a class="code" href="CGExprCXX_8cpp.html#a65cd731e9569eb43aeb8ba318fae2b28" title="Emit the code for deleting a single object.">EmitObjectDelete</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1CXXDeleteExpr.html#ad14ef548fa19e67ee61bf01652db0312">getOperatorDelete</a>(), Ptr, DeleteTy,</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> E-><a class="code" href="classclang_1_1CXXDeleteExpr.html#a59a8b312e0f90e1e14ed4c7ac05b4ac6">isGlobalDelete</a>());</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> }</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> </div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(DeleteEnd);</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> }</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> </div>
+<div class="line"><a name="l01557"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#aa530191c47532928f2d1cad63df0b96d"> 1557</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGExprCXX_8cpp.html#aa530191c47532928f2d1cad63df0b96d">getBadTypeidFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="comment">// void __cxa_bad_typeid();</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> llvm::FunctionType *FTy = llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> </div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <span class="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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_bad_typeid"</span>);</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> }</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> </div>
+<div class="line"><a name="l01564"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#afa81df577de46b430a802f754d9e549e"> 1564</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#afa81df577de46b430a802f754d9e549e">EmitBadTypeidCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Fn = <a class="code" href="CGExprCXX_8cpp.html#aa530191c47532928f2d1cad63df0b96d">getBadTypeidFn</a>(CGF);</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">EmitRuntimeCallOrInvoke</a>(Fn).setDoesNotReturn();</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> }</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> </div>
+<div class="line"><a name="l01570"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a14449e81fe5f1f881b9af02831677a3e"> 1570</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#a14449e81fe5f1f881b9af02831677a3e">EmitTypeidFromVTable</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E, </div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> llvm::Type *StdTypeInfoPtrTy) {</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> <span class="comment">// Get the vtable pointer.</span></div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ThisPtr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(E).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> <span class="comment">// C++ [expr.typeid]p2:</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span> <span class="comment">// If the glvalue expression is obtained by applying the unary * operator to</span></div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> <span class="comment">// a pointer and the pointer is a null pointer value, the typeid expression</span></div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> <span class="comment">// throws the std::bad_typeid exception.</span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UO = dyn_cast<UnaryOperator>(E-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>())) {</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="keywordflow">if</span> (UO->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>) {</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> llvm::BasicBlock *BadTypeidBlock = </div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"typeid.bad_typeid"</span>);</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> llvm::BasicBlock *EndBlock =</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"typeid.end"</span>);</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> </div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsNull = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(ThisPtr);</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsNull, BadTypeidBlock, EndBlock);</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> </div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(BadTypeidBlock);</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <a class="code" href="CGExprCXX_8cpp.html#afa81df577de46b430a802f754d9e549e">EmitBadTypeidCall</a>(CGF);</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(EndBlock);</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> }</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> }</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> </div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">GetVTablePtr</a>(ThisPtr, </div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> StdTypeInfoPtrTy->getPointerTo());</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> </div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> <span class="comment">// Load the type info.</span></div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> Value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(Value, -1ULL);</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(Value);</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> }</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span> </div>
+<div class="line"><a name="l01604"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#affb497fd7ee89ab9d8616aadbc3806f6"> 1604</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#affb497fd7ee89ab9d8616aadbc3806f6">CodeGenFunction::EmitCXXTypeidExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXTypeidExpr.html">CXXTypeidExpr</a> *E) {</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> llvm::Type *StdTypeInfoPtrTy = </div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>())->getPointerTo();</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> </div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXTypeidExpr.html#a54ab547b1f12d0ee3af3ccb4ca861b6f">isTypeOperand</a>()) {</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> llvm::Constant *<a class="code" href="structTypeInfo.html">TypeInfo</a> =</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a26dd0d4d938af486c3ed61a04cf97ed5">GetAddrOfRTTIDescriptor</a>(E-><a class="code" href="classclang_1_1CXXTypeidExpr.html#a3be51cac1516c522f18009a491204695" title="Retrieves the type operand of this typeid() expression after various required adjustments (removing r...">getTypeOperand</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()));</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(TypeInfo, StdTypeInfoPtrTy);</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> }</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> </div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> <span class="comment">// C++ [expr.typeid]p2:</span></div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span> <span class="comment">// When typeid is applied to a glvalue expression whose type is a</span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> <span class="comment">// polymorphic class type, the result refers to a std::type_info object</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> <span class="comment">// representing the type of the most derived object (that is, the dynamic</span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> <span class="comment">// type) to which the glvalue refers.</span></div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> <span class="keywordflow">if</span> (E-><a class="code" href="classclang_1_1CXXTypeidExpr.html#a3509c6f7ba4f880d36e86ad84463f9d4">isPotentiallyEvaluated</a>())</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> <span class="keywordflow">return</span> <a class="code" href="CGExprCXX_8cpp.html#a14449e81fe5f1f881b9af02831677a3e">EmitTypeidFromVTable</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1CXXTypeidExpr.html#ac64242641749efe7dbe14e7727cab6d8">getExprOperand</a>(), </div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> StdTypeInfoPtrTy);</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> </div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> OperandTy = E-><a class="code" href="classclang_1_1CXXTypeidExpr.html#ac64242641749efe7dbe14e7727cab6d8">getExprOperand</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a26dd0d4d938af486c3ed61a04cf97ed5">GetAddrOfRTTIDescriptor</a>(OperandTy),</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> StdTypeInfoPtrTy);</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> }</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div>
+<div class="line"><a name="l01628"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a5464484894db774a8f616657c9ca526b"> 1628</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGExprCXX_8cpp.html#a5464484894db774a8f616657c9ca526b">getDynamicCastFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="comment">// void *__dynamic_cast(const void *sub,</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="comment">// const abi::__class_type_info *src,</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="comment">// const abi::__class_type_info *dst,</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="comment">// std::ptrdiff_t src2dst_offset);</span></div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> llvm::Type *Int8PtrTy = CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>;</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> llvm::Type *PtrDiffTy = </div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abdf7588b14d9fa2a1ee40900a0253885" title="Return the unique type for "ptrdiff_t" (C99 7.17) defined in <stddef.h>. Pointer - pointer requires t...">getPointerDiffType</a>());</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> </div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> llvm::Type *Args[4] = { Int8PtrTy, Int8PtrTy, Int8PtrTy, PtrDiffTy };</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> llvm::FunctionType *FTy = llvm::FunctionType::get(Int8PtrTy, Args, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="comment">// Mark the function as nounwind readonly.</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> llvm::Attribute::AttrKind FuncAttrs[] = { llvm::Attribute::NoUnwind,</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> llvm::Attribute::ReadOnly };</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> llvm::AttributeSet Attrs = llvm::AttributeSet::get(</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), llvm::AttributeSet::FunctionIndex, FuncAttrs);</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> </div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> <span class="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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__dynamic_cast"</span>, Attrs);</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> }</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> </div>
+<div class="line"><a name="l01651"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a11a2b77ff721796b27a1832e5bd4948b"> 1651</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGExprCXX_8cpp.html#a11a2b77ff721796b27a1832e5bd4948b">getBadCastFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <span class="comment">// void __cxa_bad_cast();</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> llvm::FunctionType *FTy = llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_bad_cast"</span>);</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> }</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div>
+<div class="line"><a name="l01657"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#ae4060f311bf02139043129c4867f65b6"> 1657</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGExprCXX_8cpp.html#ae4060f311bf02139043129c4867f65b6">EmitBadCastCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Fn = <a class="code" href="CGExprCXX_8cpp.html#a11a2b77ff721796b27a1832e5bd4948b">getBadCastFn</a>(CGF);</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">EmitRuntimeCallOrInvoke</a>(Fn).setDoesNotReturn();</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> }</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> <span class="comment"></span></div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> <span class="comment">/// \brief Compute the src2dst_offset hint as described in the</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="comment">/// Itanium C++ ABI [2.9.7]</span></div>
+<div class="line"><a name="l01665"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a7b7a2366fc1bfb621048a232d2ec8da4"> 1665</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="CGExprCXX_8cpp.html#a7b7a2366fc1bfb621048a232d2ec8da4" title="Compute the src2dst_offset hint as described in the Itanium C++ ABI [2.9.7].">computeOffsetHint</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Src,</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Dst) {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> <a class="code" href="classclang_1_1CXXBasePaths.html">CXXBasePaths</a> Paths(<span class="comment">/*FindAmbiguities=*/</span><span class="keyword">true</span>, <span class="comment">/*RecordPaths=*/</span><span class="keyword">true</span>,</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span> <span class="comment">/*DetectVirtual=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> </div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> <span class="comment">// If Dst is not derived from Src we can skip the whole computation below and</span></div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> <span class="comment">// return that Src is not a public base of Dst. Record all inheritance paths.</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <span class="keywordflow">if</span> (!Dst-><a class="code" href="classclang_1_1CXXRecordDecl.html#ab065f55f6647e1e17ffd643be36b64ad" title="Determine whether this class is derived from the class Base.">isDerivedFrom</a>(Src, Paths))</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(-2ULL);</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span> </div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> <span class="keywordtype">unsigned</span> NumPublicPaths = 0;</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> </div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="comment">// Now walk all possible inheritance paths.</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBasePaths.html#a715620c290cafe5c5e76e38c291d0367">CXXBasePaths::paths_iterator</a> I = Paths.<a class="code" href="classclang_1_1CXXBasePaths.html#a2ffc670a3f2252e2348a5685740b1b59">begin</a>(), E = Paths.<a class="code" href="classclang_1_1CXXBasePaths.html#a3ff4746eb6460f4165d48f2a8d0887e1">end</a>();</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> I != E; ++I) {</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="keywordflow">if</span> (I->Access != <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa163ae3a419460301961bc458f8f01fd3">AS_public</a>) <span class="comment">// Ignore non-public inheritance.</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> </div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> ++NumPublicPaths;</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span> </div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> <span class="keywordflow">for</span> (CXXBasePath::iterator J = I->begin(), JE = I->end(); J != JE; ++J) {</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="comment">// If the path contains a virtual base class we can't give any hint.</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="comment">// -1: no hint.</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> <span class="keywordflow">if</span> (J->Base->isVirtual())</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(-1ULL);</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> </div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> <span class="keywordflow">if</span> (NumPublicPaths > 1) <span class="comment">// Won't use offsets, skip computation.</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> </div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> <span class="comment">// Accumulate the base class offsets.</span></div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> &L = Context.<a class="code" href="classclang_1_1ASTContext.html#a47d9de77f967abb78dd8d1b8228a0d2a" title="Get or compute information about the layout of the specified record (struct/union/class) D...">getASTRecordLayout</a>(J->Class);</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> Offset += L.<a class="code" href="classclang_1_1ASTRecordLayout.html#a23d0a748e9b3b4515c23c5f9beabb2d7" title="getBaseClassOffset - Get the offset, in chars, for the given base class.">getBaseClassOffset</a>(J->Base->getType()->getAsCXXRecordDecl());</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> }</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span> }</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> </div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span> <span class="comment">// -2: Src is not a public base of Dst.</span></div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> <span class="keywordflow">if</span> (NumPublicPaths == 0)</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(-2ULL);</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span> </div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span> <span class="comment">// -3: Src is a multiple public base type but never a virtual base type.</span></div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> <span class="keywordflow">if</span> (NumPublicPaths > 1)</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(-3ULL);</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> </div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="comment">// Otherwise, the Src type is a unique public nonvirtual base type of Dst.</span></div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> <span class="comment">// Return the offset of Src from the origin of Dst.</span></div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> }</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> </div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> <span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l01716"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a5159cf96f5a50f82272a7da385b7cb4d"> 1716</a></span> <a class="code" href="CGExprCXX_8cpp.html#a5159cf96f5a50f82272a7da385b7cb4d">EmitDynamicCastCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>,</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy, <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy,</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> llvm::BasicBlock *CastEnd) {</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> llvm::Type *PtrDiffLTy = </div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abdf7588b14d9fa2a1ee40900a0253885" title="Return the unique type for "ptrdiff_t" (C99 7.17) defined in <stddef.h>. Pointer - pointer requires t...">getPointerDiffType</a>());</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> llvm::Type *DestLTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(DestTy);</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> </div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PTy = DestTy-><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="l01724"></a><span class="lineno"> 1724</span> <span class="keywordflow">if</span> (PTy->getPointeeType()->isVoidType()) {</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> <span class="comment">// C++ [expr.dynamic.cast]p7:</span></div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <span class="comment">// If T is "pointer to cv void," then the result is a pointer to the</span></div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="comment">// most derived object pointed to by v.</span></div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> </div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="comment">// Get the vtable pointer.</span></div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *VTable = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad121e5b11699b9db4078d97eb63b3272">GetVTablePtr</a>(Value, PtrDiffLTy->getPointerTo());</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="comment">// Get the offset-to-top from the vtable.</span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OffsetToTop = </div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstInBoundsGEP1_64(VTable, -2ULL);</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> OffsetToTop = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(OffsetToTop, <span class="stringliteral">"offset.to.top"</span>);</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> <span class="comment">// Finally, add the offset to the pointer.</span></div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> Value = 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>(Value);</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> Value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(Value, OffsetToTop);</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> </div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, DestLTy);</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> }</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> }</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> </div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcRecordTy;</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> DestRecordTy;</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> </div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *DestPTy = DestTy-><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="l01749"></a><span class="lineno"> 1749</span> SrcRecordTy = SrcTy-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> DestRecordTy = DestPTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> SrcRecordTy = SrcTy;</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> DestRecordTy = DestTy-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()->getPointeeType();</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> }</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span> </div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> assert(SrcRecordTy-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() && <span class="stringliteral">"source type must be a record type!"</span>);</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> assert(DestRecordTy-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>() && <span class="stringliteral">"dest type must be a record type!"</span>);</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> </div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcRTTI =</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</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#a26dd0d4d938af486c3ed61a04cf97ed5">GetAddrOfRTTIDescriptor</a>(SrcRecordTy.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>());</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestRTTI =</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</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#a26dd0d4d938af486c3ed61a04cf97ed5">GetAddrOfRTTIDescriptor</a>(DestRecordTy.<a class="code" href="classclang_1_1QualType.html#a5ddbce9d32b4f8043b641584599fe7e5" title="Retrieve the unqualified variant of the given type, removing as little sugar as possible.">getUnqualifiedType</a>());</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> </div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> <span class="comment">// Compute the offset hint.</span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *SrcDecl = SrcRecordTy-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DestDecl = DestRecordTy-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *OffsetHint =</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> llvm::ConstantInt::get(PtrDiffLTy,</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> <a class="code" href="CGExprCXX_8cpp.html#a7b7a2366fc1bfb621048a232d2ec8da4" title="Compute the src2dst_offset hint as described in the Itanium C++ ABI [2.9.7].">computeOffsetHint</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), SrcDecl,</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span> DestDecl).getQuantity());</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> </div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <span class="comment">// Emit the call to __dynamic_cast.</span></div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> Value = 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>(Value);</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *args[] = { <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>, SrcRTTI, DestRTTI, OffsetHint };</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> Value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CGExprCXX_8cpp.html#a5464484894db774a8f616657c9ca526b">getDynamicCastFn</a>(CGF), args);</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> Value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Value, DestLTy);</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="comment"></span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> <span class="comment"> /// C++ [expr.dynamic.cast]p9:</span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> <span class="comment"> /// A failed cast to reference type throws std::bad_cast</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> <span class="comment"></span> <span class="keywordflow">if</span> (DestTy-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> llvm::BasicBlock *BadCastBlock = </div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dynamic_cast.bad_cast"</span>);</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> </div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsNull = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(Value);</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsNull, BadCastBlock, CastEnd);</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> </div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(BadCastBlock);</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> <a class="code" href="CGExprCXX_8cpp.html#ae4060f311bf02139043129c4867f65b6">EmitBadCastCall</a>(CGF);</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> }</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span> </div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> }</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> </div>
+<div class="line"><a name="l01795"></a><span class="lineno"><a class="code" href="CGExprCXX_8cpp.html#a791ef67b9babf40aeb38c523e1acf212"> 1795</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#a791ef67b9babf40aeb38c523e1acf212">EmitDynamicCastToNull</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy) {</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span> llvm::Type *DestLTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(DestTy);</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> <span class="keywordflow">if</span> (DestTy-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>())</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> <span class="keywordflow">return</span> llvm::Constant::getNullValue(DestLTy);</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> <span class="comment"></span></div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> <span class="comment"> /// C++ [expr.dynamic.cast]p9:</span></div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> <span class="comment"> /// A failed cast to reference type throws std::bad_cast</span></div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> <span class="comment"></span> <a class="code" href="CGExprCXX_8cpp.html#ae4060f311bf02139043129c4867f65b6">EmitBadCastCall</a>(CGF);</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> </div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dynamic_cast.end"</span>));</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> <span class="keywordflow">return</span> llvm::UndefValue::get(DestLTy);</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> }</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span> </div>
+<div class="line"><a name="l01809"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a92592072e447e5f285c8a95da9f447ce"> 1809</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a92592072e447e5f285c8a95da9f447ce">CodeGenFunction::EmitDynamicCast</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>,</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDynamicCastExpr.html" title="A C++ dynamic_cast expression (C++ [expr.dynamic.cast]).">CXXDynamicCastExpr</a> *DCE) {</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy = DCE-><a class="code" href="classclang_1_1ExplicitCastExpr.html#ac788ee017b63929c45cf3883910c1adb">getTypeAsWritten</a>();</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> </div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span> <span class="keywordflow">if</span> (DCE-><a class="code" href="classclang_1_1CXXDynamicCastExpr.html#ac0712f2fddd4e48258c20147a7b95542">isAlwaysNull</a>())</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> <span class="keywordflow">return</span> <a class="code" href="CGExprCXX_8cpp.html#a791ef67b9babf40aeb38c523e1acf212">EmitDynamicCastToNull</a>(*<span class="keyword">this</span>, DestTy);</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> </div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy = DCE-><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="l01817"></a><span class="lineno"> 1817</span> </div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> <span class="comment">// C++ [expr.dynamic.cast]p4: </span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> <span class="comment">// If the value of v is a null pointer value in the pointer case, the result</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> <span class="comment">// is the null pointer value of type T.</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> <span class="keywordtype">bool</span> ShouldNullCheckSrcValue = SrcTy-><a class="code" href="classclang_1_1Type.html#a1c0038a55083ee0a292a020038ee04d8">isPointerType</a>();</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span> </div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span> llvm::BasicBlock *CastNull = 0;</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> llvm::BasicBlock *CastNotNull = 0;</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> llvm::BasicBlock *CastEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dynamic_cast.end"</span>);</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> </div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> <span class="keywordflow">if</span> (ShouldNullCheckSrcValue) {</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> CastNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dynamic_cast.null"</span>);</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> CastNotNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"dynamic_cast.notnull"</span>);</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> </div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *IsNull = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateIsNull(Value);</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(IsNull, CastNull, CastNotNull);</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastNotNull);</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> }</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span> </div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> Value = <a class="code" href="CGExprCXX_8cpp.html#a5159cf96f5a50f82272a7da385b7cb4d">EmitDynamicCastCall</a>(*<span class="keyword">this</span>, Value, SrcTy, DestTy, CastEnd);</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> </div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> <span class="keywordflow">if</span> (ShouldNullCheckSrcValue) {</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd75804886d9542735d748f04de9efa1">EmitBranch</a>(CastEnd);</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> </div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastNull);</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd75804886d9542735d748f04de9efa1">EmitBranch</a>(CastEnd);</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span> }</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span> </div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(CastEnd);</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> </div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> <span class="keywordflow">if</span> (ShouldNullCheckSrcValue) {</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> llvm::PHINode *PHI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(Value->getType(), 2);</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> PHI->addIncoming(Value, CastNotNull);</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> PHI->addIncoming(llvm::Constant::getNullValue(Value->getType()), CastNull);</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> </div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> Value = PHI;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> }</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> </div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> }</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div>
+<div class="line"><a name="l01858"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a11305d4b940e2aa9f49b473684109f75"> 1858</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a11305d4b940e2aa9f49b473684109f75">CodeGenFunction::EmitLambdaExpr</a>(<span class="keyword">const</span> <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, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html" title="An aggregate value slot.">AggValueSlot</a> Slot) {</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</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="l01860"></a><span class="lineno"> 1860</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> SlotLV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(Slot.<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="l01861"></a><span class="lineno"> 1861</span> Slot.<a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#aa5d53b15df7b1ba6aa715d1faef684c2">getAlignment</a>());</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">CXXRecordDecl::field_iterator</a> CurField = E-><a class="code" href="classclang_1_1LambdaExpr.html#ab5dc69e96c52eb4c2c33e03c46f2ff82" title="Retrieve the class that corresponds to the lambda.">getLambdaClass</a>()-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>();</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Expr.html">LambdaExpr::capture_init_iterator</a> i = E-><a class="code" href="classclang_1_1LambdaExpr.html#a78bc285bd008868a6d924f4a71c76843" title="Retrieve the first initialization argument for this lambda expression (which initializes the first ca...">capture_init_begin</a>(),</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> e = E-><a class="code" href="classclang_1_1LambdaExpr.html#a93fc2d1ac800ec5316a2d24c7dde0263" title="Retrieve the iterator pointing one past the last initialization argument for this lambda expression...">capture_init_end</a>();</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> i != e; ++i, ++CurField) {</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> <span class="comment">// Emit initialization</span></div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> </div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e2d33cb4583cb128c964a56c1ebd141">EmitLValueForFieldInitialization</a>(SlotLV, *CurField);</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<VarDecl *></a> ArrayIndexes;</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> <span class="keywordflow">if</span> (CurField->getType()->isArrayType())</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> ArrayIndexes = E-><a class="code" href="classclang_1_1LambdaExpr.html#af02869db28736e370f71719d2ac05b64" title="Retrieve the set of index variables used in the capture initializer of an array captured by copy...">getCaptureInitIndexVars</a>(i);</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac2b20cd86aba5f55c93e263aa9f02c6c">EmitInitializerForField</a>(*CurField, LV, *i, ArrayIndexes);</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> }</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</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/CGExprCXX_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGExprCXX_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,675 @@
+<!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.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">CGExprCXX.d</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGExprCXX_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/CGExprCXX.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGExprCXX.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> CGExprCXX.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 CGCUDARuntime.h \
+ CGCXXABI.h CGObjCRuntime.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen \</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> /home/tstellar/llvm/include/llvm/Support/CallSite.h</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> CodeGenFunction.h:</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> CGBuilder.h:</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> /home/tstellar/llvm/include/llvm/ADT/None.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/ADT/SmallVector.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/Support/AlignOf.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/Support/Compiler.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/Config/llvm-config.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/MathExtras.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/SwapByteOrder.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/Support/DataTypes.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/type_traits.h:</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.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/ADT/Twine.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/ErrorHandling.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/IR/BasicBlock.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/ilist.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/IR/Instruction.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/ADT/ilist_node.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/IR/User.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/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.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/IR/Use.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/ADT/PointerIntPair.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/Support/PointerLikeTypeTraits.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/Support/CBindingWrapping.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/Support/Casting.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-c/Core.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/DebugLoc.h:</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> /home/tstellar/llvm/include/llvm/IR/Instruction.def:</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.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/IR/DataLayout.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/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.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/DerivedTypes.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/IR/Type.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/APFloat.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/ADT/APInt.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/Pass.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/PassSupport.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/Pass.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/InitializePasses.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/PassRegistry.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/Support/Atomic.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/Support/Valgrind.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/PassAnalysisSupport.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/IR/Instructions.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/IR/Attributes.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/ADT/FoldingSet.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/<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="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/InstrTypes.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/IR/OperandTraits.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/LLVMContext.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/Operator.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/Constants.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/Constant.h:</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.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/Support/ValueHandle.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> CGDebugInfo.h:</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.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/AST/ASTVector.h:</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.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/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/Decl.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/DeclBase.h:</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.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/Basic/OperatorKinds.def:</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/TokenKinds.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/TokenKinds.def:</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.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/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.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/DiagnosticCommonKinds.inc:</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/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</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/SourceLocation.h:</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.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/<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="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/Specifiers.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/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.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/Redeclarable.h:</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.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/NestedNameSpecifier.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/TemplateName.h:</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<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="l00388"></a><span class="lineno"> 388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<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="l00390"></a><span class="lineno"> 390</span> </div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</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/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.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/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.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/system_error.h:</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.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/DeclGroup.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/StmtIterator.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/Basic/CapturedStmt.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/StmtNodes.inc:</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/TemplateBase.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/CharInfo.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/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</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/Frontend/CodeGenOptions.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/Frontend/CodeGenOptions.def:</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/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> /home/tstellar/llvm/include/llvm/DebugInfo.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/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> /home/tstellar/llvm/include/llvm/IR/Metadata.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/Support/Dwarf.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> CGValue.h:</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.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/TypeLoc.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/TypeLocNodes.def:</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/CanonicalType.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/CommentCommandTraits.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/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</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/PrettyPrinter.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/LangOptions.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/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.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/include/llvm/ADT/Triple.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/Sanitizers.def:</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/LangOptions.def:</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/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</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/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.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/include/llvm/ADT/DenseSet.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/include/llvm/Support/MemoryBuffer.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/AddressSpaces.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/TinyPtrVector.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> EHScopeStack.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> CodeGenModule.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> CGVTables.h:</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> </div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h:</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h:</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.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/ASTUnresolvedSet.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/UnresolvedSet.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/ExprCXX.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/Basic/ExpressionTraits.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/Basic/Lambda.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/DeclObjC.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/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="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/ABI.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/VTableBuilder.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/CXXInheritance.h:</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.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/include/llvm/ADT/MapVector.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/include/llvm/ADT/SmallSet.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/RecordLayout.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/SetVector.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/IR/GlobalVariable.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/include/llvm/IR/GlobalValue.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> CodeGenTypes.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> CGCall.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> ABIInfo.h:</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h:</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> /home/tstellar/llvm/include/llvm/IR/Module.h:</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> /home/tstellar/llvm/include/llvm/IR/Function.h:</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> /home/tstellar/llvm/include/llvm/IR/Argument.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/GlobalAlias.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/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.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/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.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/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</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/include/llvm/ADT/StringSwitch.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/AST/Attrs.inc:</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/AST/Mangle.h:</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h:</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.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/TargetInfo.h:</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.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/include/llvm/Support/Debug.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> CGCUDARuntime.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> CGCXXABI.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> CGObjCRuntime.h:</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.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/include/llvm/IR/Intrinsics.gen:</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/include/llvm/Support/CallSite.h:</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</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>
More information about the llvm-commits
mailing list