[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/CGDecl_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1821 @@
+<!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: CGDecl.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">CGDecl.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGDecl_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">//===--- CGDecl.cpp - Emit LLVM Code for declarations ---------------------===//</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 Decl 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="CGDebugInfo_8h.html">CGDebugInfo.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGOpenCLRuntime_8h.html">CGOpenCLRuntime.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</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="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CharUnits_8h.html">clang/AST/CharUnits.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Decl_8h.html">clang/AST/Decl.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">clang/Basic/TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="CodeGenOptions_8h.html">clang/Frontend/CodeGenOptions.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/IR/DataLayout.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/IR/GlobalVariable.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/IR/Type.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2a10cf05472de88a4696d91357a80b27">   34</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2a10cf05472de88a4696d91357a80b27">CodeGenFunction::EmitDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> &D) {</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordflow">switch</span> (D.<a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>()) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keywordflow">case</span> Decl::TranslationUnit:</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordflow">case</span> Decl::Namespace:</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordflow">case</span> Decl::UnresolvedUsingTypename:</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keywordflow">case</span> Decl::ClassTemplateSpecialization:</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keywordflow">case</span> Decl::ClassTemplatePartialSpecialization:</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">case</span> Decl::VarTemplateSpecialization:</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">case</span> Decl::VarTemplatePartialSpecialization:</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">case</span> Decl::TemplateTypeParm:</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">case</span> Decl::UnresolvedUsingValue:</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordflow">case</span> Decl::NonTypeTemplateParm:</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keywordflow">case</span> Decl::CXXMethod:</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordflow">case</span> Decl::CXXConstructor:</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordflow">case</span> Decl::CXXDestructor:</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">case</span> Decl::CXXConversion:</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordflow">case</span> Decl::Field:</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keywordflow">case</span> Decl::MSProperty:</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">case</span> Decl::IndirectField:</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordflow">case</span> Decl::ObjCIvar:</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">case</span> Decl::ObjCAtDefsField:</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordflow">case</span> Decl::ParmVar:</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keywordflow">case</span> Decl::ImplicitParam:</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordflow">case</span> Decl::ClassTemplate:</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">case</span> Decl::VarTemplate:</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordflow">case</span> Decl::FunctionTemplate:</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">case</span> Decl::TypeAliasTemplate:</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordflow">case</span> Decl::TemplateTemplateParm:</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">case</span> Decl::ObjCMethod:</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordflow">case</span> Decl::ObjCCategory:</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordflow">case</span> Decl::ObjCProtocol:</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordflow">case</span> Decl::ObjCInterface:</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <span class="keywordflow">case</span> Decl::ObjCCategoryImpl:</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordflow">case</span> Decl::ObjCImplementation:</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">case</span> Decl::ObjCProperty:</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordflow">case</span> Decl::ObjCCompatibleAlias:</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">case</span> Decl::AccessSpec:</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordflow">case</span> Decl::LinkageSpec:</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keywordflow">case</span> Decl::ObjCPropertyImpl:</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <span class="keywordflow">case</span> Decl::FileScopeAsm:</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">case</span> Decl::Friend:</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordflow">case</span> Decl::FriendTemplate:</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   <span class="keywordflow">case</span> Decl::Block:</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keywordflow">case</span> Decl::Captured:</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <span class="keywordflow">case</span> Decl::ClassScopeFunctionSpecialization:</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">case</span> Decl::UsingShadow:</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     llvm_unreachable(<span class="stringliteral">"Declaration should not be in declstmts!"</span>);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <span class="keywordflow">case</span> Decl::Function:  <span class="comment">// void X();</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">case</span> Decl::Record:    <span class="comment">// struct/union/class X;</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">case</span> Decl::Enum:      <span class="comment">// enum X;</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keywordflow">case</span> Decl::EnumConstant: <span class="comment">// enum ? { X = ? }</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   <span class="keywordflow">case</span> Decl::CXXRecord: <span class="comment">// struct/union/class X; [C++]</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">case</span> Decl::StaticAssert: <span class="comment">// static_assert(X, ""); [C++0x]</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>   <span class="keywordflow">case</span> Decl::Label:        <span class="comment">// __label__ x;</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordflow">case</span> Decl::Import:</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   <span class="keywordflow">case</span> Decl::OMPThreadPrivate:</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordflow">case</span> Decl::Empty:</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="comment">// None of these decls require codegen support.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     <span class="keywordflow">return</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="keywordflow">case</span> Decl::NamespaceAlias:</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>())</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         DI->EmitNamespaceAlias(cast<NamespaceAliasDecl>(D));</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordflow">case</span> Decl::Using:          <span class="comment">// using X; [C++]</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>())</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>         DI->EmitUsingDecl(cast<UsingDecl>(D));</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">case</span> Decl::UsingDirective: <span class="comment">// using namespace X; [C++]</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>())</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>       DI->EmitUsingDirective(cast<UsingDirectiveDecl>(D));</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">case</span> Decl::Var: {</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &VD = cast<VarDecl>(D);</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     assert(VD.<a class="code" href="classclang_1_1VarDecl.html#ab3fc38243546c278bf42ea0deb0ed8e9">isLocalVarDecl</a>() &&</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>            <span class="stringliteral">"Should not see file-scope variables inside a function!"</span>);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad399887c4c34f69e058a95ed827c42aa">EmitVarDecl</a>(VD);</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="keywordflow">case</span> Decl::Typedef:      <span class="comment">// typedef int X;</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keywordflow">case</span> Decl::TypeAlias: {  <span class="comment">// using X = int; [C++0x]</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> &TD = cast<TypedefNameDecl>(D);</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = TD.<a class="code" href="classclang_1_1TypedefNameDecl.html#a5fccedff6d3854db365a540145029158">getUnderlyingType</a>();</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">if</span> (Ty->isVariablyModifiedType())</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af5ebf447ad95c736942c95f4206b2497">EmitVariablyModifiedType</a>(Ty);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   }</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   }</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> }</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment"></span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">/// EmitVarDecl - This method handles emission of any variable declaration</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">/// inside a function, including static vars etc.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad399887c4c34f69e058a95ed827c42aa">  126</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad399887c4c34f69e058a95ed827c42aa">CodeGenFunction::EmitVarDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#a513c56596b4d12e99dd42a4f3ff646d4">isStaticLocal</a>()) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     llvm::GlobalValue::LinkageTypes <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a> =</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</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>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="comment">// If the variable is externally visible, it must have weak linkage so it</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="comment">// can be uniqued.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1NamedDecl.html#a187df384f8395af15f326b823535a87e">isExternallyVisible</a>()) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       Linkage = llvm::GlobalValue::LinkOnceODRLinkage;</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>       <span class="comment">// FIXME: We need to force the emission/use of a guard variable for</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="comment">// some variables even if we can constant-evaluate them because</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="comment">// we can't guarantee every translation unit will constant-evaluate them.</span></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> </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a67456de2ca28ad5e4771c440300c35e9">EmitStaticVarDecl</a>(D, Linkage);</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   }</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#af5dd1edb6eb7f647ad42d953fe38ed54" title="Returns true if a variable has extern or private_extern storage.">hasExternalStorage</a>())</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="comment">// Don't emit it now, allow it to be emitted lazily on its first use.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <span class="keywordflow">return</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> (D.<a class="code" href="classclang_1_1VarDecl.html#aabdb595f049bd0ce4703ca3a97dd2445" title="Returns the storage class as written in the source. For the computed linkage of symbol, see getLinkage.">getStorageClass</a>() == <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370a8d2c0b702a022d8c7f45ef2fc413b8e4">SC_OpenCLWorkGroupLocal</a>)</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</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#a64db0ce8ad84fe5df41bf044ae24a3d3" title="getOpenCLRuntime() - Return a reference to the configured OpenCL runtime.">getOpenCLRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGOpenCLRuntime.html#af62c1aa86ee3315731490dbe7b6b7ba5">EmitWorkGroupLocalVarDecl</a>(*<span class="keyword">this</span>, D);</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>   assert(D.<a class="code" href="classclang_1_1VarDecl.html#a86bb48bd6ced47b79a59af7df7108184">hasLocalStorage</a>());</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a361ac65d0e3162cda8f4da98876a54dd">EmitAutoVarDecl</a>(D);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a441ee3baf24a55b5773172543e346ce0">  155</a></span> <span class="keyword">static</span> std::string <a class="code" href="CGDecl_8cpp.html#a441ee3baf24a55b5773172543e346ce0">GetStaticDeclName</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_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>                                      <span class="keyword">const</span> <span class="keywordtype">char</span> *Separator) {</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</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="l00159"></a><span class="lineno">  159</span>     StringRef Name = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac2e5fda10002d34cd7f20fc0c2615a51">getMangledName</a>(&D);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">return</span> Name.str();</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   }</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>   std::string ContextName;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">if</span> (!CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>) {</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="comment">// Better be in a block declared in global scope.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ND = cast<NamedDecl>(&D);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = ND-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>();</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockDecl.html">BlockDecl</a> *BD = dyn_cast<BlockDecl>(DC)) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>       <a class="code" href="classclang_1_1MangleBuffer.html">MangleBuffer</a> Name;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>       CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a6beef9097fda8459ad8ef843ae8f6eb7">getBlockMangledName</a>(<a class="code" href="classclang_1_1GlobalDecl.html">GlobalDecl</a>(), Name, BD);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>       ContextName = Name.<a class="code" href="classclang_1_1MangleBuffer.html#abfc511cdb4f299ffcd8e45dbe6d348b6">getString</a>();</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="keywordflow">else</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>       llvm_unreachable(<span class="stringliteral">"Unknown context for block static var decl"</span>);</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = dyn_cast<FunctionDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>)) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     StringRef Name = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac2e5fda10002d34cd7f20fc0c2615a51">getMangledName</a>(FD);</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     ContextName = Name.str();</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<ObjCMethodDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>))</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     ContextName = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ade1be93e4c11e1945ef1c0d8bbc61ff8">CurFn</a>->getName();</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     llvm_unreachable(<span class="stringliteral">"Unknown context for static var decl"</span>);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">return</span> ContextName + Separator + D.<a class="code" href="classclang_1_1NamedDecl.html#a99d453b314da693c106d5acbc598fc6c">getNameAsString</a>();</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> }</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> llvm::GlobalVariable *</div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a81cef08d5096569a5fdfc1d4bdffd268">  187</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a81cef08d5096569a5fdfc1d4bdffd268">CodeGenFunction::CreateStaticVarDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>                                      <span class="keyword">const</span> <span class="keywordtype">char</span> *Separator,</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>                                      llvm::GlobalValue::LinkageTypes <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>) {</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   assert(Ty-><a class="code" href="classclang_1_1Type.html#a44b461aa094dcddc539f28318e461117">isConstantSizeType</a>() && <span class="stringliteral">"VLAs can't be static"</span>);</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">// Use the label if the variable is renamed with the asm-label extension.</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   std::string Name;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1AsmLabelAttr.html">AsmLabelAttr</a>>())</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     Name = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac2e5fda10002d34cd7f20fc0c2615a51">getMangledName</a>(&D);</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     Name = <a class="code" href="CGDecl_8cpp.html#a441ee3baf24a55b5773172543e346ce0">GetStaticDeclName</a>(*<span class="keyword">this</span>, D, Separator);</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   llvm::Type *LTy = <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#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(Ty);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordtype">unsigned</span> AddrSpace =</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>    <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#afd8e9c6e79d4518858682e470e95e468">GetGlobalVarAddressSpace</a>(&D, <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#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(Ty));</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   llvm::GlobalVariable *GV =</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="keyword">new</span> llvm::GlobalVariable(<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>(), LTy,</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>                              Ty.<a class="code" href="classclang_1_1QualType.html#a01b3c45b5f15a6893f4d8ce4f63f94e8">isConstant</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()), <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>,</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>                              <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#adb80a01436354fb32cedf9a6d639d48c">EmitNullConstant</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()), Name, 0,</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>                              llvm::GlobalVariable::NotThreadLocal,</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>                              AddrSpace);</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   GV->setAlignment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getDeclAlign(&D).getQuantity());</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a426a15bb17382a3c64ce2719cb0ae2da">setGlobalVisibility</a>(GV, &D);</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#ae704b725af5821356581f7857a2a2761">getTLSKind</a>())</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a3313f5aef8fbe8be6470e22325ae7fa4">setTLSMode</a>(GV, D);</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="keywordflow">return</span> GV;</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">/// hasNontrivialDestruction - Determine whether a type's destruction is</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">/// non-trivial. If so, and the variable uses static initialization, we must</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">/// register its destructor to run on exit.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#add9045d6bfdb2b709bdd88771e69dfd8">  221</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#add9045d6bfdb2b709bdd88771e69dfd8">hasNontrivialDestruction</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = T-><a class="code" href="classclang_1_1Type.html#aaf341a9ef2797f73d9cb091c6712242c">getBaseElementTypeUnsafe</a>()-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>();</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="keywordflow">return</span> RD && !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="l00224"></a><span class="lineno">  224</span> }</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment"></span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">/// AddInitializerToStaticVarDecl - Add the initializer for 'D' to the</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">/// global variable that has already been created for it.  If the initializer</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">/// has a different type than GV does, this may free GV and return a different</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">/// one.  Otherwise it just returns GV.</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment"></span>llvm::GlobalVariable *</div>
+<div class="line"><a name="l00231"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab60eb920e1950cfb069c0137229aa521">  231</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab60eb920e1950cfb069c0137229aa521">CodeGenFunction::AddInitializerToStaticVarDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>                                                llvm::GlobalVariable *GV) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   llvm::Constant *Init = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a65ea94cb2a22d40ba51423a01fbfd5a3">EmitConstantInit</a>(D, <span class="keyword">this</span>);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="comment">// If constant emission failed, then this should be a C++ static</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   <span class="comment">// initializer.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">if</span> (!Init) {</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="namespaceclang_1_1frontend.html#a09dfa01c4e997a3794d80922c5e853bbaf89a7ac6211aecefb5f7ecc17d3ebed4">CPlusPlus</a>)</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(D.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>(), <span class="stringliteral">"constant l-value expression"</span>);</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock()) {</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <span class="comment">// Since we have a static initializer, this global variable can't</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       <span class="comment">// be constant.</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       GV->setConstant(<span class="keyword">false</span>);</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>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0622169fef3f27dc30a3591bcedd7afd">EmitCXXGuardedInit</a>(D, GV, <span class="comment">/*PerformInit*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>     <span class="keywordflow">return</span> GV;</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   }</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="comment">// The initializer may differ in type from the global. Rewrite</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="comment">// the global to match the initializer.  (We have to do this</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   <span class="comment">// because some types, like unions, can't be completely represented</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="comment">// in the LLVM type system.)</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">if</span> (GV->getType()->getElementType() != Init->getType()) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     llvm::GlobalVariable *OldGV = GV;</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>     GV = <span class="keyword">new</span> llvm::GlobalVariable(<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>(), Init->getType(),</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>                                   OldGV->isConstant(),</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>                                   OldGV->getLinkage(), Init, <span class="stringliteral">""</span>,</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>                                   <span class="comment">/*InsertBefore*/</span> OldGV,</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>                                   OldGV->getThreadLocalMode(),</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>                            <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#aed2e4aedb5a9fafd8bd586349f1b9f6f">getTargetAddressSpace</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()));</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     GV->setVisibility(OldGV->getVisibility());</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>     <span class="comment">// Steal the name of the old global</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     GV->takeName(OldGV);</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     <span class="comment">// Replace all uses of the old global with the new global</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     llvm::Constant *NewPtrForOldDecl =</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     llvm::ConstantExpr::getBitCast(GV, OldGV->getType());</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     OldGV->replaceAllUsesWith(NewPtrForOldDecl);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="comment">// Erase the old global, since it is no longer used.</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     OldGV->eraseFromParent();</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>   }</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   GV->setConstant(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a5b6f8d1596aefe7cb9b5ee206494353a">isTypeConstant</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), <span class="keyword">true</span>));</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   GV->setInitializer(Init);</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>   <span class="keywordflow">if</span> (<a class="code" href="CGDecl_8cpp.html#add9045d6bfdb2b709bdd88771e69dfd8">hasNontrivialDestruction</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>())) {</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>     <span class="comment">// We have a constant initializer, but a nontrivial destructor. We still</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="comment">// need to perform a guarded "initialization" in order to register the</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     <span class="comment">// destructor.</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0622169fef3f27dc30a3591bcedd7afd">EmitCXXGuardedInit</a>(D, GV, <span class="comment">/*PerformInit*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   }</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="keywordflow">return</span> GV;</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> </div>
+<div class="line"><a name="l00290"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a67456de2ca28ad5e4771c440300c35e9">  290</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a67456de2ca28ad5e4771c440300c35e9">CodeGenFunction::EmitStaticVarDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>                                       llvm::GlobalValue::LinkageTypes <a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&DMEntry = LocalDeclMap[&D];</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   assert(DMEntry == 0 && <span class="stringliteral">"Decl already exists in localdeclmap!"</span>);</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="comment">// Check to see if we already have a global variable for this</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="comment">// declaration.  This can happen when double-emitting function</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">// bodies, e.g. with complete and base constructors.</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   llvm::Constant *addr =</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0c645f6b3b4dcae1de7bf178ffe43f9c">getStaticLocalDeclAddress</a>(&D);</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   llvm::GlobalVariable *var;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keywordflow">if</span> (addr) {</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     var = cast<llvm::GlobalVariable>(addr->stripPointerCasts());</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     addr = var = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a81cef08d5096569a5fdfc1d4bdffd268">CreateStaticVarDecl</a>(D, <span class="stringliteral">"."</span>, Linkage);</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> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">// Store into LocalDeclMap before generating initializer to handle</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">// circular references.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   DMEntry = addr;</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a19633cf0a618abdefe759f29d1ad6c22">setStaticLocalDeclAddress</a>(&D, addr);</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>   <span class="comment">// We can't have a VLA here, but we can have a pointer to a VLA,</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="comment">// even though that doesn't really make any sense.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <span class="comment">// Make sure to evaluate VLA bounds now so that we have them for later.</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()-><a class="code" href="classclang_1_1Type.html#ac4d6f4a6e62d6f7d21a8aa082fd68257" title="Whether this type is a variably-modified type (C99 6.7.5).">isVariablyModifiedType</a>())</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af5ebf447ad95c736942c95f4206b2497">EmitVariablyModifiedType</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">// Save the type in case adding the initializer forces a type change.</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   llvm::Type *expectedType = addr->getType();</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">// If this value has an initializer, emit it.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>())</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     var = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab60eb920e1950cfb069c0137229aa521">AddInitializerToStaticVarDecl</a>(D, var);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   var->setAlignment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getDeclAlign(&D).getQuantity());</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1AnnotateAttr.html">AnnotateAttr</a>>())</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#aa852a65b18d48138ff889bdb8ce281ad">AddGlobalAnnotations</a>(&D, var);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1SectionAttr.html">SectionAttr</a> *SA = D.<a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1SectionAttr.html">SectionAttr</a>>())</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     var->setSection(SA->getName());</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1UsedAttr.html">UsedAttr</a>>())</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ab4b3684fe8ae4e70f3205a40d9a2bdb2">AddUsedGlobal</a>(var);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="comment">// We may have to cast the constant because of the initializer</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   <span class="comment">// mismatch above.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="comment">// FIXME: It is really dangerous to store this in the map; if anyone</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="comment">// RAUW's the GV uses of this constant will be invalid.</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   llvm::Constant *castedAddr = llvm::ConstantExpr::getBitCast(var, expectedType);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   DMEntry = castedAddr;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a19633cf0a618abdefe759f29d1ad6c22">setStaticLocalDeclAddress</a>(&D, castedAddr);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="comment">// Emit global variable debug descriptor for static vars.</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>();</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   <span class="keywordflow">if</span> (DI &&</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().getDebugInfo() >= <a class="code" href="classclang_1_1CodeGenOptions.html#ab49a2a2a0a68577a07a9c0b730fb3cf6ae0f1c5168d0708ca9bd151ea9d89a3d8">CodeGenOptions::LimitedDebugInfo</a>) {</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#abe4e8c9b287054fd34b280bb5b5ae2b8">setLocation</a>(D.<a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#a21208b8114a3fb0a5f5f14bb8c8571e1" title="EmitGlobalVariable - Emit information about a global variable.">EmitGlobalVariable</a>(var, &D);</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> </div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="keyword">struct </span>DestroyObject : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     DestroyObject(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>                   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer,</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>                   <span class="keywordtype">bool</span> useEHCleanupForArray)</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>       : addr(addr), type(type), destroyer(destroyer),</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         useEHCleanupForArray(useEHCleanupForArray) {}</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr;</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer;</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keywordtype">bool</span> useEHCleanupForArray;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="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="l00369"></a><span class="lineno">  369</span>       <span class="comment">// Don't use an EH cleanup recursively from an EH cleanup.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>       <span class="keywordtype">bool</span> useEHCleanupForArray =</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>         flags.isForNormalCleanup() && this->useEHCleanupForArray;</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>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9aaad21865e78a4de5b46182c55f5a35">emitDestroy</a>(addr, <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, destroyer, useEHCleanupForArray);</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>     }</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   };</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> </div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keyword">struct </span>DestroyNRVOVariable : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>     DestroyNRVOVariable(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr,</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>                         <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor,</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NRVOFlag)</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       : Dtor(Dtor), NRVOFlag(NRVOFlag), Loc(addr) {}</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>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor;</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NRVOFlag;</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Loc;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="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="l00388"></a><span class="lineno">  388</span>       <span class="comment">// Along the exceptions path we always execute the dtor.</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>       <span class="keywordtype">bool</span> NRVO = flags.isForNormalCleanup() && NRVOFlag;</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>       llvm::BasicBlock *SkipDtorBB = 0;</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>       <span class="keywordflow">if</span> (NRVO) {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>         <span class="comment">// If we exited via NRVO, we skip the destructor call.</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>         llvm::BasicBlock *RunDtorBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"nrvo.unused"</span>);</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>         SkipDtorBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"nrvo.skipdtor"</span>);</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DidNRVO = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(NRVOFlag, <span class="stringliteral">"nrvo.val"</span>);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(DidNRVO, SkipDtorBB, RunDtorBB);</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(RunDtorBB);</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> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</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="l00402"></a><span class="lineno">  402</span>                                 <span class="comment">/*ForVirtualBase=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>                                 <span class="comment">/*Delegating=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>                                 Loc);</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">if</span> (NRVO) CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(SkipDtorBB);</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     }</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   };</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="keyword">struct </span>CallStackRestore : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>;</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     CallStackRestore(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>) : Stack(Stack) {}</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</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="l00414"></a><span class="lineno">  414</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *F = 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::stackrestore);</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(F, V);</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> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   <span class="keyword">struct </span>ExtendGCLifetime : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &Var;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     ExtendGCLifetime(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var) : Var(*var) {}</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>     <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="l00425"></a><span class="lineno">  425</span>       <span class="comment">// Compute the address of the local variable, in case it's a</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <span class="comment">// byref or something.</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</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(const_cast<VarDecl*>(&Var), <span class="keyword">false</span>,</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>                       Var.getType(), <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>());</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a811bcfd5769bf9dc2ad7f62e9350dc56">EmitDeclRefLValue</a>(&DRE),</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>());</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80dd70a938a3c1881d46add358ea7efc">EmitExtendGCLifetime</a>(value);</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>   };</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>   <span class="keyword">struct </span>CallCleanupFunction : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     llvm::Constant *CleanupFn;</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &FnInfo;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &Var;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     CallCleanupFunction(llvm::Constant *CleanupFn, <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> *Info,</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>                         <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *Var)</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       : CleanupFn(CleanupFn), FnInfo(*Info), Var(*Var) {}</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>     <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="l00445"></a><span class="lineno">  445</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(const_cast<VarDecl*>(&Var), <span class="keyword">false</span>,</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>                       Var.getType(), <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>());</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="comment">// Compute the address of the local variable, in case it's a byref</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       <span class="comment">// or something.</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a811bcfd5769bf9dc2ad7f62e9350dc56">EmitDeclRefLValue</a>(&DRE).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="comment">// In some cases, the type of the function argument will be different from</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="comment">// the type of the pointer. An example of this is</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <span class="comment">// void f(void* arg);</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="comment">// __attribute__((cleanup(f))) void *g;</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       <span class="comment">// To fix this we insert a bitcast here.</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgTy = FnInfo.arg_begin()->type;</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Arg =</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Addr, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(ArgTy));</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>       <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="l00462"></a><span class="lineno">  462</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>(Arg),</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>                CGF.<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>(Var.getType()));</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(FnInfo, CleanupFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), Args);</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     }</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   };</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> <span class="comment"></span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> <span class="comment">  /// A cleanup to call @llvm.lifetime.end.</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> <span class="comment"></span>  <span class="keyword">class </span>CallLifetimeEnd : <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="l00470"></a><span class="lineno">  470</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#a561f2d973ed74723ce0b1e1165c31804">Addr</a>;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size;</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     CallLifetimeEnd(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *size)</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       : Addr(addr), Size(size) {}</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="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="l00477"></a><span class="lineno">  477</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *castAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Addr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall2(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#aa7436ca1cfd85c5aba3778ac8ac9f38f" title="Lazily declare the .lifetime.end intrinsic.">getLLVMLifetimeEndFn</a>(),</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>                               Size, castAddr)</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>         ->setDoesNotThrow();</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>     }</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   };</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"></span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="comment">/// EmitAutoVarWithLifetime - Does the setup required for an automatic</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> <span class="comment">/// variable with lifetime.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a75636132af3e3b4c3b8b53cf8be52add">  487</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGDecl_8cpp.html#a75636132af3e3b4c3b8b53cf8be52add">EmitAutoVarWithLifetime</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_1VarDecl.html">VarDecl</a> &var,</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>                                     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr,</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>                                     <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> lifetime) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="keywordflow">switch</span> (lifetime) {</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</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="l00492"></a><span class="lineno">  492</span>     llvm_unreachable(<span class="stringliteral">"present but none"</span>);</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="comment">// nothing to do</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</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="l00499"></a><span class="lineno">  499</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer =</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       (var.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCPreciseLifetimeAttr.html">ObjCPreciseLifetimeAttr</a>>()</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>        ? <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aed2746a127c4a525fffc41bee41b0476">CodeGenFunction::destroyARCStrongPrecise</a></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>        : <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a763a89a99e4b6b63fedbccd55a1a90e9">CodeGenFunction::destroyARCStrongImprecise</a>);</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>     <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2accba30944ea68f763f67e3d31baa0a">getARCCleanupKind</a>();</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(cleanupKind, addr, var.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), destroyer,</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>                     cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">break</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="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="l00510"></a><span class="lineno">  510</span>     <span class="comment">// nothing to do</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     <span class="keywordflow">break</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="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="l00514"></a><span class="lineno">  514</span>     <span class="comment">// __weak objects always get EH cleanups; otherwise, exceptions</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="comment">// could cause really nasty crashes instead of mere leaks.</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, addr, var.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>                     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1faef89e589b0be992e3ac6f6d76c468">CodeGenFunction::destroyARCWeak</a>,</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>                     <span class="comment">/*useEHCleanup*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>   }</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> }</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a name="l00523"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">  523</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">isAccessedBy</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &var, <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *s) {</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e = dyn_cast<Expr>(s)) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="comment">// Skip the most common kinds of expressions that make</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="comment">// hierarchy-walking expensive.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>     s = e = e->IgnoreParenCasts();</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>     <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> *ref = dyn_cast<DeclRefExpr>(e))</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       <span class="keywordflow">return</span> (ref->getDecl() == &var);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockExpr.html">BlockExpr</a> *be = dyn_cast<BlockExpr>(e)) {</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1BlockDecl.html">BlockDecl</a> *block = be->getBlockDecl();</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1BlockDecl_1_1Capture.html">BlockDecl::capture_const_iterator</a> i = block-><a class="code" href="classclang_1_1BlockDecl.html#ab22e740e64eb0eb9b79f8cd043b07606">capture_begin</a>(),</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>            e = block-><a class="code" href="classclang_1_1BlockDecl.html#a00f598199079e2be3d254168e6a24644">capture_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         <span class="keywordflow">if</span> (i->getVariable() == &var)</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>           <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>       }</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     }</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   }</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> </div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ConstStmtRange.html">Stmt::const_child_range</a> children = s-><a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); children; ++children)</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     <span class="comment">// children might be null; as in missing decl or conditional of an if-stmt.</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">if</span> ((*children) && <a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">isAccessedBy</a>(var, *children))</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>       <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> }</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#aab77cdb40d1afef23ceb52fd7dab13e2">  549</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">isAccessedBy</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a7e0add38d4eff7a20684fcba24be8887" title="Matches declarations.">decl</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <span class="keywordflow">if</span> (!decl) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   <span class="keywordflow">if</span> (!isa<VarDecl>(decl)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var = cast<VarDecl>(<a class="code" href="namespaceclang_1_1ast__matchers.html#a7e0add38d4eff7a20684fcba24be8887" title="Matches declarations.">decl</a>);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   <span class="keywordflow">return</span> <a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">isAccessedBy</a>(*var, e);</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> }</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">  556</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> &lvalue,</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var) {</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ad9189c5d71a765179e7d8b367ac543d0">setAddress</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac3e08084dc8583927096aac5182a4aa1">BuildBlockByrefAddress</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), var));</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> </div>
+<div class="line"><a name="l00562"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">  562</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">CodeGenFunction::EmitScalarInit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *init,</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue,</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>                                      <span class="keywordtype">bool</span> capturedByInit) {</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> lifetime = lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5c85dfcb721330daf4947b347627e632">getObjCLifetime</a>();</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="keywordflow">if</span> (!lifetime) {</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(init);</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keywordflow">if</span> (capturedByInit)</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(*<span class="keyword">this</span>, lvalue, cast<VarDecl>(D));</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(value), lvalue, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   }</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> </div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   <span class="comment">// If we're emitting a value with lifetime, we have to do the</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <span class="comment">// initialization *before* we leave the cleanup scopes.</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *ewc = dyn_cast<ExprWithCleanups>(init)) {</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a83deaf3d8bd449ba59ee5c966b22da09">enterFullExpression</a>(ewc);</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     init = ewc->getSubExpr();</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>   <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> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</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>   <span class="comment">// We have to maintain the illusion that the variable is</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   <span class="comment">// zero-initialized.  If the variable might be accessed in its</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   <span class="comment">// initializer, zero-initialize before running the initializer, then</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="comment">// actually perform the initialization with an assign.</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <span class="keywordtype">bool</span> accessedByInit = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   <span class="keywordflow">if</span> (lifetime != <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>)</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     accessedByInit = (capturedByInit || <a class="code" href="CGDecl_8cpp.html#ad210869f4d8c64cce725f90b490e522c">isAccessedBy</a>(D, init));</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">if</span> (accessedByInit) {</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> tempLV = lvalue;</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="comment">// Drill down to the __block object if necessary.</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordflow">if</span> (capturedByInit) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="comment">// We can use a simple GEP for this because it can't have been</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="comment">// moved yet.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       tempLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#ad9189c5d71a765179e7d8b367ac543d0">setAddress</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(tempLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(),</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1283abe4c872adee44e04dedbdf821a3">getByRefValueLLVMField</a>(cast<VarDecl>(D))));</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> </div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     llvm::PointerType *ty</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       = cast<llvm::PointerType>(tempLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>()->getType());</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     ty = cast<llvm::PointerType>(ty->getElementType());</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> </div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *zero = llvm::ConstantPointerNull::get(ty);</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">// If __weak, we want to use a barrier under certain conditions.</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <span class="keywordflow">if</span> (lifetime == <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="l00608"></a><span class="lineno">  608</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(tempLV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), zero);</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> </div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>     <span class="comment">// Otherwise just do a simple store.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(zero, tempLV, <span class="comment">/* isInitialization */</span> <span class="keyword">true</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> </div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>   <span class="comment">// Emit the initializer.</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *value = 0;</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> </div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="keywordflow">switch</span> (lifetime) {</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</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="l00620"></a><span class="lineno">  620</span>     llvm_unreachable(<span class="stringliteral">"present but none"</span>);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span> </div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>:</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>     <span class="comment">// nothing to do</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(init);</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span> </div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>: {</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe">EmitARCRetainScalarExpr</a>(init);</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   }</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span> </div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="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="l00633"></a><span class="lineno">  633</span>     <span class="comment">// No way to optimize a producing initializer into this.  It's not</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="comment">// worth optimizing for, because the value will immediately</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     <span class="comment">// disappear in the common case.</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(init);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> </div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     <span class="keywordflow">if</span> (capturedByInit) <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(*<span class="keyword">this</span>, lvalue, cast<VarDecl>(D));</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>     <span class="keywordflow">if</span> (accessedByInit)</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba3bbef5c415ca021de407fd87f92038">EmitARCStoreWeak</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), value, <span class="comment">/*ignored*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), value);</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   }</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> </div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="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="l00647"></a><span class="lineno">  647</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748">EmitARCRetainAutoreleaseScalarExpr</a>(init);</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   }</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>   <span class="keywordflow">if</span> (capturedByInit) <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(*<span class="keyword">this</span>, lvalue, cast<VarDecl>(D));</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span> </div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="comment">// If the variable might have been accessed by its initializer, we</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="comment">// might have to initialize with a barrier.  We have to do this for</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="comment">// both __weak and __strong, but __weak got filtered out above.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   <span class="keywordflow">if</span> (accessedByInit && lifetime == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>) {</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *oldValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(lvalue, init-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>());</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(value, lvalue, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(oldValue, <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a6ec820d64b2841f94059b9e637e82aa7">ARCImpreciseLifetime</a>);</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(value, lvalue, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> }</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="comment"></span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="comment">/// EmitScalarInit - Initialize the given lvalue with the given object.</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6b2e280efbe77111e0ed24c36fc9a81b">  667</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">CodeGenFunction::EmitScalarInit</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *init, <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue) {</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> lifetime = lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5c85dfcb721330daf4947b347627e632">getObjCLifetime</a>();</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordflow">if</span> (!lifetime)</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(init), lvalue, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <span class="keywordflow">switch</span> (lifetime) {</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</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="l00674"></a><span class="lineno">  674</span>     llvm_unreachable(<span class="stringliteral">"present but none"</span>);</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span> </div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</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="l00677"></a><span class="lineno">  677</span>     <span class="comment">// nothing to do</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span> </div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>:</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     init = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">EmitARCRetain</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>(), init);</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>     <span class="keywordflow">break</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="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="l00685"></a><span class="lineno">  685</span>     <span class="comment">// Initialize and then skip the primitive store.</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), init);</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span> </div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</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="l00690"></a><span class="lineno">  690</span>     init = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0">EmitARCRetainAutorelease</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>(), init);</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   }</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span> </div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(init, lvalue, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span> }</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> <span class="comment"></span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="comment">/// canEmitInitWithFewStoresAfterMemset - Decide whether we can emit the</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> <span class="comment">/// non-zero parts of the specified initializer with equal or fewer than</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> <span class="comment">/// NumStores scalar stores.</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#ad5dc0a7a7de73482f647f4b99b068871">  700</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#ad5dc0a7a7de73482f647f4b99b068871">canEmitInitWithFewStoresAfterMemset</a>(llvm::Constant *Init,</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>                                                 <span class="keywordtype">unsigned</span> &<a class="code" href="namespaceclang.html#adc50890f77fd96c7c54babd32d54592aa601edceca790af9afcb2ed6b99b2cfd9">NumStores</a>) {</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="comment">// Zero and Undef never requires any extra stores.</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantAggregateZero>(Init) ||</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       isa<llvm::ConstantPointerNull>(Init) ||</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       isa<llvm::UndefValue>(Init))</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantInt>(Init) || isa<llvm::ConstantFP>(Init) ||</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       isa<llvm::ConstantVector>(Init) || isa<llvm::BlockAddress>(Init) ||</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>       isa<llvm::ConstantExpr>(Init))</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="keywordflow">return</span> Init->isNullValue() || NumStores--;</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> </div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="comment">// See if we can emit each element.</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantArray>(Init) || isa<llvm::ConstantStruct>(Init)) {</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Init->getNumOperands(); i != e; ++i) {</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>       llvm::Constant *Elt = cast<llvm::Constant>(Init->getOperand(i));</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>       <span class="keywordflow">if</span> (!<a class="code" href="CGDecl_8cpp.html#ad5dc0a7a7de73482f647f4b99b068871">canEmitInitWithFewStoresAfterMemset</a>(Elt, NumStores))</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>         <span class="keywordflow">return</span> <span class="keyword">false</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>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   }</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="keywordflow">if</span> (llvm::ConstantDataSequential *CDS =</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>         dyn_cast<llvm::ConstantDataSequential>(Init)) {</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CDS->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>       llvm::Constant *Elt = CDS->getElementAsConstant(i);</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>       <span class="keywordflow">if</span> (!<a class="code" href="CGDecl_8cpp.html#ad5dc0a7a7de73482f647f4b99b068871">canEmitInitWithFewStoresAfterMemset</a>(Elt, NumStores))</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     }</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   }</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> </div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="comment">// Anything else is hard and scary.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>   <span class="keywordflow">return</span> <span class="keyword">false</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="comment"></span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span> <span class="comment">/// emitStoresForInitAfterMemset - For inits that</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span> <span class="comment">/// canEmitInitWithFewStoresAfterMemset returned true for, emit the scalar</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span> <span class="comment">/// stores that would be required.</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a0520310eca01e8ad483259383670a95e">  739</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGDecl_8cpp.html#a0520310eca01e8ad483259383670a95e">emitStoresForInitAfterMemset</a>(llvm::Constant *Init, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Loc,</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>                                          <span class="keywordtype">bool</span> isVolatile, <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="l00741"></a><span class="lineno">  741</span>   assert(!Init->isNullValue() && !isa<llvm::UndefValue>(Init) &&</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>          <span class="stringliteral">"called emitStoresForInitAfterMemset for zero or undef value."</span>);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span> </div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantInt>(Init) || isa<llvm::ConstantFP>(Init) ||</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>       isa<llvm::ConstantVector>(Init) || isa<llvm::BlockAddress>(Init) ||</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>       isa<llvm::ConstantExpr>(Init)) {</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     Builder.CreateStore(Init, Loc, isVolatile);</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   }</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   </div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">if</span> (llvm::ConstantDataSequential *CDS = </div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>         dyn_cast<llvm::ConstantDataSequential>(Init)) {</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CDS->getNumElements(); i != e; ++i) {</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       llvm::Constant *Elt = CDS->getElementAsConstant(i);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> </div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>       <span class="comment">// If necessary, get a pointer to the element and emit it.</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>       <span class="keywordflow">if</span> (!Elt->isNullValue() && !isa<llvm::UndefValue>(Elt))</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>         <a class="code" href="CGDecl_8cpp.html#a0520310eca01e8ad483259383670a95e">emitStoresForInitAfterMemset</a>(Elt, Builder.CreateConstGEP2_32(Loc, 0, i),</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>                                      isVolatile, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>);</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>     }</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   }</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>   assert((isa<llvm::ConstantStruct>(Init) || isa<llvm::ConstantArray>(Init)) &&</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>          <span class="stringliteral">"Unknown value type!"</span>);</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> </div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Init->getNumOperands(); i != e; ++i) {</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     llvm::Constant *Elt = cast<llvm::Constant>(Init->getOperand(i));</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 necessary, get a pointer to the element and emit it.</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     <span class="keywordflow">if</span> (!Elt->isNullValue() && !isa<llvm::UndefValue>(Elt))</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>       <a class="code" href="CGDecl_8cpp.html#a0520310eca01e8ad483259383670a95e">emitStoresForInitAfterMemset</a>(Elt, Builder.CreateConstGEP2_32(Loc, 0, i),</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>                                    isVolatile, <a class="code" href="ASTMatchFinder_8cpp.html#a4cd8cc8f712cd1e4ebf8cb152b8a1531">Builder</a>);</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>   }</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span> }</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span> </div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span> <span class="comment"></span></div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span> <span class="comment">/// shouldUseMemSetPlusStoresToInitialize - Decide whether we should use memset</span></div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="comment">/// plus some stores to initialize a local variable instead of using a memcpy</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> <span class="comment">/// from a constant global.  It is beneficial to use memset if the global is all</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span> <span class="comment">/// zeros, or mostly zeros and large.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#abec05cf1410dee375703a839981c64f8">  782</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#abec05cf1410dee375703a839981c64f8">shouldUseMemSetPlusStoresToInitialize</a>(llvm::Constant *Init,</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>                                                   uint64_t GlobalSize) {</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>   <span class="comment">// If a global is all zeros, always use a memset.</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantAggregateZero>(Init)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span> </div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <span class="comment">// If a non-zero global is <= 32 bytes, always use a memcpy.  If it is large,</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>   <span class="comment">// do it if it will require 6 or fewer scalar stores.</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>   <span class="comment">// TODO: Should budget depends on the size?  Avoiding a large global warrants</span></div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>   <span class="comment">// plopping in more stores.</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>   <span class="keywordtype">unsigned</span> StoreBudget = 6;</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   uint64_t SizeLimit = 32;</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span> </div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   <span class="keywordflow">return</span> GlobalSize > SizeLimit &&</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>          <a class="code" href="CGDecl_8cpp.html#ad5dc0a7a7de73482f647f4b99b068871">canEmitInitWithFewStoresAfterMemset</a>(Init, StoreBudget);</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span> }</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> <span class="comment"></span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span> <span class="comment">/// Should we use the LLVM lifetime intrinsics for the given local variable?</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a50a58331c9436c8f8a6f6e591536c5b9">  799</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#a50a58331c9436c8f8a6f6e591536c5b9" title="Should we use the LLVM lifetime intrinsics for the given local variable?">shouldUseLifetimeMarkers</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_1VarDecl.html">VarDecl</a> &D,</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>                                      <span class="keywordtype">unsigned</span> Size) {</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   <span class="comment">// Always emit lifetime markers in -fsanitize=use-after-scope mode.</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptionsBase.html#abaa9d961f88353f1b13edc1be202e559">Sanitize</a>.UseAfterScope)</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   <span class="comment">// For now, only in optimized builds.</span></div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0)</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     <span class="keywordflow">return</span> <span class="keyword">false</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>   <span class="comment">// Limit the size of marked objects to 32 bytes. We don't want to increase</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>   <span class="comment">// compile time by marking tiny objects.</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>   <span class="keywordtype">unsigned</span> SizeThreshold = 32;</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="keywordflow">return</span> Size > SizeThreshold;</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"></span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span> <span class="comment">/// EmitAutoVarDecl - Emit code and set up an entry in LocalDeclMap for a</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span> <span class="comment">/// variable declaration with auto, register, or no storage class specifier.</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span> <span class="comment">/// These turn into simple stack objects, or GlobalValues depending on target.</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a361ac65d0e3162cda8f4da98876a54dd">  819</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a361ac65d0e3162cda8f4da98876a54dd">CodeGenFunction::EmitAutoVarDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D) {</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">AutoVarEmission</a> emission = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40b64c30a88dc9b44b4941951bf80da7">EmitAutoVarAlloca</a>(D);</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a373581b9034f81c725f8aaa829ece14b">EmitAutoVarInit</a>(emission);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa92cef8f0df2b1f7f8aaadac281a3f23">EmitAutoVarCleanups</a>(emission);</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="comment"></span></div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> <span class="comment">/// EmitAutoVarAlloca - Emit the alloca and debug information for a</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span> <span class="comment">/// local variable.  Does not emit initalization or destruction.</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span> <span class="comment"></span><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">CodeGenFunction::AutoVarEmission</a></div>
+<div class="line"><a name="l00828"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40b64c30a88dc9b44b4941951bf80da7">  828</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40b64c30a88dc9b44b4941951bf80da7">CodeGenFunction::EmitAutoVarAlloca</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D) {</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">AutoVarEmission</a> emission(D);</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> </div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>   <span class="keywordtype">bool</span> isByRef = D.<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="l00834"></a><span class="lineno">  834</span>   emission.IsByRef = isByRef;</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>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> alignment = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(&D);</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>   emission.Alignment = alignment;</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> </div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   <span class="comment">// If the type is variably-modified, emit all the VLA sizes for it.</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">if</span> (Ty-><a class="code" href="classclang_1_1Type.html#ac4d6f4a6e62d6f7d21a8aa082fd68257" title="Whether this type is a variably-modified type (C99 6.7.5).">isVariablyModifiedType</a>())</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af5ebf447ad95c736942c95f4206b2497">EmitVariablyModifiedType</a>(Ty);</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span> </div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DeclPtr;</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>   <span class="keywordflow">if</span> (Ty-><a class="code" href="classclang_1_1Type.html#a44b461aa094dcddc539f28318e461117">isConstantSizeType</a>()) {</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     <span class="keywordtype">bool</span> NRVO = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ElideConstructors &&</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       D.<a class="code" href="classclang_1_1VarDecl.html#a58bae2465dc5d7d404476a98131690be" title="Determine whether this local variable can be used with the named return value optimization (NRVO)...">isNRVOVariable</a>();</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> </div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     <span class="comment">// If this value is an array or struct with a statically determinable</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="comment">// constant initializer, there are optimizations we can do.</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     <span class="comment">// TODO: We should constant-evaluate the initializer of any variable,</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>     <span class="comment">// as long as it is initialized by a constant expression. Currently,</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <span class="comment">// isConstantInitializer produces wrong answers for structs with</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>     <span class="comment">// reference or bitfield members, and a few other cases, and checking</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="comment">// for POD-ness protects us from some of these.</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>() && (Ty-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>() || Ty-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) &&</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         (D.<a class="code" href="classclang_1_1VarDecl.html#a2b869e48603ee23219d50f9c8843807a" title="Whether this variable is (C++11) constexpr.">isConstexpr</a>() ||</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>          ((Ty.<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>()) ||</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>            <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)-><a class="code" href="classclang_1_1Type.html#aa9be9c3ceec53da8edbbb86bbf895fff">isObjCObjectPointerType</a>()) &&</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>           D.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>()-><a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>(), <span class="keyword">false</span>)))) {</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> </div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>       <span class="comment">// If the variable's a const type, and it's neither an NRVO</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>       <span class="comment">// candidate nor a __block variable and has no mutable members,</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>       <span class="comment">// emit it as a global instead.</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().MergeAllConstants && !NRVO && !isByRef &&</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a5b6f8d1596aefe7cb9b5ee206494353a">isTypeConstant</a>(Ty, <span class="keyword">true</span>)) {</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a67456de2ca28ad5e4771c440300c35e9">EmitStaticVarDecl</a>(D, <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>);</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>         emission.Address = 0; <span class="comment">// signal this condition to later callbacks</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>         assert(emission.wasEmittedAsGlobal());</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>         <span class="keywordflow">return</span> emission;</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       }</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span> </div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="comment">// Otherwise, tell the initialization code that we're in this case.</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       emission.IsConstantAggregate = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     }</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>     <span class="comment">// A normal fixed sized variable becomes an alloca in the entry block,</span></div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <span class="comment">// unless it's an NRVO variable.</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     llvm::Type *LTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(Ty);</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span> </div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="keywordflow">if</span> (NRVO) {</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>       <span class="comment">// The named return value optimization: allocate this variable in the</span></div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       <span class="comment">// return slot, so that we can elide the copy when returning this</span></div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>       <span class="comment">// variable (C++0x [class.copy]p34).</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>       DeclPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>;</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> </div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</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="l00889"></a><span class="lineno">  889</span>         <span class="keywordflow">if</span> (!cast<CXXRecordDecl>(RecordTy->getDecl())->hasTrivialDestructor()) {</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>           <span class="comment">// Create a flag that is used to indicate when the NRVO was applied</span></div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>           <span class="comment">// to this variable. Set it to zero to indicate that NRVO was not</span></div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>           <span class="comment">// applied.</span></div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</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>.getFalse();</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>           <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *NRVOFlag = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(Zero->getType(), <span class="stringliteral">"nrvo"</span>);</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aebc753533aefb02b31dc6d12b1fb6e06">EnsureInsertPoint</a>();</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Zero, NRVOFlag);</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span> </div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           <span class="comment">// Record the NRVO flag for this variable.</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a13db3e364f5199fa908979e06c806db4" title="A mapping from NRVO variables to the flags used to indicate when the NRVO has been applied to this va...">NRVOFlags</a>[&D] = NRVOFlag;</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>           emission.NRVOFlag = NRVOFlag;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>         }</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>       }</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>       <span class="keywordflow">if</span> (isByRef)</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>         LTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47f05a33d25eba0574176c03c7d96307">BuildByRefType</a>(&D);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span> </div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       llvm::AllocaInst *Alloc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(LTy);</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>       Alloc->setName(D.<a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>());</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>       <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> allocaAlignment = alignment;</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>       <span class="keywordflow">if</span> (isByRef)</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>         allocaAlignment = std::max(allocaAlignment,</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().toCharUnitsFromBits(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().getPointerAlign(0)));</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>       Alloc->setAlignment(allocaAlignment.<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="l00915"></a><span class="lineno">  915</span>       DeclPtr = Alloc;</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span> </div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>       <span class="comment">// Emit a lifetime intrinsic if meaningful.  There's no point</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>       <span class="comment">// in doing this if we don't have a valid insertion point (?).</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>       uint64_t size = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(LTy);</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>() && <a class="code" href="CGDecl_8cpp.html#a50a58331c9436c8f8a6f6e591536c5b9" title="Should we use the LLVM lifetime intrinsics for the given local variable?">shouldUseLifetimeMarkers</a>(*<span class="keyword">this</span>, D, size)) {</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *sizeV = llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a06114f0bc840b61c0b2c60bb284e46fb">Int64Ty</a>, size);</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span> </div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>         emission.SizeForLifetimeMarkers = sizeV;</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *castAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Alloc, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall2(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a5cc689177644f1f269865d7094b1a6e6" title="Lazily declare the .lifetime.start intrinsic.">getLLVMLifetimeStartFn</a>(), sizeV, castAddr)</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>           ->setDoesNotThrow();</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>         assert(!emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#a11c3ea3371befb7baa1efa1ab11c0c2b">useLifetimeMarkers</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>     }</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aebc753533aefb02b31dc6d12b1fb6e06">EnsureInsertPoint</a>();</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span> </div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     <span class="keywordflow">if</span> (!DidCallStackSave) {</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       <span class="comment">// Save the stack.</span></div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="stringliteral">"saved_stack"</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>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *F = <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::stacksave);</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(F);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span> </div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(V, Stack);</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span> </div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>       DidCallStackSave = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span> </div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       <span class="comment">// Push a cleanup block and restore the stack there.</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>       <span class="comment">// FIXME: in general circumstances, this should be an EH cleanup.</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallStackRestore>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</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> </div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *elementCount;</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType;</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     llvm::tie(elementCount, elementType) = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aad5f5781bb8931ec79b2ef0946098c57">getVLASize</a>(Ty);</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>     llvm::Type *llvmTy = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(elementType);</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span> </div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     <span class="comment">// Allocate memory for the array.</span></div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     llvm::AllocaInst *vla = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAlloca(llvmTy, elementCount, <span class="stringliteral">"vla"</span>);</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>     vla->setAlignment(alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> </div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     DeclPtr = vla;</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&DMEntry = LocalDeclMap[&D];</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>   assert(DMEntry == 0 && <span class="stringliteral">"Decl already exists in localdeclmap!"</span>);</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>   DMEntry = DeclPtr;</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>   emission.Address = DeclPtr;</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span> </div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>   <span class="comment">// Emit debug info for local var declaration.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>())</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>()) {</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().getDebugInfo()</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>             >= <a class="code" href="classclang_1_1CodeGenOptions.html#ab49a2a2a0a68577a07a9c0b730fb3cf6ae0f1c5168d0708ca9bd151ea9d89a3d8">CodeGenOptions::LimitedDebugInfo</a>) {</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>         DI->setLocation(D.<a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>         DI->EmitDeclareOfAutoVariable(&D, DeclPtr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>);</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>       }</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     }</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="keywordflow">if</span> (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1AnnotateAttr.html">AnnotateAttr</a>>())</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a42310ca5cdaef5258d0c114d22995a11" title="Emit local annotations for the local variable V, declared by D.">EmitVarAnnotations</a>(&D, emission.Address);</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span> </div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   <span class="keywordflow">return</span> emission;</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">/// Determines whether the given __block variable is potentially</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment">/// captured by the given expression.</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">  986</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">isCapturedBy</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &var, <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>   <span class="comment">// Skip the most common kinds of expressions that make</span></div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   <span class="comment">// hierarchy-walking expensive.</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>   e = e-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span> </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BlockExpr.html">BlockExpr</a> *be = dyn_cast<BlockExpr>(e)) {</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1BlockDecl.html">BlockDecl</a> *block = be->getBlockDecl();</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1BlockDecl_1_1Capture.html">BlockDecl::capture_const_iterator</a> i = block-><a class="code" href="classclang_1_1BlockDecl.html#ab22e740e64eb0eb9b79f8cd043b07606">capture_begin</a>(),</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>            e = block-><a class="code" href="classclang_1_1BlockDecl.html#a00f598199079e2be3d254168e6a24644">capture_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="keywordflow">if</span> (i->getVariable() == &var)</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     }</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span> </div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <span class="comment">// No need to walk into the subexpressions.</span></div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> *SE = dyn_cast<StmtExpr>(e)) {</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *CS = SE->getSubStmt();</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CompoundStmt.html#a9750d59c3c5fa551951901a40a3887da">CompoundStmt::const_body_iterator</a> BI = CS-><a class="code" href="classclang_1_1CompoundStmt.html#a89f494cf13b72531e81c7b9a87db22a7">body_begin</a>(),</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>      BE = CS-><a class="code" href="classclang_1_1CompoundStmt.html#a5bc934fe5cf3477500b1824a7e0d4db2">body_end</a>(); BI != BE; ++BI)</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Expr.html">Expr</a> *E = dyn_cast<Expr>((*BI))) {</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>         <span class="keywordflow">if</span> (<a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">isCapturedBy</a>(var, E))</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>             <span class="keywordflow">return</span> <span class="keyword">true</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>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclStmt.html">DeclStmt</a> *DS = dyn_cast<DeclStmt>((*BI))) {</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>           <span class="comment">// special case declarations</span></div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>           <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Decl.html">DeclStmt::decl_iterator</a> I = DS->decl_begin(), E = DS->decl_end();</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>                I != E; ++I) {</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>               <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD = dyn_cast<VarDecl>((*I))) {</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>                 <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = VD->getInit();</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>                 <span class="keywordflow">if</span> (Init && <a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">isCapturedBy</a>(var, Init))</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>                   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>               }</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>           }</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>       }</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         <span class="comment">// FIXME. Make safe assumption assuming arbitrary statements cause capturing.</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         <span class="comment">// Later, provide code to poke into statements for capture analysis.</span></div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>   <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ConstStmtRange.html">Stmt::const_child_range</a> children = e-><a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); children; ++children)</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     <span class="keywordflow">if</span> (<a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">isCapturedBy</a>(var, cast<Expr>(*children)))</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> }</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment"></span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="comment">/// \brief Determine whether the given initializer is trivial in the sense</span></div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="comment">/// that it requires no code to be generated.</span></div>
+<div class="line"><a name="l01038"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a933ff7692f34a95e75d2da4f5c038931"> 1038</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGDecl_8cpp.html#a933ff7692f34a95e75d2da4f5c038931" title="Determine whether the given initializer is trivial in the sense that it requires no code to be genera...">isTrivialInitializer</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init) {</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   <span class="keywordflow">if</span> (!Init)</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   <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> *Construct = dyn_cast<CXXConstructExpr>(Init))</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = Construct->getConstructor())</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>       <span class="keywordflow">if</span> (Constructor->isTrivial() &&</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>           Constructor->isDefaultConstructor() &&</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>           !Construct->requiresZeroInitialization())</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>         <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> }</div>
+<div class="line"><a name="l01051"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a373581b9034f81c725f8aaa829ece14b"> 1051</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a373581b9034f81c725f8aaa829ece14b">CodeGenFunction::EmitAutoVarInit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">AutoVarEmission</a> &emission) {</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>   assert(emission.Variable && <span class="stringliteral">"emission was not valid!"</span>);</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>   <span class="comment">// If this was emitted as a global constant, we're done.</span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   <span class="keywordflow">if</span> (emission.wasEmittedAsGlobal()) <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="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D = *emission.Variable;</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</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> = D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> </div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <span class="comment">// If this local has an initializer, emit it now.</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init = D.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>();</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="comment">// If we are at an unreachable point, we don't need to emit the initializer</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>   <span class="comment">// unless it contains a label.</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>()) {</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>     <span class="keywordflow">if</span> (!Init || !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a16d5796516e60d010f4de5b0dd44889c">ContainsLabel</a>(Init)) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aebc753533aefb02b31dc6d12b1fb6e06">EnsureInsertPoint</a>();</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   }</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   <span class="comment">// Initialize the structure of a __block variable.</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>   <span class="keywordflow">if</span> (emission.IsByRef)</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0dbc38c9be2f80c325ff51f9c7e7723e">emitByrefStructureInit</a>(emission);</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>   <span class="keywordflow">if</span> (<a class="code" href="CGDecl_8cpp.html#a933ff7692f34a95e75d2da4f5c038931" title="Determine whether the given initializer is trivial in the sense that it requires no code to be genera...">isTrivialInitializer</a>(Init))</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> </div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> alignment = emission.Alignment;</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>   <span class="comment">// Check whether this is a byref variable that's potentially</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <span class="comment">// captured and moved by its own initializer.  If so, we'll need to</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="comment">// emit the initializer first, then copy into the variable.</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   <span class="keywordtype">bool</span> capturedByInit = emission.IsByRef && <a class="code" href="CGDecl_8cpp.html#a363a906b4637824555a65d3797167a4c">isCapturedBy</a>(D, Init);</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Loc =</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     capturedByInit ? emission.Address : emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#af36fd0f2dffed18cf07cdced23826e8f">getObjectAddress</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>   llvm::Constant *constant = 0;</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   <span class="keywordflow">if</span> (emission.IsConstantAggregate || D.<a class="code" href="classclang_1_1VarDecl.html#a2b869e48603ee23219d50f9c8843807a" title="Whether this variable is (C++11) constexpr.">isConstexpr</a>()) {</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     assert(!capturedByInit && <span class="stringliteral">"constant init contains a capturing block?"</span>);</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     constant = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a65ea94cb2a22d40ba51423a01fbfd5a3">EmitConstantInit</a>(D, <span class="keyword">this</span>);</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>   }</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> </div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   <span class="keywordflow">if</span> (!constant) {</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</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>(Loc, type, alignment);</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</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="l01096"></a><span class="lineno"> 1096</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afe4e8a7345f4c58c543eb338597c309b">EmitExprAsInit</a>(Init, &D, lv, capturedByInit);</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</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>   <span class="keywordflow">if</span> (!emission.IsConstantAggregate) {</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     <span class="comment">// For simple scalar/complex initialization, store the value directly.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</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>(Loc, type, alignment);</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</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="l01103"></a><span class="lineno"> 1103</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(constant), lv, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>   }</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   <span class="comment">// If this is a simple aggregate initialization, we can optimize it</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>   <span class="comment">// in various ways.</span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>   <span class="keywordtype">bool</span> isVolatile = type.<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="l01109"></a><span class="lineno"> 1109</span> </div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SizeVal =</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9cce048bcd175a468127b4eb05c050d2">IntPtrTy</a>,</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>                            <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getTypeSizeInChars(type).getQuantity());</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   llvm::Type *BP = <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>;</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="keywordflow">if</span> (Loc->getType() != BP)</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>     Loc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Loc, BP);</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">// If the initializer is all or mostly zeros, codegen with memset then do</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   <span class="comment">// a few stores afterward.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>   <span class="keywordflow">if</span> (<a class="code" href="CGDecl_8cpp.html#abec05cf1410dee375703a839981c64f8">shouldUseMemSetPlusStoresToInitialize</a>(constant,</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a7a01d2bf67fc7c685a8648809c0913a7">getDataLayout</a>().getTypeAllocSize(constant->getType()))) {</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemSet(Loc, llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a329e1a1ea4a981895ad14b70611e163b" title="i8, i16, i32, and i64">Int8Ty</a>, 0), SizeVal,</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</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="l01124"></a><span class="lineno"> 1124</span>     <span class="comment">// Zero and undef don't require a stores.</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     <span class="keywordflow">if</span> (!constant->isNullValue() && !isa<llvm::UndefValue>(constant)) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>       Loc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Loc, constant->getType()->getPointerTo());</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>       <a class="code" href="CGDecl_8cpp.html#a0520310eca01e8ad483259383670a95e">emitStoresForInitAfterMemset</a>(constant, Loc, isVolatile, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>);</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     }</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="comment">// Otherwise, create a temporary global with the initializer then</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     <span class="comment">// memcpy from the global to the alloca.</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     std::string Name = <a class="code" href="CGDecl_8cpp.html#a441ee3baf24a55b5773172543e346ce0">GetStaticDeclName</a>(*<span class="keyword">this</span>, D, <span class="stringliteral">"."</span>);</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     llvm::GlobalVariable *GV =</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>       <span class="keyword">new</span> llvm::GlobalVariable(<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>(), constant->getType(), <span class="keyword">true</span>,</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>                                llvm::GlobalValue::PrivateLinkage,</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>                                constant, Name);</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     GV->setAlignment(alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>());</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>     GV->setUnnamedAddr(<span class="keyword">true</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> *SrcPtr = GV;</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>     <span class="keywordflow">if</span> (SrcPtr->getType() != BP)</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>       SrcPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(SrcPtr, BP);</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>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateMemCpy(Loc, SrcPtr, SizeVal, alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>(),</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>                          isVolatile);</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   }</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> }</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="comment"></span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> <span class="comment">/// Emit an expression as an initializer for a variable at the given</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="comment">/// location.  The expression is not necessarily the normal</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <span class="comment">/// initializer for the variable, and the address is not necessarily</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="comment">/// its normal location.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="comment">/// \param init the initializing expression</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="comment">/// \param var the variable to act as if we're initializing</span></div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="comment">/// \param loc the address to initialize; its type is a pointer</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> <span class="comment">///   to the LLVM mapping of the variable's type</span></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="comment">/// \param alignment the alignment of the address</span></div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">/// \param capturedByInit true if the variable is a __block variable</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="comment">///   whose address is potentially changed by the initializer</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afe4e8a7345f4c58c543eb338597c309b"> 1161</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afe4e8a7345f4c58c543eb338597c309b">CodeGenFunction::EmitExprAsInit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *init,</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue,</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>                                      <span class="keywordtype">bool</span> capturedByInit) {</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</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> = D-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> rvalue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4032dd7767cd564a23c06daf0793ec21" title="Emits a reference binding to the passed in expression.">EmitReferenceBindingToExpr</a>(init);</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>     <span class="keywordflow">if</span> (capturedByInit)</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(*<span class="keyword">this</span>, lvalue, cast<VarDecl>(D));</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aab00f3161bf4956de6c490615544a734">EmitStoreThroughLValue</a>(rvalue, lvalue, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   }</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(type)) {</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>:</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">EmitScalarInit</a>(init, D, lvalue, capturedByInit);</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>: {</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">ComplexPairTy</a> complex = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a92660b9969aa3da022a8381e6debb48b">EmitComplexExpr</a>(init);</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="keywordflow">if</span> (capturedByInit)</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>       <a class="code" href="CGDecl_8cpp.html#ae6c5270f372fcea224b8cf08f2da41c9">drillIntoBlockVariable</a>(*<span class="keyword">this</span>, lvalue, cast<VarDecl>(D));</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa903765558c8982b2d81d97e637adda1" title="EmitStoreOfComplex - Store a complex number into the specified l-value.">EmitStoreOfComplex</a>(complex, lvalue, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   }</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>:</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#a626764b819022cad4c8812cc25bbeb4d">isAtomicType</a>()) {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2e789f52f50402f03b38ac7305c0ea86">EmitAtomicInit</a>(const_cast<Expr*>(init), lvalue);</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>       <span class="comment">// TODO: how can we delay here if D is captured by its initializer?</span></div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(init, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(lvalue,</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>                                          <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>));</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     }</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>   }</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</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"></span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="comment">/// Enter a destroy cleanup for the given local variable.</span></div>
+<div class="line"><a name="l01201"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa765e48aa8c5071e981c1a8dea17563a"> 1201</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa765e48aa8c5071e981c1a8dea17563a" title="Enter a destroy cleanup for the given local variable.">CodeGenFunction::emitAutoVarTypeCleanup</a>(</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">CodeGenFunction::AutoVarEmission</a> &emission,</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</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>   assert(dtorKind != <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca60f4838ac0cd80cff599fc5d88f7c272">QualType::DK_none</a>);</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   <span class="comment">// Note that for __block variables, we want to destroy the</span></div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="comment">// original stack object, not the possibly forwarded object.</span></div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr = emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#af36fd0f2dffed18cf07cdced23826e8f">getObjectAddress</a>(*<span class="keyword">this</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var = emission.Variable;</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</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> = var-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind = <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>;</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer = 0;</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>   <span class="keywordflow">switch</span> (dtorKind) {</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca60f4838ac0cd80cff599fc5d88f7c272">QualType::DK_none</a>:</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     llvm_unreachable(<span class="stringliteral">"no cleanup for trivially-destructible variable"</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="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca00b3c96ef35f8edc7a6fef32e3b89285">QualType::DK_cxx_destructor</a>:</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>     <span class="comment">// If there's an NRVO flag on the emission, we need a different</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="comment">// cleanup.</span></div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     <span class="keywordflow">if</span> (emission.NRVOFlag) {</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>       assert(!type-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>());</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *dtor = type-><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>()-><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="l01226"></a><span class="lineno"> 1226</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<DestroyNRVOVariable>(cleanupKind, addr, dtor,</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>                                                emission.NRVOFlag);</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     }</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> </div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfcad585d701cc19b3a22c6d3609a81379ad">QualType::DK_objc_strong_lifetime</a>:</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>     <span class="comment">// Suppress cleanups for pseudo-strong variables.</span></div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="keywordflow">if</span> (var-><a class="code" href="classclang_1_1VarDecl.html#a15bdce290ac352eb7b1bcee3fa2fc5e6" title="Determine whether this variable is an ARC pseudo-__strong variable. A pseudo-__strong variable has a ...">isARCPseudoStrong</a>()) <span class="keywordflow">return</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">// Otherwise, consider whether to use an EH cleanup or not.</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>     cleanupKind = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2accba30944ea68f763f67e3d31baa0a">getARCCleanupKind</a>();</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>     <span class="comment">// Use the imprecise destroyer by default.</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     <span class="keywordflow">if</span> (!var-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCPreciseLifetimeAttr.html">ObjCPreciseLifetimeAttr</a>>())</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>       destroyer = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a763a89a99e4b6b63fedbccd55a1a90e9">CodeGenFunction::destroyARCStrongImprecise</a>;</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> </div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfcaa70d10e9eca0ce9bedb369a4e4128654">QualType::DK_objc_weak_lifetime</a>:</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   }</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> </div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>   <span class="comment">// If we haven't chosen a more specific destroyer, use the default.</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <span class="keywordflow">if</span> (!destroyer) destroyer = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind);</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <span class="comment">// Use an EH cleanup in array destructors iff the destructor itself</span></div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="comment">// is being pushed as an EH cleanup.</span></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>   <span class="keywordtype">bool</span> useEHCleanup = (cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>);</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<DestroyObject>(cleanupKind, addr, <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, destroyer,</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>                                      useEHCleanup);</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> }</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div>
+<div class="line"><a name="l01258"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa92cef8f0df2b1f7f8aaadac281a3f23"> 1258</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa92cef8f0df2b1f7f8aaadac281a3f23">CodeGenFunction::EmitAutoVarCleanups</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">AutoVarEmission</a> &emission) {</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>   assert(emission.Variable && <span class="stringliteral">"emission was not valid!"</span>);</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>   <span class="comment">// If this was emitted as a global constant, we're done.</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   <span class="keywordflow">if</span> (emission.wasEmittedAsGlobal()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> </div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   <span class="comment">// If we don't have an insertion point, we're done.  Sema prevents</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>   <span class="comment">// us from jumping into any of these scopes anyway.</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>()) <span class="keywordflow">return</span>;</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D = *emission.Variable;</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> </div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>   <span class="comment">// Make sure we call @llvm.lifetime.end.  This needs to happen</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="comment">// *last*, so the cleanup needs to be pushed *first*.</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="keywordflow">if</span> (emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#a11c3ea3371befb7baa1efa1ab11c0c2b">useLifetimeMarkers</a>()) {</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallLifetimeEnd>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>,</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>                                          emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#ad4737b2a452cbcbdd7802a67882403e3">getAllocatedAddress</a>(),</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>                                          emission.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#a2a1b21dc8b77ea88c5f0d54574c08bdb">getSizeForLifetimeMarkers</a>());</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   }</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>   <span class="comment">// Check the type for a cleanup.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>())</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa765e48aa8c5071e981c1a8dea17563a" title="Enter a destroy cleanup for the given local variable.">emitAutoVarTypeCleanup</a>(emission, dtorKind);</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> </div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   <span class="comment">// In GC mode, honor objc_precise_lifetime.</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a> &&</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>       D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCPreciseLifetimeAttr.html">ObjCPreciseLifetimeAttr</a>>()) {</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<ExtendGCLifetime>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, &D);</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>   <span class="comment">// Handle the cleanup attribute.</span></div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CleanupAttr.html">CleanupAttr</a> *CA = D.<a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a><<a class="code" href="classclang_1_1CleanupAttr.html">CleanupAttr</a>>()) {</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = CA->getFunctionDecl();</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> </div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>     llvm::Constant *F = <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>(FD);</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>     assert(F && <span class="stringliteral">"Could not find function!"</span>);</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> </div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &Info = <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#ad7efb9a499023cd3c642a5d7da8a5050">arrangeFunctionDeclaration</a>(FD);</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallCleanupFunction>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, F, &Info, &D);</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>   <span class="comment">// If this is a block variable, call _Block_object_destroy</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>   <span class="comment">// (on the unforwarded address).</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>   <span class="keywordflow">if</span> (emission.IsByRef)</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a03c21590fdfa2d7f916a541eaaf48ede">enterByrefCleanup</a>(emission);</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> </div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *</div>
+<div class="line"><a name="l01306"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12"> 1306</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">CodeGenFunction::getDestroyer</a>(<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</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="l01307"></a><span class="lineno"> 1307</span>   <span class="keywordflow">switch</span> (kind) {</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca60f4838ac0cd80cff599fc5d88f7c272">QualType::DK_none</a>: llvm_unreachable(<span class="stringliteral">"no destroyer for trivial dtor"</span>);</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca00b3c96ef35f8edc7a6fef32e3b89285">QualType::DK_cxx_destructor</a>:</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4be898907517e22404c9140827358d90">destroyCXXObject</a>;</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfcad585d701cc19b3a22c6d3609a81379ad">QualType::DK_objc_strong_lifetime</a>:</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aed2746a127c4a525fffc41bee41b0476">destroyARCStrongPrecise</a>;</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfcaa70d10e9eca0ce9bedb369a4e4128654">QualType::DK_objc_weak_lifetime</a>:</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1faef89e589b0be992e3ac6f6d76c468">destroyARCWeak</a>;</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>   }</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   llvm_unreachable(<span class="stringliteral">"Unknown DestructionKind"</span>);</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> }</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> <span class="comment"></span></div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="comment">/// pushEHDestroy - Push the standard destructor for the given type as</span></div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="comment">/// an EH-only cleanup.</span></div>
+<div class="line"><a name="l01321"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8b6fda20a3bbdf536eb02b51af2f1007"> 1321</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8b6fda20a3bbdf536eb02b51af2f1007">CodeGenFunction::pushEHDestroy</a>(<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind,</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>   assert(dtorKind && <span class="stringliteral">"cannot push destructor for trivial type"</span>);</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab5de8b85a1f54e0dd9d5dce5527faf23">needsEHCleanup</a>(dtorKind));</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, addr, type, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <span class="comment"></span></div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> <span class="comment">/// pushDestroy - Push the standard destructor for the given type as</span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> <span class="comment">/// at least a normal cleanup.</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb"> 1331</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">CodeGenFunction::pushDestroy</a>(<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind,</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>) {</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   assert(dtorKind && <span class="stringliteral">"cannot push destructor for trivial type"</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>   <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7774ca5dab3b221895fcbf1529084f5">getCleanupKind</a>(dtorKind);</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(cleanupKind, addr, type, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a581121a1e37fc0e596c24c58f93b0e12">getDestroyer</a>(dtorKind),</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>               cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>);</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"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a72f99eec10e47ddebf33ac7895ebedd9"> 1340</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">CodeGenFunction::pushDestroy</a>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr,</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</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>, Destroyer *destroyer,</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>                                   <span class="keywordtype">bool</span> useEHCleanupForArray) {</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   pushFullExprCleanup<DestroyObject>(cleanupKind, addr, <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="l01344"></a><span class="lineno"> 1344</span>                                      destroyer, useEHCleanupForArray);</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</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"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acaa9ec18a2b1a90ccb07a5f379b5b9d8"> 1347</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acaa9ec18a2b1a90ccb07a5f379b5b9d8">CodeGenFunction::pushLifetimeExtendedDestroy</a>(</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>     Destroyer *destroyer, <span class="keywordtype">bool</span> useEHCleanupForArray) {</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>   assert(!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a031fe736ab2254d7a58ae0ababaa2219">isInConditionalBranch</a>() &&</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>          <span class="stringliteral">"performing lifetime extension from within conditional"</span>);</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> </div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   <span class="comment">// Push an EH-only cleanup for the object now.</span></div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>   <span class="comment">// FIXME: When popping normal cleanups, we need to keep this EH cleanup</span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <span class="comment">// around in case a temporary's destructor throws an exception.</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   <span class="keywordflow">if</span> (cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>)</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<DestroyObject>(</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>         <span class="keyword">static_cast<</span><a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a><span class="keyword">></span>(cleanupKind & ~<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>), addr, type,</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>         destroyer, useEHCleanupForArray);</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> </div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>   <span class="comment">// Remember that we need to push a full cleanup for the object at the</span></div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>   <span class="comment">// end of the full-expression.</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>   pushCleanupAfterFullExpr<DestroyObject>(</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       cleanupKind, addr, <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, destroyer, useEHCleanupForArray);</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="comment"></span></div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="comment">/// emitDestroy - Immediately perform the destruction of the given</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="comment">/// object.</span></div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <span class="comment">/// \param addr - the address of the object; a type*</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="comment">/// \param type - the type of the object; if an array type, all</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> <span class="comment">///   objects are destroyed in reverse order</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> <span class="comment">/// \param destroyer - the function to call to destroy individual</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <span class="comment">///   elements</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> <span class="comment">/// \param useEHCleanupForArray - whether an EH cleanup should be</span></div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> <span class="comment">///   used when destroying array elements, in case one of the</span></div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> <span class="comment">///   destructions throws an exception</span></div>
+<div class="line"><a name="l01378"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9aaad21865e78a4de5b46182c55f5a35"> 1378</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9aaad21865e78a4de5b46182c55f5a35">CodeGenFunction::emitDestroy</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>                                   Destroyer *destroyer,</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>                                   <span class="keywordtype">bool</span> useEHCleanupForArray) {</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *arrayType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(type);</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   <span class="keywordflow">if</span> (!arrayType)</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     <span class="keywordflow">return</span> destroyer(*<span class="keyword">this</span>, addr, type);</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> </div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *begin = addr;</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *length = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1613f1240d4d1a98118e495b96eb8a99">emitArrayLength</a>(arrayType, type, begin);</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>   <span class="comment">// Normally we have to check whether the array is zero-length.</span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   <span class="keywordtype">bool</span> checkZeroLength = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> </div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>   <span class="comment">// But if the array length is constant, we can suppress that.</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>   <span class="keywordflow">if</span> (llvm::ConstantInt *constLength = dyn_cast<llvm::ConstantInt>(length)) {</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     <span class="comment">// ...and if it's constant zero, we can just skip the entire thing.</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>     <span class="keywordflow">if</span> (constLength->isZero()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>     checkZeroLength = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *end = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(begin, length);</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23541801eeae0273a8b6c468496baf1">emitArrayDestroy</a>(begin, end, type, destroyer,</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>                    checkZeroLength, useEHCleanupForArray);</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> }</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="comment"></span></div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="comment">/// emitArrayDestroy - Destroys all the elements of the given array,</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="comment">/// beginning from last to first.  The array cannot be zero-length.</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="comment">/// \param begin - a type* denoting the first element of the array</span></div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="comment">/// \param end - a type* denoting one past the end of the array</span></div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="comment">/// \param type - the element type of the array</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="comment">/// \param destroyer - the function to call to destroy elements</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> <span class="comment">/// \param useEHCleanup - whether to push an EH cleanup to destroy</span></div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="comment">///   the remaining elements in case the destruction of a single</span></div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> <span class="comment">///   element throws</span></div>
+<div class="line"><a name="l01413"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23541801eeae0273a8b6c468496baf1"> 1413</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23541801eeae0273a8b6c468496baf1">CodeGenFunction::emitArrayDestroy</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *begin,</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>                                        <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *end,</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>                                        <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>                                        Destroyer *destroyer,</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>                                        <span class="keywordtype">bool</span> checkZeroLength,</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>                                        <span class="keywordtype">bool</span> useEHCleanup) {</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>   assert(!type-><a class="code" href="classclang_1_1Type.html#a53b83bd119ae77bc77e92dc69a8c8094">isArrayType</a>());</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> </div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   <span class="comment">// The basic structure here is a do-while loop, because we don't</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="comment">// need to check for the zero-element case.</span></div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   llvm::BasicBlock *bodyBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"arraydestroy.body"</span>);</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>   llvm::BasicBlock *doneBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"arraydestroy.done"</span>);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>   <span class="keywordflow">if</span> (checkZeroLength) {</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</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(begin, end,</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>                                                 <span class="stringliteral">"arraydestroy.isempty"</span>);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(isEmpty, doneBB, bodyBB);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   }</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">// Enter the loop body, making that address the current address.</span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>   llvm::BasicBlock *entryBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock();</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(bodyBB);</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   llvm::PHINode *elementPast =</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(begin->getType(), 2, <span class="stringliteral">"arraydestroy.elementPast"</span>);</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   elementPast->addIncoming(end, entryBB);</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   <span class="comment">// Shift the address back by one element.</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *negativeOne = llvm::ConstantInt::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, -1, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *element = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(elementPast, negativeOne,</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>                                                    <span class="stringliteral">"arraydestroy.element"</span>);</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> </div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>   <span class="keywordflow">if</span> (useEHCleanup)</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a21c0cccb40980a1b634413a4bce5b277">pushRegularPartialArrayCleanup</a>(begin, element, type, destroyer);</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">// Perform the actual destruction there.</span></div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>   destroyer(*<span class="keyword">this</span>, element, type);</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">if</span> (useEHCleanup)</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adce8f79b4f9258e2f3bd7a4d2faf4ed9" title="Pops a cleanup block. If the block includes a normal cleanup, the current insertion point is threaded...">PopCleanupBlock</a>();</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> </div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   <span class="comment">// Check whether we've reached the end.</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *done = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(element, begin, <span class="stringliteral">"arraydestroy.done"</span>);</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(done, doneBB, bodyBB);</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   elementPast->addIncoming(element, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock());</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>   <span class="comment">// Done.</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(doneBB);</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> <span class="comment"></span></div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="comment">/// Perform partial array destruction as if in an EH cleanup.  Unlike</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">/// emitArrayDestroy, the element type here may still be an array type.</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"><a class="code" href="CGDecl_8cpp.html#a6afeff767983269c962deaabab71cd5e"> 1464</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGDecl_8cpp.html#a6afeff767983269c962deaabab71cd5e">emitPartialArrayDestroy</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>                                     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *begin, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *end,</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>                                     <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer) {</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>   <span class="comment">// If the element type is itself an array, drill down.</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   <span class="keywordtype">unsigned</span> arrayDepth = 0;</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>   <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ArrayType.html">ArrayType</a> *arrayType = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a2f9f0d5fa876bf2fb8be3fdd0fc70244">getAsArrayType</a>(type)) {</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>     <span class="comment">// VLAs don't require a GEP index to walk into.</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     <span class="keywordflow">if</span> (!isa<VariableArrayType>(arrayType))</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>       arrayDepth++;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>     type = arrayType->getElementType();</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>   }</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> </div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   <span class="keywordflow">if</span> (arrayDepth) {</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *zero = llvm::ConstantInt::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, arrayDepth+1);</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*,4></a> gepIndices(arrayDepth, zero);</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>     begin = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(begin, gepIndices, <span class="stringliteral">"pad.arraybegin"</span>);</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>     end = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(end, gepIndices, <span class="stringliteral">"pad.arrayend"</span>);</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   }</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> </div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="comment">// Destroy the array.  We don't ever need an EH cleanup because we</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <span class="comment">// assume that we're in an EH cleanup ourselves, so a throwing</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="comment">// destructor causes an immediate terminate.</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23541801eeae0273a8b6c468496baf1">emitArrayDestroy</a>(begin, end, type, destroyer,</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>                        <span class="comment">/*checkZeroLength*/</span> <span class="keyword">true</span>, <span class="comment">/*useEHCleanup*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> }</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="comment">  /// RegularPartialArrayDestroy - a cleanup which performs a partial</span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="comment">  /// array destroy where the end pointer is regularly determined and</span></div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment">  /// does not need to be loaded from a local.</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment"></span>  <span class="keyword">class </span>RegularPartialArrayDestroy : <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="l01497"></a><span class="lineno"> 1497</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayBegin;</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayEnd;</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *Destroyer;</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>     RegularPartialArrayDestroy(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEnd,</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>                                <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType,</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>                                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer)</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>       : ArrayBegin(arrayBegin), ArrayEnd(arrayEnd),</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>         ElementType(elementType), Destroyer(destroyer) {}</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> </div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>     <span class="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="l01509"></a><span class="lineno"> 1509</span>       <a class="code" href="CGDecl_8cpp.html#a6afeff767983269c962deaabab71cd5e">emitPartialArrayDestroy</a>(CGF, ArrayBegin, ArrayEnd,</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>                               ElementType, Destroyer);</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>   };</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> <span class="comment"></span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> <span class="comment">  /// IrregularPartialArrayDestroy - a cleanup which performs a</span></div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> <span class="comment">  /// partial array destroy where the end pointer is irregularly</span></div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="comment">  /// determined and must be loaded from a local.</span></div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> <span class="comment"></span>  <span class="keyword">class </span>IrregularPartialArrayDestroy : <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="l01518"></a><span class="lineno"> 1518</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayBegin;</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ArrayEndPointer;</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType;</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *Destroyer;</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>     IrregularPartialArrayDestroy(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin,</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>                                  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEndPointer,</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType,</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>                                  <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer)</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>       : ArrayBegin(arrayBegin), ArrayEndPointer(arrayEndPointer),</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>         ElementType(elementType), Destroyer(destroyer) {}</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> </div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</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="l01531"></a><span class="lineno"> 1531</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEnd = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(ArrayEndPointer);</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>       <a class="code" href="CGDecl_8cpp.html#a6afeff767983269c962deaabab71cd5e">emitPartialArrayDestroy</a>(CGF, ArrayBegin, arrayEnd,</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>                               ElementType, Destroyer);</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>     }</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>   };</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> }</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="comment"></span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> <span class="comment">/// pushIrregularPartialArrayCleanup - Push an EH cleanup to destroy</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="comment">/// already-constructed elements of the given array.  The cleanup</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> <span class="comment">/// may be popped with DeactivateCleanupBlock or PopCleanupBlock.</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> <span class="comment">/// \param elementType - the immediate element type of the array;</span></div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> <span class="comment">///   possibly still an array type</span></div>
+<div class="line"><a name="l01544"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e775e1217a397d86340718d5edf5a2"> 1544</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e775e1217a397d86340718d5edf5a2">CodeGenFunction::pushIrregularPartialArrayCleanup</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin,</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>                                                  <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEndPointer,</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>                                                        <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType,</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>                                                        Destroyer *destroyer) {</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   pushFullExprCleanup<IrregularPartialArrayDestroy>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>,</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>                                                     arrayBegin, arrayEndPointer,</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>                                                     elementType, destroyer);</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> }</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> <span class="comment"></span></div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> <span class="comment">/// pushRegularPartialArrayCleanup - Push an EH cleanup to destroy</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> <span class="comment">/// already-constructed elements of the given array.  The cleanup</span></div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="comment">/// may be popped with DeactivateCleanupBlock or PopCleanupBlock.</span></div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="comment">/// \param elementType - the immediate element type of the array;</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="comment">///   possibly still an array type</span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a21c0cccb40980a1b634413a4bce5b277"> 1559</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a21c0cccb40980a1b634413a4bce5b277">CodeGenFunction::pushRegularPartialArrayCleanup</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayBegin,</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>                                                      <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *arrayEnd,</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>                                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType,</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>                                                      Destroyer *destroyer) {</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>   pushFullExprCleanup<RegularPartialArrayDestroy>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>,</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>                                                   arrayBegin, arrayEnd,</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>                                                   elementType, destroyer);</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> }</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> <span class="comment"></span></div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> <span class="comment">/// Lazily declare the @llvm.lifetime.start intrinsic.</span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a5cc689177644f1f269865d7094b1a6e6"> 1569</a></span> <span class="comment"></span>llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a5cc689177644f1f269865d7094b1a6e6" title="Lazily declare the .lifetime.start intrinsic.">CodeGenModule::getLLVMLifetimeStartFn</a>() {</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>   <span class="keywordflow">if</span> (LifetimeStartFn) <span class="keywordflow">return</span> LifetimeStartFn;</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   LifetimeStartFn = llvm::Intrinsic::getDeclaration(&<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>(),</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>                                             llvm::Intrinsic::lifetime_start);</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>   <span class="keywordflow">return</span> LifetimeStartFn;</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> }</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> <span class="comment"></span></div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> <span class="comment">/// Lazily declare the @llvm.lifetime.end intrinsic.</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#aa7436ca1cfd85c5aba3778ac8ac9f38f"> 1577</a></span> <span class="comment"></span>llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#aa7436ca1cfd85c5aba3778ac8ac9f38f" title="Lazily declare the .lifetime.end intrinsic.">CodeGenModule::getLLVMLifetimeEndFn</a>() {</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>   <span class="keywordflow">if</span> (LifetimeEndFn) <span class="keywordflow">return</span> LifetimeEndFn;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>   LifetimeEndFn = llvm::Intrinsic::getDeclaration(&<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>(),</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>                                               llvm::Intrinsic::lifetime_end);</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   <span class="keywordflow">return</span> LifetimeEndFn;</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> }</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment">  /// A cleanup to perform a release of an object at the end of a</span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment">  /// function.  This is used to balance out the incoming +1 of a</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <span class="comment">  /// ns_consumed argument when we can't reasonably do that just by</span></div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="comment">  /// not doing the initial retain for a __block argument.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <span class="comment"></span>  <span class="keyword">struct </span>ConsumeARCParameter : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     ConsumeARCParameter(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *param,</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>                         <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0" title="Does an ARC strong l-value have precise lifetime?">ARCPreciseLifetime_t</a> precise)</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>       : <a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>(param), Precise(precise) {}</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>     <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0" title="Does an ARC strong l-value have precise lifetime?">ARCPreciseLifetime_t</a> Precise;</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> </div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>     <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="l01598"></a><span class="lineno"> 1598</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>, Precise);</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>     }</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   };</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> }</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> <span class="comment"></span></div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span> <span class="comment">/// Emit an alloca (or GlobalValue depending on target)</span></div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> <span class="comment">/// for the specified parameter and set up LocalDeclMap.</span></div>
+<div class="line"><a name="l01605"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438"> 1605</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0f6e7571feb12b1d1214ab940ec3d438" title="EmitParmDecl - Emit a ParmVarDecl or an ImplicitParamDecl.">CodeGenFunction::EmitParmDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &D, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Arg,</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>                                    <span class="keywordtype">unsigned</span> ArgNo) {</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   <span class="comment">// FIXME: Why isn't ImplicitParamDecl a ParmVarDecl?</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   assert((isa<ParmVarDecl>(D) || isa<ImplicitParamDecl>(D)) &&</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>          <span class="stringliteral">"Invalid argument to EmitParmDecl"</span>);</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> </div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>   Arg->setName(D.<a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>());</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>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <span class="comment">// Use better IR generation for certain implicit parameters.</span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="keywordflow">if</span> (isa<ImplicitParamDecl>(D)) {</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     <span class="comment">// The only implicit argument a block has is its literal.</span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a49e7f272c19bddf53ac3ca76b76e875e">BlockInfo</a>) {</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>       LocalDeclMap[&D] = Arg;</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LocalAddr = 0;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0) {</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>         <span class="comment">// Allocate a stack slot to let the debug info survive the RA.</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>         llvm::AllocaInst *Alloc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(Ty),</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>                                                    D.<a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">".addr"</span>);</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>         Alloc->setAlignment(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getDeclAlign(&D).getQuantity());</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</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>(Alloc, Ty, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getDeclAlign(&D));</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(Arg, lv, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>         LocalAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(Alloc);</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>       }</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> </div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>()) {</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().getDebugInfo()</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>               >= <a class="code" href="classclang_1_1CodeGenOptions.html#ab49a2a2a0a68577a07a9c0b730fb3cf6ae0f1c5168d0708ca9bd151ea9d89a3d8">CodeGenOptions::LimitedDebugInfo</a>) {</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>           DI->setLocation(D.<a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>           DI->EmitDeclareOfBlockLiteralArgVariable(*<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a49e7f272c19bddf53ac3ca76b76e875e">BlockInfo</a>, Arg, LocalAddr, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>);</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>         }</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>       }</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</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> </div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DeclPtr;</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   <span class="keywordtype">bool</span> HasNonScalarEvalKind = !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c6e4fe9ddc3eb21b00b36f9655a7bf4">CodeGenFunction::hasScalarEvaluationKind</a>(Ty);</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <span class="comment">// If this is an aggregate or variable sized value, reuse the input pointer.</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   <span class="keywordflow">if</span> (HasNonScalarEvalKind || !Ty-><a class="code" href="classclang_1_1Type.html#a44b461aa094dcddc539f28318e461117">isConstantSizeType</a>()) {</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>     DeclPtr = Arg;</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>     <span class="comment">// Push a destructor cleanup for this parameter if the ABI requires it.</span></div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>     <span class="keywordflow">if</span> (HasNonScalarEvalKind &&</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>         <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a99a31085fa0c84b27925137b3f6f6b97">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a775f59ee5320dd4b20abde5d724a43f3" title="Get the C++ ABI currently in use.">getCXXABI</a>().<a class="code" href="classclang_1_1TargetCXXABI.html#a8f7c36046f91e49fe9f000e4bf39c2a7">isArgumentDestroyedByCallee</a>()) {</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD = Ty-><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="l01652"></a><span class="lineno"> 1652</span>         <span class="keywordflow">if</span> (RD->hasNonTrivialDestructor())</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a642101502fd1205cd71b9f365695d0fb">pushDestroy</a>(<a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfca00b3c96ef35f8edc7a6fef32e3b89285">QualType::DK_cxx_destructor</a>, DeclPtr, Ty);</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>       }</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>     }</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>     <span class="comment">// Otherwise, create a temporary to hold the value.</span></div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>     llvm::AllocaInst *Alloc = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(Ty),</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>                                                D.<a class="code" href="classclang_1_1NamedDecl.html#aaf790590f634520a99e0b45699fc45c3">getName</a>() + <span class="stringliteral">".addr"</span>);</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Align = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(&D);</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>     Alloc->setAlignment(Align.getQuantity());</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>     DeclPtr = Alloc;</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> </div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>     <span class="keywordtype">bool</span> doStore = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>     <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a> qs = Ty.<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="l01667"></a><span class="lineno"> 1667</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>(DeclPtr, Ty, Align);</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300">Qualifiers::ObjCLifetime</a> lt = qs.<a class="code" href="classclang_1_1Qualifiers.html#adc87b34275b3ffb4f05274cc1fe0ecf7">getObjCLifetime</a>()) {</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>       <span class="comment">// We honor __attribute__((ns_consumed)) for types with lifetime.</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>       <span class="comment">// For __strong, it's handled by just skipping the initial retain;</span></div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>       <span class="comment">// otherwise we have to balance out the initial +1 with an extra</span></div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>       <span class="comment">// cleanup to do the release at the end of the function.</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>       <span class="keywordtype">bool</span> isConsumed = D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumedAttr.html">NSConsumedAttr</a>>();</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>       <span class="comment">// 'self' is always formally __strong, but if this is not an</span></div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>       <span class="comment">// init method then we don't want to retain it.</span></div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>       <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1VarDecl.html#a15bdce290ac352eb7b1bcee3fa2fc5e6" title="Determine whether this variable is an ARC pseudo-__strong variable. A pseudo-__strong variable has a ...">isARCPseudoStrong</a>()) {</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = cast<ObjCMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>);</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>         assert(&D == method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>());</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>         assert(lt == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>);</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>         assert(qs.<a class="code" href="classclang_1_1Qualifiers.html#aa4c1d746c952f79ff74dc3f3a88c21fa">hasConst</a>());</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>         assert(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>() != <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7749fb8107514089095277752fe75ece">OMF_init</a>);</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>         (void) method;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>         lt = <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>;</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>       }</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span> </div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>       <span class="keywordflow">if</span> (lt == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>) {</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>         <span class="keywordflow">if</span> (!isConsumed) {</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0) {</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>             <span class="comment">// use objc_storeStrong(&dest, value) for retaining the</span></div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>             <span class="comment">// object. But first, store a null into 'dest' because</span></div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>             <span class="comment">// objc_storeStrong attempts to release its old value.</span></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>             <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Null = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#adb80a01436354fb32cedf9a6d639d48c">EmitNullConstant</a>(D.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(Null, lv, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd">EmitARCStoreStrongCall</a>(lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), Arg, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>             doStore = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>           }</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>           <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>           <span class="comment">// Don't use objc_retainBlock for block pointers, because we</span></div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>           <span class="comment">// don't want to Block_copy something just because we got it</span></div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>           <span class="comment">// as a parameter.</span></div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>             Arg = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(Arg);</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>         }</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>         <span class="comment">// Push the cleanup for a consumed parameter.</span></div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>         <span class="keywordflow">if</span> (isConsumed) {</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>           <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0" title="Does an ARC strong l-value have precise lifetime?">ARCPreciseLifetime_t</a> precise = (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCPreciseLifetimeAttr.html">ObjCPreciseLifetimeAttr</a>>()</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>                                 ? <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a1fa599feff7af33fae2bda52a0a6a516">ARCPreciseLifetime</a> : <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a6ec820d64b2841f94059b9e637e82aa7">ARCImpreciseLifetime</a>);</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<ConsumeARCParameter>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2accba30944ea68f763f67e3d31baa0a">getARCCleanupKind</a>(), Arg,</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>                                                    precise);</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>         }</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> </div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>         <span class="keywordflow">if</span> (lt == <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="l01714"></a><span class="lineno"> 1714</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(DeclPtr, Arg);</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>           doStore = <span class="keyword">false</span>; <span class="comment">// The weak init is a store, no need to do two.</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>         }</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>       }</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> </div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>       <span class="comment">// Enter the cleanup scope.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>       <a class="code" href="CGDecl_8cpp.html#a75636132af3e3b4c3b8b53cf8be52add">EmitAutoVarWithLifetime</a>(*<span class="keyword">this</span>, D, DeclPtr, lt);</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>     }</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="comment">// Store the initial value into the alloca.</span></div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     <span class="keywordflow">if</span> (doStore)</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(Arg, lv, <span class="comment">/* isInitialization */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>   }</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> </div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *&DMEntry = LocalDeclMap[&D];</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   assert(DMEntry == 0 && <span class="stringliteral">"Decl already exists in localdeclmap!"</span>);</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   DMEntry = DeclPtr;</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">// Emit debug info for param declaration.</span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>()) {</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</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#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().getDebugInfo()</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>           >= <a class="code" href="classclang_1_1CodeGenOptions.html#ab49a2a2a0a68577a07a9c0b730fb3cf6ae0f1c5168d0708ca9bd151ea9d89a3d8">CodeGenOptions::LimitedDebugInfo</a>) {</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>       DI->EmitDeclareOfArgVariable(&D, DeclPtr, ArgNo, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>);</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>     }</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>   }</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> </div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>   <span class="keywordflow">if</span> (D.<a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1AnnotateAttr.html">AnnotateAttr</a>>())</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a42310ca5cdaef5258d0c114d22995a11" title="Emit local annotations for the local variable V, declared by D.">EmitVarAnnotations</a>(&D, DeclPtr);</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:23 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/CGDecl_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGDecl_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,667 @@
+<!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: CGDecl.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">CGDecl.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGDecl_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/CGDecl.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGDecl.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGDecl.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 CGOpenCLRuntime.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> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> CodeGenFunction.h:</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> CGBuilder.h:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> /home/tstellar/llvm/include/llvm/IR/IRBuilder.h:</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/IR/BasicBlock.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/ADT/ilist.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/IR/Instruction.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/ADT/ilist_node.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/include/llvm/IR/User.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/include/llvm/IR/Use.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/include/llvm/Support/DebugLoc.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/include/llvm/IR/Instruction.def:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/include/llvm/IR/DataLayout.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/include/llvm/IR/Type.h:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/PassSupport.h:</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> /home/tstellar/llvm/include/llvm/Pass.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/include/llvm/InitializePasses.h:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/include/llvm/PassRegistry.h:</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> /home/tstellar/llvm/include/llvm/Support/Atomic.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/include/llvm/Support/Valgrind.h:</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> /home/tstellar/llvm/include/llvm/IR/Instructions.h:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/include/llvm/IR/Attributes.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> /home/tstellar/llvm/include/llvm/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="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/IR/InstrTypes.h:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> /home/tstellar/llvm/include/llvm/IR/OperandTraits.h:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/include/llvm/IR/LLVMContext.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/include/llvm/IR/Operator.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/include/llvm/IR/Constants.h:</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> /home/tstellar/llvm/include/llvm/IR/Constant.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/include/llvm/Support/ValueHandle.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> CGDebugInfo.h:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/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="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> /home/tstellar/llvm/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="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</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="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h:</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def:</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> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/include/llvm/Support/Dwarf.h:</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> CGValue.h:</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> EHScopeStack.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> CodeGenModule.h:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> CGVTables.h:</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h:</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> </div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> /home/tstellar/llvm/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="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h:</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h:</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h:</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> </div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h:</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> /home/tstellar/llvm/include/llvm/IR/GlobalValue.h:</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> CodeGenTypes.h:</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> CGCall.h:</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> ABIInfo.h:</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h:</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> /home/tstellar/llvm/include/llvm/IR/Module.h:</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> /home/tstellar/llvm/include/llvm/IR/Function.h:</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> /home/tstellar/llvm/include/llvm/IR/Argument.h:</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h:</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h:</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> </div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h:</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h:</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> </div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h:</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> </div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> </div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> /home/tstellar/llvm/include/llvm/Support/Debug.h:</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> </div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> CGOpenCLRuntime.h:</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> </div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.h:</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> </div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen:</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:23 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/CGException_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGException_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGException_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGException_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1783 @@
+<!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: CGException.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">CGException.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGException_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">//===--- CGException.cpp - Emit LLVM Code for C++ exceptions --------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This contains code dealing with C++ exception related code generation.</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="CGCleanup_8h.html">CGCleanup.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CGObjCRuntime_8h.html">CGObjCRuntime.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="lib_2CodeGen_2TargetInfo_8h.html">TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="StmtCXX_8h.html">clang/AST/StmtCXX.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="StmtObjC_8h.html" title="Defines the Objective-C statement AST node classes.">clang/AST/StmtObjC.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/IR/Intrinsics.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/Support/CallSite.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a64f02027dea46a3532289cb40229fef1">   26</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a64f02027dea46a3532289cb40229fef1">getAllocateExceptionFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="comment">// void *__cxa_allocate_exception(size_t thrown_size);</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a91ff72566394e59c6ffe25b21016f289">SizeTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</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="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_allocate_exception"</span>);</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> }</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a528d3f4c972d6f9793baf9ec1a5b964a">   35</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a528d3f4c972d6f9793baf9ec1a5b964a">getFreeExceptionFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="comment">// void __cxa_free_exception(void *thrown_exception);</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_free_exception"</span>);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a758539093d1b196c54194cf110290fb0">   44</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a758539093d1b196c54194cf110290fb0">getThrowFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="comment">// void __cxa_throw(void *thrown_exception, std::type_info *tinfo,</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="comment">//                  void (*dest) (void *));</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   llvm::Type *<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>[3] = { CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a> };</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, Args, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_throw"</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> </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a7d39c64bc82f0befcbe3f19686085e9a">   55</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a7d39c64bc82f0befcbe3f19686085e9a">getReThrowFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="comment">// void __cxa_rethrow();</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>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_rethrow"</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> </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#aed535d55b39f6d129ece2fa582299101">   64</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#aed535d55b39f6d129ece2fa582299101">getGetExceptionPtrFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="comment">// void *__cxa_get_exception_ptr(void*);</span></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>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_get_exception_ptr"</span>);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> }</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#afa6aa0d1c12ad1ef384793aa41d17f2b">   73</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#afa6aa0d1c12ad1ef384793aa41d17f2b">getBeginCatchFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="comment">// void *__cxa_begin_catch(void*);</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_begin_catch"</span>);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> }</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a4b9e0d0e87a381feb559df3879008870">   82</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a4b9e0d0e87a381feb559df3879008870">getEndCatchFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="comment">// void __cxa_end_catch();</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_end_catch"</span>);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> }</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#aa0785649a914a3cdc95e70914105e9c0">   91</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#aa0785649a914a3cdc95e70914105e9c0">getUnexpectedFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">// void __cxa_call_unexpected(void *thrown_exception);</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>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"__cxa_call_unexpected"</span>);</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a97c9cf9e1965d24c80da0a14259bf684">  100</a></span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a97c9cf9e1965d24c80da0a14259bf684">CodeGenFunction::getUnwindResumeFn</a>() {</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     llvm::FunctionType::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</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="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>().SjLjExceptions)</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"_Unwind_SjLj_Resume"</span>);</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"_Unwind_Resume"</span>);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> }</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a840406ee120504741e5b6abd0480f85a">  109</a></span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a840406ee120504741e5b6abd0480f85a">CodeGenFunction::getUnwindResumeOrRethrowFn</a>() {</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     llvm::FunctionType::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</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="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>().SjLjExceptions)</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"_Unwind_SjLj_Resume_or_Rethrow"</span>);</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</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#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, <span class="stringliteral">"_Unwind_Resume_or_Rethrow"</span>);</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> }</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a710554906695de7b2c7e0c7634e57f12">  118</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a710554906695de7b2c7e0c7634e57f12">getTerminateFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   <span class="comment">// void __terminate();</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   StringRef name;</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>   <span class="comment">// In C++, use std::terminate().</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().CPlusPlus)</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     name = <span class="stringliteral">"_ZSt9terminatev"</span>; <span class="comment">// FIXME: mangling!</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().ObjC1 &&</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>            CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a9a010004937c19c36c5502079aa99995" title="Does this runtime provide an objc_terminate function?">hasTerminate</a>())</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     name = <span class="stringliteral">"objc_terminate"</span>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     name = <span class="stringliteral">"abort"</span>;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, name);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> }</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#abc8766e1d4ec73296c0359fd0030f23f">  137</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#abc8766e1d4ec73296c0359fd0030f23f">getCatchallRethrowFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>                                             StringRef Name) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   llvm::FunctionType *FTy =</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="comment">/*IsVarArgs=*/</span><span class="keyword">false</span>);</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>   <span class="keywordflow">return</span> CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(FTy, Name);</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> }</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">  /// The exceptions personality for a function.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment"></span>  <span class="keyword">struct </span>EHPersonality {</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *PersonalityFn;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="comment">// If this is non-null, this personality requires a non-standard</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="comment">// function for rethrowing an exception after a catchall cleanup.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="comment">// This function must have prototype void(void*).</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *CatchallRethrowFn;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality &<span class="keyword">get</span>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Lang);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_C;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_C_SJLJ;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_ObjC;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNUstep_ObjC;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_ObjCXX;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality NeXT_ObjC;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_CPlusPlus;</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality GNU_CPlusPlus_SJLJ;</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   };</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> }</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="keyword">const</span> EHPersonality EHPersonality::GNU_C = { <span class="stringliteral">"__gcc_personality_v0"</span>, 0 };</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="keyword">const</span> EHPersonality EHPersonality::GNU_C_SJLJ = { <span class="stringliteral">"__gcc_personality_sj0"</span>, 0 };</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="keyword">const</span> EHPersonality EHPersonality::NeXT_ObjC = { <span class="stringliteral">"__objc_personality_v0"</span>, 0 };</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="keyword">const</span> EHPersonality EHPersonality::GNU_CPlusPlus = { <span class="stringliteral">"__gxx_personality_v0"</span>, 0};</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="keyword">const</span> EHPersonality</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> EHPersonality::GNU_CPlusPlus_SJLJ = { <span class="stringliteral">"__gxx_personality_sj0"</span>, 0 };</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="keyword">const</span> EHPersonality</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> EHPersonality::GNU_ObjC = {<span class="stringliteral">"__gnu_objc_personality_v0"</span>, <span class="stringliteral">"objc_exception_throw"</span>};</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="keyword">const</span> EHPersonality</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> EHPersonality::GNU_ObjCXX = { <span class="stringliteral">"__gnustep_objcxx_personality_v0"</span>, 0 };</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="keyword">const</span> EHPersonality</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> EHPersonality::GNUstep_ObjC = { <span class="stringliteral">"__gnustep_objc_personality_v0"</span>, 0 };</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ac7e7d6e8f23a0d9a55b2649f4773ac01">  180</a></span> <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality &<a class="code" href="CGException_8cpp.html#ac7e7d6e8f23a0d9a55b2649f4773ac01">getCPersonality</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &L) {</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keywordflow">if</span> (L.SjLjExceptions)</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     <span class="keywordflow">return</span> EHPersonality::GNU_C_SJLJ;</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <span class="keywordflow">return</span> EHPersonality::GNU_C;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> }</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#abaca2202afca195f17ce7347bc6c601e">  186</a></span> <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality &<a class="code" href="CGException_8cpp.html#abaca2202afca195f17ce7347bc6c601e">getObjCPersonality</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &L) {</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <span class="keywordflow">switch</span> (L.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a46efae9a73b620f46708e58fa01ffce5">getKind</a>()) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a474ce19ff8ba88056218287c3366fcc6">ObjCRuntime::FragileMacOSX</a>:</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#ac7e7d6e8f23a0d9a55b2649f4773ac01">getCPersonality</a>(L);</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a46968d42f6c5fa744f330c91478611dc">ObjCRuntime::MacOSX</a>:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5ab49a7401e9237d39dd1a49ceefaad8d6">ObjCRuntime::iOS</a>:</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">return</span> EHPersonality::NeXT_ObjC;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a5dfe8699581b92217d6597cb08f276b1" title="'gnustep' is the modern non-fragile GNUstep runtime.">ObjCRuntime::GNUstep</a>:</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">if</span> (L.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a53f4ff7559f005926e5c419ee0ce110e">getVersion</a>() >= <a class="code" href="classclang_1_1VersionTuple.html" title="Represents a version number in the form major[.minor[.subminor]].">VersionTuple</a>(1, 7))</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <span class="keywordflow">return</span> EHPersonality::GNUstep_ObjC;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>     <span class="comment">// fallthrough</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5ac1168dccf97ce5daa48810083475788e">ObjCRuntime::GCC</a>:</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5aafc7b4e2467d7524e1c012dc5149cbfa" title="'objfw' is the Objective-C runtime included in ObjFW">ObjCRuntime::ObjFW</a>:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="keywordflow">return</span> EHPersonality::GNU_ObjC;</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>   llvm_unreachable(<span class="stringliteral">"bad runtime kind"</span>);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a9e820ef25052b790852ada9c0a2a67fc">  204</a></span> <span class="keyword">static</span> <span class="keyword">const</span> EHPersonality &<a class="code" href="CGException_8cpp.html#a9e820ef25052b790852ada9c0a2a67fc">getCXXPersonality</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &L) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">if</span> (L.SjLjExceptions)</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>     <span class="keywordflow">return</span> EHPersonality::GNU_CPlusPlus_SJLJ;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordflow">return</span> EHPersonality::GNU_CPlusPlus;</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> }</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment"></span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">/// Determines the personality function to use when both C++</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">/// and Objective-C exceptions are being caught.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ac2fc4e06671fe9053e8a74d7a7ccf2b9">  213</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> EHPersonality &<a class="code" href="CGException_8cpp.html#ac2fc4e06671fe9053e8a74d7a7ccf2b9">getObjCXXPersonality</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &L) {</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">switch</span> (L.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a46efae9a73b620f46708e58fa01ffce5">getKind</a>()) {</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>   <span class="comment">// The ObjC personality defers to the C++ personality for non-ObjC</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   <span class="comment">// handlers.  Unlike the C++ case, we use the same personality</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="comment">// function on targets using (backend-driven) SJLJ EH.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a46968d42f6c5fa744f330c91478611dc">ObjCRuntime::MacOSX</a>:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5ab49a7401e9237d39dd1a49ceefaad8d6">ObjCRuntime::iOS</a>:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <span class="keywordflow">return</span> EHPersonality::NeXT_ObjC;</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="comment">// In the fragile ABI, just use C++ exception handling and hope</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">// they're not doing crazy exception mixing.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a474ce19ff8ba88056218287c3366fcc6">ObjCRuntime::FragileMacOSX</a>:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#a9e820ef25052b790852ada9c0a2a67fc">getCXXPersonality</a>(L);</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">// The GCC runtime's personality function inherently doesn't support</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="comment">// mixed EH.  Use the C++ personality just to avoid returning null.</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5ac1168dccf97ce5daa48810083475788e">ObjCRuntime::GCC</a>:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5aafc7b4e2467d7524e1c012dc5149cbfa" title="'objfw' is the Objective-C runtime included in ObjFW">ObjCRuntime::ObjFW</a>: <span class="comment">// XXX: this will change soon</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     <span class="keywordflow">return</span> EHPersonality::GNU_ObjC;</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCRuntime.html#af19fe070a7073df4ecc666b44137c4e5a5dfe8699581b92217d6597cb08f276b1" title="'gnustep' is the modern non-fragile GNUstep runtime.">ObjCRuntime::GNUstep</a>:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>     <span class="keywordflow">return</span> EHPersonality::GNU_ObjCXX;</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>   llvm_unreachable(<span class="stringliteral">"bad runtime kind"</span>);</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> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="keyword">const</span> EHPersonality &EHPersonality::get(<span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &L) {</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   <span class="keywordflow">if</span> (L.CPlusPlus && L.ObjC1)</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#ac2fc4e06671fe9053e8a74d7a7ccf2b9">getObjCXXPersonality</a>(L);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (L.CPlusPlus)</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#a9e820ef25052b790852ada9c0a2a67fc">getCXXPersonality</a>(L);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (L.ObjC1)</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#abaca2202afca195f17ce7347bc6c601e">getObjCPersonality</a>(L);</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>     <span class="keywordflow">return</span> <a class="code" href="CGException_8cpp.html#ac7e7d6e8f23a0d9a55b2649f4773ac01">getCPersonality</a>(L);</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> }</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a059f2c5f928a58d5a83c3e780b26d420">  249</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a059f2c5f928a58d5a83c3e780b26d420">getPersonalityFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>                                         <span class="keyword">const</span> EHPersonality &Personality) {</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   llvm::Constant *Fn =</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9b70851ea2ff034ca9a5443ce213a81c">Int32Ty</a>, <span class="keyword">true</span>),</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>                               Personality.PersonalityFn);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">return</span> Fn;</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> }</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#afcd4c524bbad6fab2dd3d4da190e5ca1">  257</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#afcd4c524bbad6fab2dd3d4da190e5ca1">getOpaquePersonalityFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>                                         <span class="keyword">const</span> EHPersonality &Personality) {</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   llvm::Constant *Fn = <a class="code" href="CGException_8cpp.html#a059f2c5f928a58d5a83c3e780b26d420">getPersonalityFn</a>(CGM, Personality);</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>   <span class="keywordflow">return</span> llvm::ConstantExpr::getBitCast(Fn, CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> }</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment"></span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment">/// Check whether a personality function could reasonably be swapped</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">/// for a C++ personality function.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a7625a3d02be38179f5b5e93ddae3f38d">  265</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGException_8cpp.html#a7625a3d02be38179f5b5e93ddae3f38d">PersonalityHasOnlyCXXUses</a>(llvm::Constant *Fn) {</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">for</span> (llvm::Constant::use_iterator</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>          I = Fn->use_begin(), E = Fn->use_end(); I != E; ++I) {</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     llvm::User *User = *I;</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">// Conditionally white-list bitcasts.</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <span class="keywordflow">if</span> (llvm::ConstantExpr *CE = dyn_cast<llvm::ConstantExpr>(User)) {</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       <span class="keywordflow">if</span> (CE->getOpcode() != llvm::Instruction::BitCast) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       <span class="keywordflow">if</span> (!<a class="code" href="CGException_8cpp.html#a7625a3d02be38179f5b5e93ddae3f38d">PersonalityHasOnlyCXXUses</a>(CE))</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="keywordflow">continue</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> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="comment">// Otherwise, it has to be a landingpad instruction.</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     llvm::LandingPadInst *LPI = dyn_cast<llvm::LandingPadInst>(User);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">if</span> (!LPI) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = LPI->getNumClauses(); I != E; ++I) {</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="comment">// Look for something that would've been returned by the ObjC</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="comment">// runtime's GetEHType() method.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Val = LPI->getClause(I)->stripPointerCasts();</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="keywordflow">if</span> (LPI->isCatch(I)) {</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>         <span class="comment">// Check if the catch value has the ObjC prefix.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>         <span class="keywordflow">if</span> (llvm::GlobalVariable *GV = dyn_cast<llvm::GlobalVariable>(Val))</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>           <span class="comment">// ObjC EH selector entries are always global variables with</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>           <span class="comment">// names starting like this.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>           <span class="keywordflow">if</span> (GV->getName().startswith(<span class="stringliteral">"OBJC_EHTYPE"</span>))</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>             <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>         <span class="comment">// Check if any of the filter values have the ObjC prefix.</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>         llvm::Constant *CVal = cast<llvm::Constant>(Val);</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>         <span class="keywordflow">for</span> (llvm::User::op_iterator</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>                II = CVal->op_begin(), IE = CVal->op_end(); II != IE; ++II) {</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>           <span class="keywordflow">if</span> (llvm::GlobalVariable *GV =</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>               cast<llvm::GlobalVariable>((*II)->stripPointerCasts()))</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>             <span class="comment">// ObjC EH selector entries are always global variables with</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>             <span class="comment">// names starting like this.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>             <span class="keywordflow">if</span> (GV->getName().startswith(<span class="stringliteral">"OBJC_EHTYPE"</span>))</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>               <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>       }</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>   }</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="comment">/// Try to use the C++ personality function in ObjC++.  Not doing this</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="comment">/// can cause some incompatibilities with gcc, which is more</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="comment">/// aggressive about only using the ObjC++ personality in a function</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> <span class="comment">/// when it really needs it.</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="comment"></span><span class="keywordtype">void</span> CodeGenModule::SimplifyPersonality() {</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <span class="comment">// If we're not in ObjC++ -fexceptions, there's nothing to do.</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordflow">if</span> (!LangOpts.CPlusPlus || !LangOpts.ObjC1 || !LangOpts.Exceptions)</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     <span class="keywordflow">return</span>;</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>   <span class="comment">// Both the problem this endeavors to fix and the way the logic</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="comment">// above works is specific to the NeXT runtime.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">if</span> (!LangOpts.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#aceeccbbaac7a1c2a4434dc89cc96c0bd" title="Is this runtime basically of the NeXT family of runtimes?">isNeXTFamily</a>())</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="keyword">const</span> EHPersonality &ObjCXX = EHPersonality::get(LangOpts);</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keyword">const</span> EHPersonality &CXX = <a class="code" href="CGException_8cpp.html#a9e820ef25052b790852ada9c0a2a67fc">getCXXPersonality</a>(LangOpts);</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="keywordflow">if</span> (&ObjCXX == &CXX)</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   assert(std::strcmp(ObjCXX.PersonalityFn, CXX.PersonalityFn) != 0 &&</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>          <span class="stringliteral">"Different EHPersonalities using the same personality function."</span>);</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   llvm::Function *Fn = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>().getFunction(ObjCXX.PersonalityFn);</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="comment">// Nothing to do if it's unused.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="keywordflow">if</span> (!Fn || Fn->use_empty()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>   </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="comment">// Can't do the optimization if it has non-C++ uses.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>   <span class="keywordflow">if</span> (!<a class="code" href="CGException_8cpp.html#a7625a3d02be38179f5b5e93ddae3f38d">PersonalityHasOnlyCXXUses</a>(Fn)) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <span class="comment">// Create the C++ personality function and kill off the old</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="comment">// function.</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   llvm::Constant *CXXFn = <a class="code" href="CGException_8cpp.html#a059f2c5f928a58d5a83c3e780b26d420">getPersonalityFn</a>(*<span class="keyword">this</span>, CXX);</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="comment">// This can happen if the user is screwing with us.</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="keywordflow">if</span> (Fn->getType() != CXXFn->getType()) <span class="keywordflow">return</span>;</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>   Fn->replaceAllUsesWith(CXXFn);</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   Fn->eraseFromParent();</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="comment"></span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> <span class="comment">/// Returns the value to inject into a selector to indicate the</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="comment">/// presence of a catch-all.</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a9b892bb57a6793e5102756998388a34c">  355</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Constant *<a class="code" href="CGException_8cpp.html#a9b892bb57a6793e5102756998388a34c">getCatchAllValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="comment">// Possibly we should use @llvm.eh.catch.all.value here.</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="keywordflow">return</span> llvm::ConstantPointerNull::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</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> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment">  /// A cleanup to free the exception object if its initialization</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="comment">  /// throws.</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> <span class="comment"></span>  <span class="keyword">struct </span>FreeException : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *exn;</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     FreeException(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *exn) : exn(exn) {}</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</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="l00367"></a><span class="lineno">  367</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CGException_8cpp.html#a528d3f4c972d6f9793baf9ec1a5b964a">getFreeExceptionFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>), exn);</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>   };</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">// Emits an exception expression into the given location.  This</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">// differs from EmitAnyExprToMem only in that, if a final copy-ctor</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> <span class="comment">// call is required, an exception within that copy ctor causes</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> <span class="comment">// std::terminate to be invoked.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a860e1529db51042546ab220581897f0b">  376</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGException_8cpp.html#a860e1529db51042546ab220581897f0b">EmitAnyExprToExn</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> *e,</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>                              <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr) {</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="comment">// Make sure the exception object is cleaned up if there's an</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="comment">// exception during initialization.</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a30cfb949480fb66ad5424ba76613cc9a">pushFullExprCleanup</a><FreeException>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>, addr);</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> cleanup = CGF.<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="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="comment">// __cxa_allocate_exception returns a void*;  we need to cast this</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="comment">// to the appropriate type for the object.</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   llvm::Type *ty = CGF.<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>())->getPointerTo();</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *typedAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(addr, ty);</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">// FIXME: this isn't quite right!  If there's a final unelided call</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   <span class="comment">// to a copy constructor, then according to [except.terminate]p1 we</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>   <span class="comment">// must call std::terminate() if that constructor throws, because</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="comment">// technically that copy occurs after the exception expression is</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   <span class="comment">// evaluated but before the exception is caught.  But the best way</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="comment">// to handle that is to teach EmitAggExpr to do the final copy</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="comment">// differently if it can't be elided.</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af69d1d3fe662be6786b76104985ed2ea">EmitAnyExprToMem</a>(e, typedAddr, e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#a4a3d75cf019a2e769498ef8d6878888b" title="Retrieve the set of qualifiers applied to this type.">getQualifiers</a>(), </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>                        <span class="comment">/*IsInit*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">// Deactivate the cleanup block.</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   CGF.<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, cast<llvm::Instruction>(typedAddr));</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> </div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adab463b751b967f677fd1f8163255557">  402</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adab463b751b967f677fd1f8163255557">CodeGenFunction::getExceptionSlot</a>() {</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5cd8424865470119cabbd45b6a551d54">ExceptionSlot</a>)</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5cd8424865470119cabbd45b6a551d54">ExceptionSlot</a> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="stringliteral">"exn.slot"</span>);</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5cd8424865470119cabbd45b6a551d54">ExceptionSlot</a>;</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> </div>
+<div class="line"><a name="l00408"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e8ee3a8969ff763b2513a73cbd40d3e">  408</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e8ee3a8969ff763b2513a73cbd40d3e">CodeGenFunction::getEHSelectorSlot</a>() {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4bf01a86f387793f3ef9d1adade6aff6">EHSelectorSlot</a>)</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4bf01a86f387793f3ef9d1adade6aff6">EHSelectorSlot</a> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9b70851ea2ff034ca9a5443ce213a81c">Int32Ty</a>, <span class="stringliteral">"ehselector.slot"</span>);</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4bf01a86f387793f3ef9d1adade6aff6">EHSelectorSlot</a>;</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> </div>
+<div class="line"><a name="l00414"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">  414</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">CodeGenFunction::getExceptionFromSlot</a>() {</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adab463b751b967f677fd1f8163255557">getExceptionSlot</a>(), <span class="stringliteral">"exn"</span>);</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> }</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15aa5c7d5dcd706cc67805c74820b4d9">  418</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15aa5c7d5dcd706cc67805c74820b4d9">CodeGenFunction::getSelectorFromSlot</a>() {</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e8ee3a8969ff763b2513a73cbd40d3e">getEHSelectorSlot</a>(), <span class="stringliteral">"sel"</span>);</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> </div>
+<div class="line"><a name="l00422"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a31d8705d0d5c05fbb30a1baa4dc5bdad">  422</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a31d8705d0d5c05fbb30a1baa4dc5bdad">CodeGenFunction::EmitCXXThrowExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXThrowExpr.html" title="A C++ throw-expression (C++ [except.throw]).">CXXThrowExpr</a> *E,</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>                                        <span class="keywordtype">bool</span> KeepInsertionPoint) {</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   <span class="keywordflow">if</span> (!E-><a class="code" href="classclang_1_1CXXThrowExpr.html#ab19520d30afe94089c3421e696d62fa1">getSubExpr</a>()) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a48489db9a91c645ab0cfb4ff42a723e3" title="Emits a call or invoke to the given noreturn runtime function.">EmitNoreturnRuntimeCallOrInvoke</a>(<a class="code" href="CGException_8cpp.html#a7d39c64bc82f0befcbe3f19686085e9a">getReThrowFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>),</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>                                     <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a>());</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     <span class="comment">// throw is an expression, and the expression emitters expect us</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>     <span class="comment">// to leave ourselves at a valid insertion point.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="keywordflow">if</span> (KeepInsertionPoint)</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"throw.cont"</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>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   }</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ThrowType = E-><a class="code" href="classclang_1_1CXXThrowExpr.html#ab19520d30afe94089c3421e696d62fa1">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="keywordflow">if</span> (ThrowType-><a class="code" href="classclang_1_1Type.html#aa9be9c3ceec53da8edbbb86bbf895fff">isObjCObjectPointerType</a>()) {</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *ThrowStmt = E-><a class="code" href="classclang_1_1CXXThrowExpr.html#ab19520d30afe94089c3421e696d62fa1">getSubExpr</a>();</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtThrowStmt.html" title="Represents Objective-C's @throw statement.">ObjCAtThrowStmt</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>(E-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>(),</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>                             <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<span class="keyword">></span>(ThrowStmt));</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</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#a71b44b66c20fe78240df7c1547ea7262">EmitThrowStmt</a>(*<span class="keyword">this</span>, S, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="comment">// This will clear insertion point which was not cleared in</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     <span class="comment">// call to EmitThrowStmt.</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     <span class="keywordflow">if</span> (KeepInsertionPoint)</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"throw.cont"</span>));</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="keywordflow">return</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">  449</span>   </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="comment">// Now allocate the exception object.</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</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="l00452"></a><span class="lineno">  452</span>   uint64_t TypeSize = <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>(ThrowType).<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="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>   llvm::Constant *AllocExceptionFn = <a class="code" href="CGException_8cpp.html#a64f02027dea46a3532289cb40229fef1">getAllocateExceptionFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>);</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   llvm::CallInst *ExceptionPtr =</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(AllocExceptionFn,</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>                             llvm::ConstantInt::get(SizeTy, TypeSize),</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>                             <span class="stringliteral">"exception"</span>);</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <a class="code" href="CGException_8cpp.html#a860e1529db51042546ab220581897f0b">EmitAnyExprToExn</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1CXXThrowExpr.html#ab19520d30afe94089c3421e696d62fa1">getSubExpr</a>(), ExceptionPtr);</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>   <span class="comment">// Now throw the exception.</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   llvm::Constant *<a class="code" href="structTypeInfo.html">TypeInfo</a> = <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>(ThrowType, </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>                                                          <span class="comment">/*ForEH=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <span class="comment">// The address of the destructor.  If the exception type has a</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   <span class="comment">// trivial destructor (or isn't a record), we just pass null.</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   llvm::Constant *Dtor = 0;</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RecordTy = ThrowType-><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="l00470"></a><span class="lineno">  470</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Record = cast<CXXRecordDecl>(RecordTy->getDecl());</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">if</span> (!Record-><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="l00472"></a><span class="lineno">  472</span>       <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DtorD = Record-><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="l00473"></a><span class="lineno">  473</span>       Dtor = <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>(DtorD, <a class="code" href="namespaceclang.html#a8ce1c62f474552f6cfc7c340e573e157a69f2551f9ca0f302deef31de0695976c" title="Complete object dtor.">Dtor_Complete</a>);</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       Dtor = llvm::ConstantExpr::getBitCast(Dtor, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     }</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   }</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keywordflow">if</span> (!Dtor) Dtor = llvm::Constant::getNullValue(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *args[] = { ExceptionPtr, TypeInfo, Dtor };</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a48489db9a91c645ab0cfb4ff42a723e3" title="Emits a call or invoke to the given noreturn runtime function.">EmitNoreturnRuntimeCallOrInvoke</a>(<a class="code" href="CGException_8cpp.html#a758539093d1b196c54194cf110290fb0">getThrowFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>), args);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   <span class="comment">// throw is an expression, and the expression emitters expect us</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="comment">// to leave ourselves at a valid insertion point.</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="keywordflow">if</span> (KeepInsertionPoint)</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"throw.cont"</span>));</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> }</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8c4bc8c71d85fdbea3742db674f7d070">  488</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8c4bc8c71d85fdbea3742db674f7d070" title="EmitStartEHSpec - Emit the start of the exception spec.">CodeGenFunction::EmitStartEHSpec</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</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>().CXXExceptions)</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a>* FD = dyn_cast_or_null<FunctionDecl>(D);</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   <span class="keywordflow">if</span> (FD == 0)</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *Proto = FD-><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="l00496"></a><span class="lineno">  496</span>   <span class="keywordflow">if</span> (Proto == 0)</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <span class="keywordflow">return</span>;</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>   <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a> EST = Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#aca05d807672e96ef572bc2543d21e7a5" title="Get the kind of exception specification on this function.">getExceptionSpecType</a>();</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a880a4ddb376beb7b69597da5e18ba262">isNoexceptExceptionSpec</a>(EST)) {</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     <span class="keywordflow">if</span> (Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#a219d9bc9d6d3ff67a043ab3022f11855" title="Get the meaning of the noexcept spec on this function, if any.">getNoexceptSpec</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) == <a class="code" href="classclang_1_1FunctionProtoType.html#a9ffb457b77e0169117874aca53166331a74539d05b7040b1007136a672551db48" title="The noexcept specifier evaluates to true.">FunctionProtoType::NR_Nothrow</a>) {</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       <span class="comment">// noexcept functions are simple terminate scopes.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aefe8303d66c784211dfd9581be62b94b" title="Push a terminate handler on the stack.">pushTerminate</a>();</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     }</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EST == <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081eaf4e0e31c2f1227d7cf242aa7db6de5bd" title="throw(T1, T2)">EST_Dynamic</a> || EST == <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081ea431bc4d88736a37e3240502ea0a58432" title="throw()">EST_DynamicNone</a>) {</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>     <span class="keywordtype">unsigned</span> NumExceptions = Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#a5e6a964052744f2eedb60ee1acc5d17b">getNumExceptions</a>();</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> *Filter = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a077f071c099d8de05c05cadd4f49a2d6" title="Push an exceptions filter on the stack.">pushFilter</a>(NumExceptions);</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != NumExceptions; ++I) {</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#a214b9765161874c2160f6eb4490ac0ea">getExceptionType</a>(I);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> ExceptType = Ty.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<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="l00512"></a><span class="lineno">  512</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *EHType = <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>(ExceptType,</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>                                                         <span class="comment">/*ForEH=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>       Filter-><a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a0e18f4ad23d54dfee55a6430cf193871">setFilter</a>(I, EHType);</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> }</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment"></span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="comment">/// Emit the dispatch block for a filter scope if necessary.</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a37e6ce2e5ab589559911c28a81e83087">  520</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGException_8cpp.html#a37e6ce2e5ab589559911c28a81e83087" title="Emit the dispatch block for a filter scope if necessary.">emitFilterDispatchBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> &filterScope) {</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   llvm::BasicBlock *dispatchBlock = filterScope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aab25cdf91a6905f0f5052b379e902eb0">getCachedEHDispatchBlock</a>();</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="keywordflow">if</span> (!dispatchBlock) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="keywordflow">if</span> (dispatchBlock->use_empty()) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="keyword">delete</span> dispatchBlock;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e20486acfb3cdfbec8d8fad2839ebba">EmitBlockAfterUses</a>(dispatchBlock);</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>   <span class="comment">// If this isn't a catch-all filter, we need to check whether we got</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   <span class="comment">// here because the filter triggered.</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   <span class="keywordflow">if</span> (filterScope.<a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a0445c297c808687f158a9ef8396014a3">getNumFilters</a>()) {</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     <span class="comment">// Load the selector value.</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *selector = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15aa5c7d5dcd706cc67805c74820b4d9">getSelectorFromSlot</a>();</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>     llvm::BasicBlock *unexpectedBB = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"ehspec.unexpected"</span>);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *zero = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt32(0);</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *failsFilter =</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpSLT(selector, zero, <span class="stringliteral">"ehspec.fails"</span>);</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(failsFilter, unexpectedBB, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a63eecb814ee3d6cc49e07e865018f541">getEHResumeBlock</a>(<span class="keyword">false</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>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(unexpectedBB);</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="comment">// Call __cxa_call_unexpected.  This doesn't need to be an invoke</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="comment">// because __cxa_call_unexpected magically filters exceptions</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>   <span class="comment">// according to the last landing pad the exception was thrown</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="comment">// into.  Seriously.</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *exn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">getExceptionFromSlot</a>();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55d82e1063f29b5c252f586c9c9bee9">EmitRuntimeCall</a>(<a class="code" href="CGException_8cpp.html#aa0785649a914a3cdc95e70914105e9c0">getUnexpectedFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>), exn)</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>     ->setDoesNotReturn();</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateUnreachable();</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> }</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abaef8cdba9d05a48ed06d5320e6c4ed8">  556</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abaef8cdba9d05a48ed06d5320e6c4ed8" title="EmitEndEHSpec - Emit the end of the exception spec.">CodeGenFunction::EmitEndEHSpec</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</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>().CXXExceptions)</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   </div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a>* FD = dyn_cast_or_null<FunctionDecl>(D);</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="keywordflow">if</span> (FD == 0)</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionProtoType.html">FunctionProtoType</a> *Proto = FD-><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="l00564"></a><span class="lineno">  564</span>   <span class="keywordflow">if</span> (Proto == 0)</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keywordflow">return</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>   <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a> EST = Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#aca05d807672e96ef572bc2543d21e7a5" title="Get the kind of exception specification on this function.">getExceptionSpecType</a>();</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a880a4ddb376beb7b69597da5e18ba262">isNoexceptExceptionSpec</a>(EST)) {</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keywordflow">if</span> (Proto-><a class="code" href="classclang_1_1FunctionProtoType.html#a219d9bc9d6d3ff67a043ab3022f11855" title="Get the meaning of the noexcept spec on this function, if any.">getNoexceptSpec</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>()) == <a class="code" href="classclang_1_1FunctionProtoType.html#a9ffb457b77e0169117874aca53166331a74539d05b7040b1007136a672551db48" title="The noexcept specifier evaluates to true.">FunctionProtoType::NR_Nothrow</a>) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#adccfb817d3fd406a110d5d1b077aa502" title="Pops a terminate handler off the stack.">popTerminate</a>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     }</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EST == <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081eaf4e0e31c2f1227d7cf242aa7db6de5bd" title="throw(T1, T2)">EST_Dynamic</a> || EST == <a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081ea431bc4d88736a37e3240502ea0a58432" title="throw()">EST_DynamicNone</a>) {</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> &filterScope = cast<EHFilterScope>(*<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>     <a class="code" href="CGException_8cpp.html#a37e6ce2e5ab589559911c28a81e83087" title="Emit the dispatch block for a filter scope if necessary.">emitFilterDispatchBlock</a>(*<span class="keyword">this</span>, filterScope);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a847f83f5e47e66122a6a6ce6df5adcd9" title="Pops an exceptions filter off the stack.">popFilter</a>();</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> }</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> </div>
+<div class="line"><a name="l00579"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a079ab0affd32c3e7d992d8421776b732">  579</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a079ab0affd32c3e7d992d8421776b732">CodeGenFunction::EmitCXXTryStmt</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXTryStmt.html">CXXTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae064b29757ae2b6085d4df62ea2df530">EnterCXXTryStmt</a>(S);</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(S.<a class="code" href="classclang_1_1CXXTryStmt.html#a0b14fc308d0e5f78e4f2bd425fc308da">getTryBlock</a>());</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1f782050e59094db58fbbd1b9e3f8c1">ExitCXXTryStmt</a>(S);</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> }</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> </div>
+<div class="line"><a name="l00585"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae064b29757ae2b6085d4df62ea2df530">  585</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae064b29757ae2b6085d4df62ea2df530">CodeGenFunction::EnterCXXTryStmt</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXTryStmt.html">CXXTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <span class="keywordtype">bool</span> IsFnTryBlock) {</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>   <span class="keywordtype">unsigned</span> NumHandlers = S.<a class="code" href="classclang_1_1CXXTryStmt.html#a35a6bca1856fe488e2cd2ed9d432303d">getNumHandlers</a>();</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> *CatchScope = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab438c1f9ff2f8bb5e32953bea6593dd1">pushCatch</a>(NumHandlers);</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != NumHandlers; ++I) {</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXCatchStmt.html">CXXCatchStmt</a> *C = S.<a class="code" href="classclang_1_1CXXTryStmt.html#a381a32f527ba09c4be51f49abd3aae8f">getHandler</a>(I);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> </div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     llvm::BasicBlock *Handler = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"catch"</span>);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordflow">if</span> (C-><a class="code" href="classclang_1_1CXXCatchStmt.html#a7eb78e2e8fd238befe06fb565f443d82">getExceptionDecl</a>()) {</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="comment">// FIXME: Dropping the reference type on the type into makes it</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="comment">// impossible to correctly implement catch-by-reference</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>       <span class="comment">// semantics for pointers.  Unfortunately, this is what all</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>       <span class="comment">// existing compilers do, and it's not clear that the standard</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>       <span class="comment">// personality routine is capable of doing this right.  See C++ DR 388:</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="comment">//   http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#388</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> CaughtType = C-><a class="code" href="classclang_1_1CXXCatchStmt.html#a42eec328f3a31da59c17605300101186">getCaughtType</a>();</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>       CaughtType = CaughtType.<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>().<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="l00602"></a><span class="lineno">  602</span> </div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="structTypeInfo.html">TypeInfo</a> = 0;</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>       <span class="keywordflow">if</span> (CaughtType-><a class="code" href="classclang_1_1Type.html#aa9be9c3ceec53da8edbbb86bbf895fff">isObjCObjectPointerType</a>())</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>         TypeInfo = <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#a1f6fc246a15b6a108b04e2d4606194b9">GetEHType</a>(CaughtType);</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         TypeInfo = <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>(CaughtType, <span class="comment">/*ForEH=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>       CatchScope-><a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#adc88de04a8c758b376d6de0a0b5ff684">setHandler</a>(I, TypeInfo, Handler);</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">// No exception decl indicates '...', a catch-all.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       CatchScope-><a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a980294d57b3b0d6f3668c6b586798d82">setCatchAllHandler</a>(I, Handler);</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> }</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> llvm::BasicBlock *</div>
+<div class="line"><a name="l00617"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd6aabde0a420648244b8e8f503dc284">  617</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd6aabde0a420648244b8e8f503dc284">CodeGenFunction::getEHDispatchBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1stable__iterator.html">EHScopeStack::stable_iterator</a> si) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="comment">// The dispatch block for the end of the scope chain is a block that</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="comment">// just resumes unwinding.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   <span class="keywordflow">if</span> (si == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad8c6698a6984c4ecb88d903fba642d98" title="Create a stable reference to the bottom of the EH stack.">stable_end</a>())</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a63eecb814ee3d6cc49e07e865018f541">getEHResumeBlock</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span> </div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <span class="comment">// Otherwise, we should look at the actual scope.</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html" title="A protected scope for zero-cost EH handling.">EHScope</a> &scope = *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#afec681080896677a7d0599191da3e1ae">find</a>(si);</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> </div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   llvm::BasicBlock *dispatchBlock = scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aab25cdf91a6905f0f5052b379e902eb0">getCachedEHDispatchBlock</a>();</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>   <span class="keywordflow">if</span> (!dispatchBlock) {</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <span class="keywordflow">switch</span> (scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ad931ed33d400761f4639215394549a91">getKind</a>()) {</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a8b20c48289e794254eec810bf395c178">EHScope::Catch</a>: {</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="comment">// Apply a special case to a single catch-all.</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>       <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> &catchScope = cast<EHCatchScope>(scope);</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>       <span class="keywordflow">if</span> (catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a28fd922698192807ae8867a0afe09596">getNumHandlers</a>() == 1 &&</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>           catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(0).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a57ea843e48003350b0f8395b40abc27d">isCatchAll</a>()) {</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>         dispatchBlock = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(0).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a7b35de6754f3cc82f1ebc92062570cd1" title="The catch handler for this type.">Block</a>;</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>       <span class="comment">// Otherwise, make a dispatch block.</span></div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>         dispatchBlock = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"catch.dispatch"</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="keywordflow">break</span>;</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     }</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> </div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ad737ee040fdaf80bb55be91a240ad60f">EHScope::Cleanup</a>:</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       dispatchBlock = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"ehcleanup"</span>);</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span> </div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a81d8811bf7a0949ebb7fec4c6af8563e">EHScope::Filter</a>:</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       dispatchBlock = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"filter.dispatch"</span>);</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <span class="keywordflow">break</span>;</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>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ac17250a4d7b1bc8a92ce79b487bdad68">EHScope::Terminate</a>:</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>       dispatchBlock = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a689bc2db6a643e6092fa2be3cd108031">getTerminateHandler</a>();</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>     }</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     scope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ad08647a2cc9e05072adc0363ed99c124">setCachedEHDispatchBlock</a>(dispatchBlock);</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>   }</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">return</span> dispatchBlock;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="comment">/// Check whether this is a non-EH scope, i.e. a scope which doesn't</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="comment">/// affect exception handling.  Currently, the only non-EH scopes are</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="comment">/// normal-only cleanup scopes.</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a8d1629fed71414783397d2ced42a36e3">  663</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGException_8cpp.html#a8d1629fed71414783397d2ced42a36e3">isNonEHScope</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html" title="A protected scope for zero-cost EH handling.">EHScope</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="keywordflow">switch</span> (S.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ad931ed33d400761f4639215394549a91">getKind</a>()) {</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ad737ee040fdaf80bb55be91a240ad60f">EHScope::Cleanup</a>:</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <span class="keywordflow">return</span> !cast<EHCleanupScope>(<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>).isEHCleanup();</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a81d8811bf7a0949ebb7fec4c6af8563e">EHScope::Filter</a>:</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a8b20c48289e794254eec810bf395c178">EHScope::Catch</a>:</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ac17250a4d7b1bc8a92ce79b487bdad68">EHScope::Terminate</a>:</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   }</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span> </div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>   llvm_unreachable(<span class="stringliteral">"Invalid EHScope Kind!"</span>);</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span> }</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span> </div>
+<div class="line"><a name="l00676"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1bf89b708d8ad895320b1c8664d775b7">  676</a></span> llvm::BasicBlock *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1bf89b708d8ad895320b1c8664d775b7">CodeGenFunction::getInvokeDestImpl</a>() {</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a7ce729e05a89eccfc86ca4d73f2697c0">requiresLandingPad</a>());</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   assert(!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a89f9cda5ecb4d3529515fe45cbe70f3f" title="Determines whether the exception-scopes stack is empty.">empty</a>());</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span> </div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().Exceptions)</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     <span class="keywordflow">return</span> 0;</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>   <span class="comment">// Check the innermost scope for a cached landing pad.  If this is</span></div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="comment">// a non-EH cleanup, we'll check enclosing scopes in EmitLandingPad.</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   llvm::BasicBlock *LP = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>()-><a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#a5862342f24b2104198d6b2df955a43e3">getCachedLandingPad</a>();</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="keywordflow">if</span> (LP) <span class="keywordflow">return</span> LP;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span> </div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="comment">// Build the landing pad for this scope.</span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   LP = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4c938f0dcb2dbce3e1ecca10ec0f1a93" title="Emits a landing pad for the current EH stack.">EmitLandingPad</a>();</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>   assert(LP);</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   <span class="comment">// Cache the landing pad on the innermost scope.  If this is a</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   <span class="comment">// non-EH scope, cache the landing pad on the enclosing scope, too.</span></div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1iterator.html" title="A non-stable pointer into the scope stack.">EHScopeStack::iterator</a> ir = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>(); <span class="keyword">true</span>; ++ir) {</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     ir->setCachedLandingPad(LP);</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     <span class="keywordflow">if</span> (!<a class="code" href="CGException_8cpp.html#a8d1629fed71414783397d2ced42a36e3">isNonEHScope</a>(*ir)) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>   }</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordflow">return</span> LP;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> }</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> </div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <span class="comment">// This code contains a hack to work around a design flaw in</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span> <span class="comment">// LLVM's EH IR which breaks semantics after inlining.  This same</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="comment">// hack is implemented in llvm-gcc.</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> <span class="comment">// The LLVM EH abstraction is basically a thin veneer over the</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="comment">// traditional GCC zero-cost design: for each range of instructions</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> <span class="comment">// in the function, there is (at most) one "landing pad" with an</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span> <span class="comment">// associated chain of EH actions.  A language-specific personality</span></div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> <span class="comment">// function interprets this chain of actions and (1) decides whether</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> <span class="comment">// or not to resume execution at the landing pad and (2) if so,</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span> <span class="comment">// provides an integer indicating why it's stopping.  In LLVM IR,</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span> <span class="comment">// the association of a landing pad with a range of instructions is</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span> <span class="comment">// achieved via an invoke instruction, the chain of actions becomes</span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> <span class="comment">// the arguments to the @llvm.eh.selector call, and the selector</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> <span class="comment">// call returns the integer indicator.  Other than the required</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span> <span class="comment">// presence of two intrinsic function calls in the landing pad,</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span> <span class="comment">// the IR exactly describes the layout of the output code.</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> <span class="comment">// A principal advantage of this design is that it is completely</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> <span class="comment">// language-agnostic; in theory, the LLVM optimizers can treat</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="comment">// landing pads neutrally, and targets need only know how to lower</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span> <span class="comment">// the intrinsics to have a functioning exceptions system (assuming</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span> <span class="comment">// that platform exceptions follow something approximately like the</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span> <span class="comment">// GCC design).  Unfortunately, landing pads cannot be combined in a</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span> <span class="comment">// language-agnostic way: given selectors A and B, there is no way</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> <span class="comment">// to make a single landing pad which faithfully represents the</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <span class="comment">// semantics of propagating an exception first through A, then</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> <span class="comment">// through B, without knowing how the personality will interpret the</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="comment">// (lowered form of the) selectors.  This means that inlining has no</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> <span class="comment">// choice but to crudely chain invokes (i.e., to ignore invokes in</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> <span class="comment">// the inlined function, but to turn all unwindable calls into</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> <span class="comment">// invokes), which is only semantically valid if every unwind stops</span></div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> <span class="comment">// at every landing pad.</span></div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span> <span class="comment">// Therefore, the invoke-inline hack is to guarantee that every</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span> <span class="comment">// landing pad has a catch-all.</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53f">  738</a></span> <span class="keyword">enum</span> <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53f">CleanupHackLevel_t</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span> <span class="comment">  /// A level of hack that requires that all landing pads have</span></div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span> <span class="comment">  /// catch-alls.</span></div>
+<div class="line"><a name="l00741"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa2be689510f3951e492ec054d8fdc03c3">  741</a></span> <span class="comment"></span>  <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa2be689510f3951e492ec054d8fdc03c3">CHL_MandatoryCatchall</a>,</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span> <span class="comment"></span></div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span> <span class="comment">  /// A level of hack that requires that all landing pads handle</span></div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span> <span class="comment">  /// cleanups.</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa432d05c4ae4f694e82203c2085197e6f">  745</a></span> <span class="comment"></span>  <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa432d05c4ae4f694e82203c2085197e6f">CHL_MandatoryCleanup</a>,</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span> <span class="comment"></span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span> <span class="comment">  /// No hacks at all;  ideal IR generation.</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa9fff18a5dc7742bb7a5fb4203f997562">  748</a></span> <span class="comment"></span>  <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa9fff18a5dc7742bb7a5fb4203f997562" title="No hacks at all; ideal IR generation.">CHL_Ideal</a></div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> };</div>
+<div class="line"><a name="l00750"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a77f95c296a1aac39c46eed97bb8a6086">  750</a></span> <span class="keyword">const</span> <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53f">CleanupHackLevel_t</a> <a class="code" href="CGException_8cpp.html#a77f95c296a1aac39c46eed97bb8a6086">CleanupHackLevel</a> = <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa432d05c4ae4f694e82203c2085197e6f">CHL_MandatoryCleanup</a>;</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span> </div>
+<div class="line"><a name="l00752"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4c938f0dcb2dbce3e1ecca10ec0f1a93">  752</a></span> llvm::BasicBlock *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4c938f0dcb2dbce3e1ecca10ec0f1a93" title="Emits a landing pad for the current EH stack.">CodeGenFunction::EmitLandingPad</a>() {</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#a7ce729e05a89eccfc86ca4d73f2697c0">requiresLandingPad</a>());</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span> </div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html" title="A protected scope for zero-cost EH handling.">EHScope</a> &innermostEHScope = *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#afec681080896677a7d0599191da3e1ae">find</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad727a3cc92638b4bbe253233f8fb2159">getInnermostEHScope</a>());</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   <span class="keywordflow">switch</span> (innermostEHScope.getKind()) {</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ac17250a4d7b1bc8a92ce79b487bdad68">EHScope::Terminate</a>:</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a87ae350b90a6937825e686791f02a48e" title="getTerminateLandingPad - Return a landing pad that just calls terminate.">getTerminateLandingPad</a>();</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> </div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a8b20c48289e794254eec810bf395c178">EHScope::Catch</a>:</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ad737ee040fdaf80bb55be91a240ad60f">EHScope::Cleanup</a>:</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a81d8811bf7a0949ebb7fec4c6af8563e">EHScope::Filter</a>:</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <span class="keywordflow">if</span> (llvm::BasicBlock *lpad = innermostEHScope.getCachedLandingPad())</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       <span class="keywordflow">return</span> lpad;</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   }</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> </div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="comment">// Save the current IR generation state.</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   CGBuilderTy::InsertPoint savedIP = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.saveAndClearIP();</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</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> SavedLocation;</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>()) {</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>     SavedLocation = DI->getLocation();</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     DI->EmitLocation(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, CurEHLocation);</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> </div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="keyword">const</span> EHPersonality &personality = EHPersonality::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>());</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span> </div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>   <span class="comment">// Create and configure the landing pad.</span></div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>   llvm::BasicBlock *lpad = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"lpad"</span>);</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(lpad);</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> </div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   llvm::LandingPadInst *LPadInst =</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLandingPad(llvm::StructType::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a9b70851ea2ff034ca9a5443ce213a81c">Int32Ty</a>, <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>),</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>                              <a class="code" href="CGException_8cpp.html#afcd4c524bbad6fab2dd3d4da190e5ca1">getOpaquePersonalityFn</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, personality), 0);</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>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LPadExn = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(LPadInst, 0);</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(LPadExn, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adab463b751b967f677fd1f8163255557">getExceptionSlot</a>());</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *LPadSel = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateExtractValue(LPadInst, 1);</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(LPadSel, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8e8ee3a8969ff763b2513a73cbd40d3e">getEHSelectorSlot</a>());</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span> </div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>   <span class="comment">// Save the exception pointer.  It's safe to use a single exception</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>   <span class="comment">// pointer per function because EH cleanups can never have nested</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   <span class="comment">// try/catches.</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   <span class="comment">// Build the landingpad instruction.</span></div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span> </div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>   <span class="comment">// Accumulate all the handlers in scope.</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>   <span class="keywordtype">bool</span> hasCatchAll = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>   <span class="keywordtype">bool</span> hasCleanup = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>   <span class="keywordtype">bool</span> hasFilter = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*, 4></a> filterTypes;</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>   llvm::SmallPtrSet<llvm::Value*, 4> catchTypes;</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1iterator.html" title="A non-stable pointer into the scope stack.">EHScopeStack::iterator</a> I = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>(), E = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab72d4816022fab5b07c32df71686da38" title="Returns an iterator pointing to the outermost EH scope.">end</a>();</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>          I != E; ++I) {</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span> </div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>     <span class="keywordflow">switch</span> (I->getKind()) {</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ad737ee040fdaf80bb55be91a240ad60f">EHScope::Cleanup</a>:</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>       <span class="comment">// If we have a cleanup, remember that.</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>       hasCleanup = (hasCleanup || cast<EHCleanupScope>(*I).isEHCleanup());</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> </div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a81d8811bf7a0949ebb7fec4c6af8563e">EHScope::Filter</a>: {</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       assert(I.next() == <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ab72d4816022fab5b07c32df71686da38" title="Returns an iterator pointing to the outermost EH scope.">end</a>() && <span class="stringliteral">"EH filter is not end of EH stack"</span>);</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>       assert(!hasCatchAll && <span class="stringliteral">"EH filter reached after catch-all"</span>);</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span> </div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>       <span class="comment">// Filter scopes get added to the landingpad in weird ways.</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>       <a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html">EHFilterScope</a> &filter = cast<EHFilterScope>(*I);</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>       hasFilter = <span class="keyword">true</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">// Add all the filter values.</span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = filter.<a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#a0445c297c808687f158a9ef8396014a3">getNumFilters</a>(); i != e; ++i)</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>         filterTypes.push_back(filter.<a class="code" href="classclang_1_1CodeGen_1_1EHFilterScope.html#aadb4ef1e0a880fd7f17f6f5ced234b78">getFilter</a>(i));</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <span class="keywordflow">goto</span> done;</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="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547ac17250a4d7b1bc8a92ce79b487bdad68">EHScope::Terminate</a>:</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       <span class="comment">// Terminate scopes are basically catch-alls.</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       assert(!hasCatchAll);</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>       hasCatchAll = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>       <span class="keywordflow">goto</span> done;</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span> </div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>     <span class="keywordflow">case</span> <a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aaa6111c3baba7e2f60817c9e1f61c547a8b20c48289e794254eec810bf395c178">EHScope::Catch</a>:</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     }</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span> </div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> &catchScope = cast<EHCatchScope>(*I);</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> hi = 0, he = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a28fd922698192807ae8867a0afe09596">getNumHandlers</a>(); hi != he; ++hi) {</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>       <a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html">EHCatchScope::Handler</a> handler = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(hi);</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> </div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       <span class="comment">// If this is a catch-all, register that and abort.</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>       <span class="keywordflow">if</span> (!handler.<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a8a84be1330bfa410f7264db88a431e9f">Type</a>) {</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>         assert(!hasCatchAll);</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>         hasCatchAll = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>         <span class="keywordflow">goto</span> done;</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>       }</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>       <span class="comment">// Check whether we already have a handler for this type.</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       <span class="keywordflow">if</span> (catchTypes.insert(handler.<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a8a84be1330bfa410f7264db88a431e9f">Type</a>))</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>         <span class="comment">// If not, add it directly to the landingpad.</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         LPadInst->addClause(handler.<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a8a84be1330bfa410f7264db88a431e9f">Type</a>);</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>   }</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span> </div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>  done:</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>   <span class="comment">// If we have a catch-all, add null to the landingpad.</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   assert(!(hasCatchAll && hasFilter));</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>   <span class="keywordflow">if</span> (hasCatchAll) {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     LPadInst->addClause(<a class="code" href="CGException_8cpp.html#a9b892bb57a6793e5102756998388a34c">getCatchAllValue</a>(*<span class="keyword">this</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">// If we have an EH filter, we need to add those handlers in the</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>   <span class="comment">// right place in the landingpad, which is to say, at the end.</span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (hasFilter) {</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     <span class="comment">// Create a filter expression: a constant array indicating which filter</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>     <span class="comment">// types there are. The personality routine only lands here if the filter</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="comment">// doesn't match.</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Constant*, 8></a> Filters;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     llvm::ArrayType *AType =</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>       llvm::ArrayType::get(!filterTypes.empty() ?</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>                              filterTypes[0]->getType() : <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>,</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>                            filterTypes.size());</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = filterTypes.size(); i != e; ++i)</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>       Filters.push_back(cast<llvm::Constant>(filterTypes[i]));</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     llvm::Constant *FilterArray = llvm::ConstantArray::get(AType, Filters);</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     LPadInst->addClause(FilterArray);</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span> </div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="comment">// Also check whether we need a cleanup.</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <span class="keywordflow">if</span> (hasCleanup)</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       LPadInst->setCleanup(<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>   <span class="comment">// Otherwise, signal that we at least have cleanups.</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="CGException_8cpp.html#a77f95c296a1aac39c46eed97bb8a6086">CleanupHackLevel</a> == <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa2be689510f3951e492ec054d8fdc03c3">CHL_MandatoryCatchall</a> || hasCleanup) {</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     <span class="keywordflow">if</span> (<a class="code" href="CGException_8cpp.html#a77f95c296a1aac39c46eed97bb8a6086">CleanupHackLevel</a> == <a class="code" href="CGException_8cpp.html#ae61a6909f43221394b0b614eee1ec53fa2be689510f3951e492ec054d8fdc03c3">CHL_MandatoryCatchall</a>)</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>       LPadInst->addClause(<a class="code" href="CGException_8cpp.html#a9b892bb57a6793e5102756998388a34c">getCatchAllValue</a>(*<span class="keyword">this</span>));</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       LPadInst->setCleanup(<span class="keyword">true</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">  887</span>   assert((LPadInst->getNumClauses() > 0 || LPadInst->isCleanup()) &&</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>          <span class="stringliteral">"landingpad instruction has no clauses!"</span>);</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> </div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>   <span class="comment">// Tell the backend how to generate the landing pad.</span></div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd6aabde0a420648244b8e8f503dc284">getEHDispatchBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#ad727a3cc92638b4bbe253233f8fb2159">getInnermostEHScope</a>()));</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span> </div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>   <span class="comment">// Restore the old IR generation state.</span></div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.restoreIP(savedIP);</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html">CGDebugInfo</a> *DI = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aae2a6ad5f0ab2ff7b94e717a18352512">getDebugInfo</a>())</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     DI->EmitLocation(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, SavedLocation);</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span> </div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   <span class="keywordflow">return</span> lpad;</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> </div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span> <span class="comment">  /// A cleanup to call __cxa_end_catch.  In many cases, the caught</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span> <span class="comment">  /// exception type lets us state definitively that the thrown exception</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> <span class="comment">  /// type does not have a destructor.  In particular:</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span> <span class="comment">  ///   - Catch-alls tell us nothing, so we have to conservatively</span></div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span> <span class="comment">  ///     assume that the thrown exception might have a destructor.</span></div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span> <span class="comment">  ///   - Catches by reference behave according to their base types.</span></div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span> <span class="comment">  ///   - Catches of non-record types will only trigger for exceptions</span></div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> <span class="comment">  ///     of non-record types, which never have destructors.</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> <span class="comment">  ///   - Catches of record types can trigger for arbitrary subclasses</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span> <span class="comment">  ///     of the caught type, so we have to assume the actual thrown</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span> <span class="comment">  ///     exception type might have a throwing destructor, even if the</span></div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span> <span class="comment">  ///     caught type's destructor is trivial or nothrow.</span></div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span> <span class="comment"></span>  <span class="keyword">struct </span>CallEndCatch : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     CallEndCatch(<span class="keywordtype">bool</span> MightThrow) : MightThrow(MightThrow) {}</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="keywordtype">bool</span> MightThrow;</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span> </div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <span class="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="l00919"></a><span class="lineno">  919</span>       <span class="keywordflow">if</span> (!MightThrow) {</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CGException_8cpp.html#a4b9e0d0e87a381feb559df3879008870">getEndCatchFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>));</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</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>       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>(<a class="code" href="CGException_8cpp.html#a4b9e0d0e87a381feb559df3879008870">getEndCatchFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>));</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     }</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>   };</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span> }</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span> <span class="comment"></span></div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span> <span class="comment">/// Emits a call to __cxa_begin_catch and enters a cleanup to call</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span> <span class="comment">/// __cxa_end_catch.</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span> <span class="comment">/// \param EndMightThrow - true if __cxa_end_catch might throw</span></div>
+<div class="line"><a name="l00933"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">  933</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</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>                                    <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Exn,</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>                                    <span class="keywordtype">bool</span> EndMightThrow) {</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>   llvm::CallInst *call =</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CGException_8cpp.html#afa6aa0d1c12ad1ef384793aa41d17f2b">getBeginCatchFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>), Exn);</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span> </div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallEndCatch>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, EndMightThrow);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span> </div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   <span class="keywordflow">return</span> call;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span> }</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">/// A "special initializer" callback for initializing a catch</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <span class="comment">/// parameter during catch initialization.</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#aab89311cd14a67b7a81d74b208a68dc1">  946</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGException_8cpp.html#aab89311cd14a67b7a81d74b208a68dc1">InitCatchParam</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> &CatchParam,</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ParamAddr,</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>                            <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc) {</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="comment">// Load the exception from where the landing pad saved it.</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Exn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">getExceptionFromSlot</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>   <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> CatchType =</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</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#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(CatchParam.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>   llvm::Type *LLVMCatchTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab96689ae1b68ca38dd3c382f54bcbcd7">ConvertTypeForMem</a>(CatchType);</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span> </div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <span class="comment">// If we're catching by reference, we can just cast the object</span></div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>   <span class="comment">// pointer to the appropriate pointer.</span></div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   <span class="keywordflow">if</span> (isa<ReferenceType>(CatchType)) {</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> CaughtType = cast<ReferenceType>(CatchType)->getPointeeType();</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordtype">bool</span> EndCatchMightThrow = CaughtType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>();</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="comment">// __cxa_begin_catch returns the adjusted object pointer.</span></div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AdjustedExn = <a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</a>(CGF, Exn, EndCatchMightThrow);</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="comment">// We have no way to tell the personality function that we're</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>     <span class="comment">// catching by reference, so if we're catching a pointer,</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     <span class="comment">// __cxa_begin_catch will actually return that pointer by value.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PT = dyn_cast<PointerType>(CaughtType)) {</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>       <a class="code" href="classclang_1_1QualType.html">QualType</a> PointeeType = PT-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> </div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       <span class="comment">// When catching by reference, generally we should just ignore</span></div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       <span class="comment">// this by-value pointer and use the exception object instead.</span></div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       <span class="keywordflow">if</span> (!PointeeType-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>()) {</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span> </div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>         <span class="comment">// Exn points to the struct _Unwind_Exception header, which</span></div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>         <span class="comment">// we have to skip past in order to reach the exception data.</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>         <span class="keywordtype">unsigned</span> HeaderSize =</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</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#ac098ad9054632d2c6c4bf4c243cb04b1">getTargetCodeGenInfo</a>().<a class="code" href="classclang_1_1TargetCodeGenInfo.html#a3c6ebfd3d33fd5293840551e2d6833ee">getSizeOfUnwindException</a>();</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>         AdjustedExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateConstGEP1_32(Exn, HeaderSize);</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span> </div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>       <span class="comment">// However, if we're catching a pointer-to-record type that won't</span></div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>       <span class="comment">// work, because the personality function might have adjusted</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>       <span class="comment">// the pointer.  There's actually no way for us to fully satisfy</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>       <span class="comment">// the language/ABI contract here:  we can't use Exn because it</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       <span class="comment">// might have the wrong adjustment, but we can't use the by-value</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>       <span class="comment">// pointer because it's off by a level of abstraction.</span></div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>       <span class="comment">// The current solution is to dump the adjusted pointer into an</span></div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>       <span class="comment">// alloca, which breaks language semantics (because changing the</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>       <span class="comment">// pointer doesn't change the exception) but at least works.</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>       <span class="comment">// The better solution would be to filter out non-exact matches</span></div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>       <span class="comment">// and rethrow them, but this is tricky because the rethrow</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>       <span class="comment">// really needs to be catchable by other sites at this landing</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>       <span class="comment">// pad.  The best solution is to fix the personality function.</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>         <span class="comment">// Pull the pointer for the reference type off.</span></div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>         llvm::Type *PtrTy =</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>           cast<llvm::PointerType>(LLVMCatchTy)-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>         <span class="comment">// Create the temporary and write the adjusted pointer into it.</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ExnPtrTmp = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1c72e741c84049695bde11b7df94c332">CreateTempAlloca</a>(PtrTy, <span class="stringliteral">"exn.byref.tmp"</span>);</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Casted = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(AdjustedExn, PtrTy);</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(Casted, ExnPtrTmp);</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">// Bind the reference to the temporary.</span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>         AdjustedExn = ExnPtrTmp;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ExnCast =</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(AdjustedExn, LLVMCatchTy, <span class="stringliteral">"exn.byref"</span>);</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(ExnCast, ParamAddr);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   }</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>   <span class="comment">// Scalars and complexes.</span></div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>   <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9">TypeEvaluationKind</a> TEK = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(CatchType);</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   <span class="keywordflow">if</span> (TEK != <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>) {</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AdjustedExn = <a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</a>(CGF, Exn, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>     </div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>     <span class="comment">// If the catch type is a pointer type, __cxa_begin_catch returns</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="comment">// the pointer by value.</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     <span class="keywordflow">if</span> (CatchType->hasPointerRepresentation()) {</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CastExn =</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(AdjustedExn, LLVMCatchTy, <span class="stringliteral">"exn.casted"</span>);</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>       <span class="keywordflow">switch</span> (CatchType.<a class="code" href="classclang_1_1CanQual.html#a00e8d09cb751e6973746af70646da639" title="Retrieve all qualifiers.">getQualifiers</a>().<a class="code" href="classclang_1_1Qualifiers.html#adc87b34275b3ffb4f05274cc1fe0ecf7">getObjCLifetime</a>()) {</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</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="l01030"></a><span class="lineno"> 1030</span>         CastExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(CastExn);</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>         <span class="comment">// fallthrough</span></div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       <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="l01034"></a><span class="lineno"> 1034</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="l01035"></a><span class="lineno"> 1035</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="l01036"></a><span class="lineno"> 1036</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(CastExn, ParamAddr);</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> </div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</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="l01040"></a><span class="lineno"> 1040</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(ParamAddr, CastExn);</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>       }</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       llvm_unreachable(<span class="stringliteral">"bad ownership qualifier!"</span>);</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     }</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>     <span class="comment">// Otherwise, it returns a pointer into the exception object.</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>     llvm::Type *PtrTy = LLVMCatchTy->getPointerTo(0); <span class="comment">// addrspace 0 ok</span></div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Cast = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(AdjustedExn, PtrTy);</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> </div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> srcLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(Cast, CatchType);</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> destLV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(ParamAddr, CatchType,</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>                                   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(&CatchParam));</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     <span class="keywordflow">switch</span> (TEK) {</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>:</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa903765558c8982b2d81d97e637adda1" title="EmitStoreOfComplex - Store a complex number into the specified l-value.">EmitStoreOfComplex</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a26d8547dd8e031970116491629669c39" title="EmitLoadOfComplex - Load a complex number from the specified l-value.">EmitLoadOfComplex</a>(srcLV, Loc), destLV,</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>                              <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>: {</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ExnLoad = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(srcLV, Loc);</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(ExnLoad, destLV, <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     }</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>:</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>       llvm_unreachable(<span class="stringliteral">"evaluation kind filtered out!"</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>     llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</span>);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   }</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>   assert(isa<RecordType>(CatchType) && <span class="stringliteral">"unexpected catch type!"</span>);</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   llvm::Type *PtrTy = LLVMCatchTy->getPointerTo(0); <span class="comment">// addrspace 0 ok</span></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>   <span class="comment">// Check for a copy expression.  If we don't have a copy expression,</span></div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   <span class="comment">// that means a trivial copy is okay.</span></div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *copyExpr = CatchParam.<a class="code" href="classclang_1_1VarDecl.html#af6438debfc45cb2ad2d5cb5ce2711e0c">getInit</a>();</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   <span class="keywordflow">if</span> (!copyExpr) {</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *rawAdjustedExn = <a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</a>(CGF, Exn, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *adjustedExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(rawAdjustedExn, PtrTy);</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(ParamAddr, adjustedExn, CatchType);</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   }</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   <span class="comment">// We have to call __cxa_get_exception_ptr to get the adjusted</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   <span class="comment">// pointer before copying.</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>   llvm::CallInst *rawAdjustedExn =</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(<a class="code" href="CGException_8cpp.html#aed535d55b39f6d129ece2fa582299101">getGetExceptionPtrFn</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>), Exn);</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="comment">// Cast that to the appropriate type.</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *adjustedExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(rawAdjustedExn, PtrTy);</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>   <span class="comment">// The copy expression is defined in terms of an OpaqueValueExpr.</span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   <span class="comment">// Find it and map it to the adjusted expression.</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</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></div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     opaque(CGF, <a class="code" href="classclang_1_1OpaqueValueExpr.html#a2af873597d5eaa06dbd39b702fbabf44">OpaqueValueExpr::findInCopyConstruct</a>(copyExpr),</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>            CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafd7728d0f086ddf927150fcdcd86df8">MakeAddrLValue</a>(adjustedExn, CatchParam.<a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()));</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   <span class="comment">// Call the copy ctor in a terminate scope.</span></div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aefe8303d66c784211dfd9581be62b94b" title="Push a terminate handler on the stack.">pushTerminate</a>();</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> </div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   <span class="comment">// Perform the copy construction.</span></div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</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#addc194ad79f18e8de0cc0d34ab389eb6" title="Return a conservative estimate of the alignment of the specified decl D.">getDeclAlign</a>(&CatchParam);</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(copyExpr,</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>                   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(ParamAddr, Alignment, <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a>(),</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>                                         <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a80826bad4d38de95d9c8614c4b1612a5">AggValueSlot::IsNotDestructed</a>,</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>                                         <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>                                         <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>));</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>   <span class="comment">// Leave the terminate scope.</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#adccfb817d3fd406a110d5d1b077aa502" title="Pops a terminate handler off the stack.">popTerminate</a>();</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>   <span class="comment">// Undo the opaque value mapping.</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>   opaque.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1OpaqueValueMapping.html#a66b92cd268638057ba1f90003ae26f0d">pop</a>();</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> </div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <span class="comment">// Finally we can call __cxa_begin_catch.</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   <a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</a>(CGF, Exn, <span class="keyword">true</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"></span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="comment">/// Begins a catch statement by initializing the catch variable and</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> <span class="comment">/// calling __cxa_begin_catch.</span></div>
+<div class="line"><a name="l01121"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#ae19100fa21e3bf272fcdc5f3a586c8af"> 1121</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGException_8cpp.html#ae19100fa21e3bf272fcdc5f3a586c8af">BeginCatch</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_1CXXCatchStmt.html">CXXCatchStmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   <span class="comment">// We have to be very careful with the ordering of cleanups here:</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <span class="comment">//   C++ [except.throw]p4:</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <span class="comment">//     The destruction [of the exception temporary] occurs</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="comment">//     immediately after the destruction of the object declared in</span></div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   <span class="comment">//     the exception-declaration in the handler.</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <span class="comment">// So the precise ordering is:</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="comment">//   1.  Construct catch variable.</span></div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>   <span class="comment">//   2.  __cxa_begin_catch</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>   <span class="comment">//   3.  Enter __cxa_end_catch cleanup</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   <span class="comment">//   4.  Enter dtor cleanup</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>   <span class="comment">// We do this by using a slightly abnormal initialization process.</span></div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   <span class="comment">// Delegation sequence:</span></div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>   <span class="comment">//   - ExitCXXTryStmt opens a RunCleanupsScope</span></div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>   <span class="comment">//     - EmitAutoVarAlloca creates the variable and debug info</span></div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   <span class="comment">//       - InitCatchParam initializes the variable from the exception</span></div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   <span class="comment">//       - CallBeginCatch calls __cxa_begin_catch</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <span class="comment">//       - CallBeginCatch enters the __cxa_end_catch cleanup</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="comment">//     - EmitAutoVarCleanups enters the variable destructor cleanup</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   <span class="comment">//   - EmitCXXTryStmt emits the code for the catch body</span></div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   <span class="comment">//   - EmitCXXTryStmt close the RunCleanupsScope</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>   <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *CatchParam = S-><a class="code" href="classclang_1_1CXXCatchStmt.html#a7eb78e2e8fd238befe06fb565f443d82">getExceptionDecl</a>();</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   <span class="keywordflow">if</span> (!CatchParam) {</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Exn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">getExceptionFromSlot</a>();</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     <a class="code" href="CGException_8cpp.html#a07516f12dd13212e04d93a704070aa19">CallBeginCatch</a>(CGF, Exn, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   }</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">// Emit the local.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">CodeGenFunction::AutoVarEmission</a> var = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40b64c30a88dc9b44b4941951bf80da7">EmitAutoVarAlloca</a>(*CatchParam);</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>   <a class="code" href="CGException_8cpp.html#aab89311cd14a67b7a81d74b208a68dc1">InitCatchParam</a>(CGF, *CatchParam, var.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#af36fd0f2dffed18cf07cdced23826e8f">getObjectAddress</a>(CGF), S-><a class="code" href="classclang_1_1CXXCatchStmt.html#aef68f2f5bb259cbd19997c0dfaeb0c7c">getLocStart</a>());</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa92cef8f0df2b1f7f8aaadac281a3f23">EmitAutoVarCleanups</a>(var);</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="comment"></span></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="comment">/// Emit the structure of the dispatch block for the given catch scope.</span></div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">/// It is an invariant that the dispatch block already exists.</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"><a class="code" href="CGException_8cpp.html#a88adefe9f677eaa96d8cd8eefb59e824"> 1160</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGException_8cpp.html#a88adefe9f677eaa96d8cd8eefb59e824">emitCatchDispatchBlock</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>                                    <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> &catchScope) {</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>   llvm::BasicBlock *dispatchBlock = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aab25cdf91a6905f0f5052b379e902eb0">getCachedEHDispatchBlock</a>();</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>   assert(dispatchBlock);</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">// If there's only a single catch-all, getEHDispatchBlock returned</span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>   <span class="comment">// that catch-all as the dispatch block.</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   <span class="keywordflow">if</span> (catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a28fd922698192807ae8867a0afe09596">getNumHandlers</a>() == 1 &&</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(0).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a57ea843e48003350b0f8395b40abc27d">isCatchAll</a>()) {</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>     assert(dispatchBlock == catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(0).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a7b35de6754f3cc82f1ebc92062570cd1" title="The catch handler for this type.">Block</a>);</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   CGBuilderTy::InsertPoint savedIP = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.saveIP();</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4e20486acfb3cdfbec8d8fad2839ebba">EmitBlockAfterUses</a>(dispatchBlock);</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> </div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="comment">// Select the right handler.</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *llvm_eh_typeid_for =</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</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::eh_typeid_for);</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> </div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <span class="comment">// Load the selector value.</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *selector = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15aa5c7d5dcd706cc67805c74820b4d9">getSelectorFromSlot</a>();</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>   <span class="comment">// Test against each of the exception types we claim to catch.</span></div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a28fd922698192807ae8867a0afe09596">getNumHandlers</a>(); ; ++i) {</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     assert(i < e && <span class="stringliteral">"ran off end of handlers!"</span>);</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keyword">const</span> <a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html">EHCatchScope::Handler</a> &handler = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(i);</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> </div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *typeValue = handler.<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a8a84be1330bfa410f7264db88a431e9f">Type</a>;</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     assert(typeValue && <span class="stringliteral">"fell into catch-all case!"</span>);</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>     typeValue = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(typeValue, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>     <span class="comment">// Figure out the next block.</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>     <span class="keywordtype">bool</span> nextIsEnd;</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     llvm::BasicBlock *nextBlock;</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     <span class="comment">// If this is the last handler, we're at the end, and the next</span></div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     <span class="comment">// block is the block for the enclosing EH scope.</span></div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>     <span class="keywordflow">if</span> (i + 1 == e) {</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>       nextBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#acd6aabde0a420648244b8e8f503dc284">getEHDispatchBlock</a>(catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#ab0df2e53a38eec8c6692cee00870cf06">getEnclosingEHScope</a>());</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>       nextIsEnd = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     <span class="comment">// If the next handler is a catch-all, we're at the end, and the</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     <span class="comment">// next block is that handler.</span></div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(i+1).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a57ea843e48003350b0f8395b40abc27d">isCatchAll</a>()) {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>       nextBlock = catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a2230d10e9c3fa5e902701c824720c7be">getHandler</a>(i+1).<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a7b35de6754f3cc82f1ebc92062570cd1" title="The catch handler for this type.">Block</a>;</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       nextIsEnd = <span class="keyword">true</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="comment">// Otherwise, we're not at the end and we need a new block.</span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>       nextBlock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"catch.fallthrough"</span>);</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>       nextIsEnd = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>     }</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> </div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     <span class="comment">// Figure out the catch type's index in the LSDA's type table.</span></div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>     llvm::CallInst *typeIndex =</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(llvm_eh_typeid_for, typeValue);</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     typeIndex->setDoesNotThrow();</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>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *matchesTypeIndex =</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(selector, typeIndex, <span class="stringliteral">"matches"</span>);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(matchesTypeIndex, handler.<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html#a7b35de6754f3cc82f1ebc92062570cd1" title="The catch handler for this type.">Block</a>, nextBlock);</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> </div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     <span class="comment">// If the next handler is a catch-all, we're completely done.</span></div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     <span class="keywordflow">if</span> (nextIsEnd) {</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.restoreIP(savedIP);</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>     }</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     <span class="comment">// Otherwise we need to emit and continue at that block.</span></div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(nextBlock);</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> }</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> </div>
+<div class="line"><a name="l01233"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8c61c571269473854eeaba02ac6c63a0"> 1233</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8c61c571269473854eeaba02ac6c63a0">CodeGenFunction::popCatchScope</a>() {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> &catchScope = cast<EHCatchScope>(*<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   <span class="keywordflow">if</span> (catchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aef8e633f0e679fb719c3146303617c5c">hasEHBranches</a>())</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <a class="code" href="CGException_8cpp.html#a88adefe9f677eaa96d8cd8eefb59e824">emitCatchDispatchBlock</a>(*<span class="keyword">this</span>, catchScope);</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aa86f27ac1d1be1a441b511e9ebf3a1e0" title="Pops a catch scope off the stack. This is private to CGException.cpp.">popCatch</a>();</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"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1f782050e59094db58fbbd1b9e3f8c1"> 1240</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1f782050e59094db58fbbd1b9e3f8c1">CodeGenFunction::ExitCXXTryStmt</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXTryStmt.html">CXXTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <span class="keywordtype">bool</span> IsFnTryBlock) {</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   <span class="keywordtype">unsigned</span> NumHandlers = S.<a class="code" href="classclang_1_1CXXTryStmt.html#a35a6bca1856fe488e2cd2ed9d432303d">getNumHandlers</a>();</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> &CatchScope = cast<EHCatchScope>(*<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#af8e0bac242014da54b72fb5a7b797343" title="Returns an iterator pointing to the innermost EH scope.">begin</a>());</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   assert(CatchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#a28fd922698192807ae8867a0afe09596">getNumHandlers</a>() == NumHandlers);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   <span class="comment">// If the catch was not required, bail out now.</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   <span class="keywordflow">if</span> (!CatchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHScope.html#aef8e633f0e679fb719c3146303617c5c">hasEHBranches</a>()) {</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aa86f27ac1d1be1a441b511e9ebf3a1e0" title="Pops a catch scope off the stack. This is private to CGException.cpp.">popCatch</a>();</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   }</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <span class="comment">// Emit the structure of the EH dispatch for this catch.</span></div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <a class="code" href="CGException_8cpp.html#a88adefe9f677eaa96d8cd8eefb59e824">emitCatchDispatchBlock</a>(*<span class="keyword">this</span>, CatchScope);</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>   <span class="comment">// Copy the handler blocks off before we pop the EH stack.  Emitting</span></div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <span class="comment">// the handlers might scribble on this memory.</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<EHCatchScope::Handler, 8></a> Handlers(NumHandlers);</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>   memcpy(Handlers.data(), CatchScope.<a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#ad6c2b614423e835ba7d4bf8a2ba93293">begin</a>(),</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>          NumHandlers * <span class="keyword">sizeof</span>(<a class="code" href="structclang_1_1CodeGen_1_1EHCatchScope_1_1Handler.html">EHCatchScope::Handler</a>));</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> </div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.<a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack.html#aa86f27ac1d1be1a441b511e9ebf3a1e0" title="Pops a catch scope off the stack. This is private to CGException.cpp.">popCatch</a>();</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="comment">// The fall-through block.</span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</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">"try.cont"</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>   <span class="comment">// We just emitted the body of the try; jump to the continue block.</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac5f30cf7d71aada81975f4a079203b01">HaveInsertPoint</a>())</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBr(ContBB);</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>   <span class="comment">// Determine if we need an implicit rethrow for all these catch handlers;</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>   <span class="comment">// see the comment below.</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="keywordtype">bool</span> doImplicitRethrow = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <span class="keywordflow">if</span> (IsFnTryBlock)</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     doImplicitRethrow = isa<CXXDestructorDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>) ||</div>
+<div class="line"><a name="l01274"></a><span class=