[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/CGObjCMac_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCMac_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCMac_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCMac_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,688 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: CGObjCMac.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">CGObjCMac.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGObjCMac_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/CGObjCMac.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGObjCMac.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGObjCMac.cpp CGObjCRuntime.h CGBuilder.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/IR/Use.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/DebugLoc.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGCall.h \
+ CGValue.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h EHScopeStack.h \
+ ABIInfo.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</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 \
+ CGBlocks.h CodeGenFunction.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CodeGenModule.h \
+ CGVTables.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h CodeGenTypes.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/include/llvm/Support/Debug.h CGCleanup.h \
+ CGRecordLayout.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  /home/tstellar/llvm/include/llvm/IR/InlineAsm.h \</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>  /home/tstellar/llvm/include/llvm/IR/IntrinsicInst.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen \</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>  /home/tstellar/llvm/include/llvm/Support/CallSite.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> CGObjCRuntime.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> CGBuilder.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/IR/IRBuilder.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/ArrayRef.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/ADT/None.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/ADT/SmallVector.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/Support/AlignOf.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/Compiler.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/Config/llvm-config.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/MathExtras.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/SwapByteOrder.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/ADT/Twine.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/Support/ErrorHandling.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/BasicBlock.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.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/Instruction.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/ADT/ilist_node.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/User.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/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.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/IR/Use.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.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/Casting.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-c/Core.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/include/llvm/Support/DebugLoc.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/Instruction.def:</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/IR/SymbolTableListTraits.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/IR/DataLayout.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/ADT/DenseMap.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/ADT/DenseMapInfo.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/IR/DerivedTypes.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/IR/Type.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.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/ADT/APInt.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/PassSupport.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/Pass.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/InitializePasses.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/PassRegistry.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/Support/Atomic.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/Support/Valgrind.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/PassAnalysisSupport.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/IR/Instructions.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/Attributes.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.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/<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="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/InstrTypes.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/OperandTraits.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/LLVMContext.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/Operator.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/IR/Constants.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/IR/Constant.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/GetElementPtrTypeIterator.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/include/llvm/Support/ConstantFolder.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/include/llvm/Support/ValueHandle.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> CGCall.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> CGValue.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.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/ASTFwd.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/DeclNodes.inc:</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/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc:</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/TypeNodes.def:</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/Decl.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/APValue.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/LLVM.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/include/llvm/ADT/APSInt.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/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.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/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.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/OperatorKinds.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/OperatorKinds.def:</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/TokenKinds.h:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def:</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/include/llvm/ADT/SmallString.h:</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/include/llvm/ADT/StringMap.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/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.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/DiagnosticIDs.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/include/llvm/ADT/IntrusiveRefCntPtr.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/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h:</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/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.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/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<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="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/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.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/AST/ExternalASTSource.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/AST/CharUnits.h:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.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/Type.h:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.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/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="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</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="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/ADT/Optional.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/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/include/llvm/Support/system_error.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/AST/Stmt.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/DeclGroup.h:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.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/CapturedStmt.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/AST/TemplateBase.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/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def:</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/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.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/Basic/VersionTuple.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/include/llvm/ADT/Triple.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/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.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/RawCommentList.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/Basic/SourceManager.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/FileManager.h:</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.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/include/llvm/Support/MemoryBuffer.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/AddressSpaces.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/include/llvm/ADT/SmallPtrSet.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/TinyPtrVector.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> EHScopeStack.h:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> ABIInfo.h:</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> /home/tstellar/llvm/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="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> CGBlocks.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> CodeGenFunction.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> CGDebugInfo.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/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.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/AST/DeclAccessPair.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/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</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/Frontend/CodeGenOptions.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/Frontend/CodeGenOptions.def:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> /home/tstellar/llvm/include/llvm/Support/Dwarf.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> CodeGenModule.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> CGVTables.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/BaseSubobject.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/GlobalDecl.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/AST/DeclCXX.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/ASTUnresolvedSet.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/UnresolvedSet.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/ExprCXX.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.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/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.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/Basic/ABI.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/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.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/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.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/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.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/include/llvm/ADT/SetVector.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/GlobalVariable.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/GlobalValue.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> CodeGenTypes.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/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.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/include/llvm/IR/Module.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/include/llvm/IR/Function.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/include/llvm/IR/Argument.h:</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/IR/GlobalAlias.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/Attr.h:</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/Basic/AttrKinds.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/AttrList.inc:</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/ADT/StringSwitch.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/Attrs.inc:</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/AST/Mangle.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/Module.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/include/llvm/Transforms/Utils/SpecialCaseList.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/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.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/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.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/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> /home/tstellar/llvm/include/llvm/Support/Debug.h:</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> </div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> CGCleanup.h:</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> CGRecordLayout.h:</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> </div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h:</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> </div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span> /home/tstellar/llvm/include/llvm/IR/InlineAsm.h:</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> </div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span> /home/tstellar/llvm/include/llvm/IR/IntrinsicInst.h:</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> /home/tstellar/llvm/include/llvm/IR/Intrinsics.h:</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> </div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> /home/tstellar/llvm/include/llvm/IR/Intrinsics.gen:</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> /home/tstellar/llvm/include/llvm/Support/CallSite.h:</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:26 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/CGObjCRuntime_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,462 @@
+<!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: CGObjCRuntime.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">CGObjCRuntime.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGObjCRuntime_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">//==- CGObjCRuntime.cpp - Interface to Shared Objective-C Runtime Features ==//</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 abstract class defines the interface for Objective-C runtime-specific</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// code generation.  It provides some concrete helper methods for functionality</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">// shared between all (or most) of the Objective-C runtimes supported by clang.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</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="CGCleanup_8h.html">CGCleanup.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="CGRecordLayout_8h.html">CGRecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="CodeGenModule_8h.html">CodeGenModule.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="RecordLayout_8h.html">clang/AST/RecordLayout.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</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="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/Support/CallSite.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">   29</a></span> <span class="keyword">static</span> uint64_t <a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">LookupFieldBitOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID,</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>,</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar) {</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Container = Ivar-><a class="code" href="classclang_1_1ObjCIvarDecl.html#aa16c217c4e8952345ce46401db00e142" title="Return the class interface that this ivar is logically contained in; this is either the interface whe...">getContainingInterface</a>();</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="comment">// FIXME: We should eliminate the need to have ObjCImplementationDecl passed</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="comment">// in here; it should never be necessary because that should be the lexical</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="comment">// decl context for the ivar.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="comment">// If we know have an implementation (and the ivar is in it) then</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment">// look up in the implementation layout.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ASTRecordLayout.html">ASTRecordLayout</a> *RL;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">if</span> (ID && <a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(ID-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), Container))</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     RL = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#af1acdfd23ab715bb4d79a03781cd6d9b" title="Get or compute information about the layout of the specified Objective-C implementation.">getASTObjCImplementationLayout</a>(ID);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     RL = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a0c252aa684cc2fc11ed5b105644284f3" title="Get or compute information about the layout of the specified Objective-C interface.">getASTObjCInterfaceLayout</a>(Container);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="comment">// Compute field index.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="comment">// FIXME: The index here is closely tied to how ASTContext::getObjCLayout is</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="comment">// implemented. This should be fixed to get the information from the layout</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="comment">// directly.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordtype">unsigned</span> Index = 0;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *IVD = Container-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a33ad0524e4d449655e216893b85910e2">all_declared_ivar_begin</a>(); </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>        IVD; IVD = IVD-><a class="code" href="classclang_1_1ObjCIvarDecl.html#ad4e167798de561f182d039520eb90b29">getNextIvar</a>()) {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">if</span> (Ivar == IVD)</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     ++Index;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   }</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   assert(Index < RL->getFieldCount() && <span class="stringliteral">"Ivar is not inside record layout!"</span>);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordflow">return</span> RL-><a class="code" href="classclang_1_1ASTRecordLayout.html#a5469e46f4a69644ac8747cef95095f3a">getFieldOffset</a>(Index);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> }</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7f5bb1f3fb5c80e526174171e94e125c">   65</a></span> uint64_t <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7f5bb1f3fb5c80e526174171e94e125c">CGObjCRuntime::ComputeIvarBaseOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID,</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">LookupFieldBitOffset</a>(CGM, OID, 0, Ivar) / </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>();</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</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"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a22625b7d1148be17baf10608ac8d9e37">   72</a></span> uint64_t <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7f5bb1f3fb5c80e526174171e94e125c">CGObjCRuntime::ComputeIvarBaseOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *OID,</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">LookupFieldBitOffset</a>(CGM, OID-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), OID, Ivar) / </div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>();</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</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"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#aea20ce5966fd6fb7db1d21aebf7d1fa1">   79</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#aea20ce5966fd6fb7db1d21aebf7d1fa1">CGObjCRuntime::ComputeBitfieldBitOffset</a>(</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>,</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar) {</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">LookupFieldBitOffset</a>(CGM, ID, ID-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1f5cbf5895d33b33402a9a8553e39733">getImplementation</a>(), Ivar);</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> </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7b361207e788e02a9da6a1bc76e0b8c9">   86</a></span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7b361207e788e02a9da6a1bc76e0b8c9">CGObjCRuntime::EmitValueForIvarAtOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID,</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *BaseValue,</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>                                                <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                                                <span class="keywordtype">unsigned</span> CVRQualifiers,</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>                                                <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="comment">// Compute (type*) ( (char *) BaseValue + Offset)</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> IvarTy = Ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   llvm::Type *LTy = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9e549d382da897b9d23ed3e2c65e6cf7">ConvertTypeForMem</a>(IvarTy);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(BaseValue, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateInBoundsGEP(V, Offset, <span class="stringliteral">"add.ptr"</span>);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="keywordflow">if</span> (!Ivar-><a class="code" href="classclang_1_1FieldDecl.html#af8c123e193d426f26496c15e2f168a49" title="isBitfield - Determines whether this field is a bitfield.">isBitField</a>()) {</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V, llvm::PointerType::getUnqual(LTy));</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(V, IvarTy);</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a046d8d562af26daba3ed3b781ba5ff54">getQuals</a>().<a class="code" href="classclang_1_1Qualifiers.html#a2da3a31143e2e9ac517bc0dcb04f311e">addCVRQualifiers</a>(CVRQualifiers);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">return</span> LV;</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> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="comment">// We need to compute an access strategy for this bit-field. We are given the</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment">// offset to the first byte in the bit-field, the sub-byte offset is taken</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="comment">// from the original layout. We reuse the normal bit-field access strategy by</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="comment">// treating this as an access to a struct where the bit-field is in byte 0,</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="comment">// and adjust the containing type size as appropriate.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="comment">// FIXME: Note that currently we make a very conservative estimate of the</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment">// alignment of the bit-field, because (a) it is not clear what guarantees the</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="comment">// runtime makes us, and (b) we don't have a way to specify that the struct is</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="comment">// at an alignment plus offset.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="comment">// Note, there is a subtle invariant here: we can only call this routine on</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="comment">// non-synthesized ivars but we may be called for synthesized ivars.  However,</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="comment">// a synthesized ivar can never be a bit-field, so this is safe.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   uint64_t FieldBitOffset = <a class="code" href="CGObjCRuntime_8cpp.html#aaaec95af3e1a90c69474a515ed5ba0ca">LookupFieldBitOffset</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, OID, 0, Ivar);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   uint64_t BitOffset = FieldBitOffset % 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#ac347a9a51b589a7f135c909692ef582e" title="Return the size of the character type, in bits.">getCharWidth</a>();</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   uint64_t AlignmentBits = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a0bbfee5082c53194cfbf1b57b58f617a">getCharAlign</a>();</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   uint64_t BitFieldSize = Ivar-><a class="code" href="classclang_1_1FieldDecl.html#ae5e97c5f219d8bd73934ef38453ae44a">getBitWidthValue</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>());</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> StorageSize =</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</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#a5d5f812ba1100ca9ef1c1a812b2f5a24" title="Convert a size in bits to a size in characters.">toCharUnitsFromBits</a>(</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       llvm::RoundUpToAlignment(BitOffset + BitFieldSize, AlignmentBits));</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment = 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#a5d5f812ba1100ca9ef1c1a812b2f5a24" title="Convert a size in bits to a size in characters.">toCharUnitsFromBits</a>(AlignmentBits);</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> </div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="comment">// Allocate a new CGBitFieldInfo object to describe this access.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="comment">// FIXME: This is incredibly wasteful, these should be uniqued or part of some</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   <span class="comment">// layout object. However, this is blocked on other cleanups to the</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="comment">// Objective-C code, so for now we just live with allocating a bunch of these</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="comment">// objects.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <a class="code" href="structclang_1_1CodeGen_1_1CGBitFieldInfo.html" title="Structure with information about how a bitfield should be accessed.">CGBitFieldInfo</a> *Info = <span class="keyword">new</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="structclang_1_1CodeGen_1_1CGBitFieldInfo.html" title="Structure with information about how a bitfield should be accessed.">CGBitFieldInfo</a>(</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     <a class="code" href="structclang_1_1CodeGen_1_1CGBitFieldInfo.html#ad8d73df07814bda59cacfb267bc586c7" title="Given a bit-field decl, build an appropriate helper object for accessing that field (which is expecte...">CGBitFieldInfo::MakeInfo</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>(), Ivar, BitOffset, BitFieldSize,</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</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#a95106fc9aa2f8cbcf459d9915bacbfd2" title="Convert a size in characters to a size in bits.">toBits</a>(StorageSize),</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>                              Alignment.<a class="code" href="classclang_1_1CharUnits.html#a09546c4bc2fefb3cb4d964eb9f25d33a" title="getQuantity - Get the raw integer representation of this quantity.">getQuantity</a>()));</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   V = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(V,</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                                 llvm::Type::getIntNPtrTy(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                                                          Info-><a class="code" href="structclang_1_1CodeGen_1_1CGBitFieldInfo.html#ad53e4a88f644dc36a387078e3a12526a">StorageSize</a>));</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html#aa8d0eeb02231b31ab9252b8132d40b67" title="Create a new object to represent a bit-field access.">LValue::MakeBitfield</a>(V, *Info,</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>                               IvarTy.<a class="code" href="classclang_1_1QualType.html#a0dbe9e2f24e3e7d8a3aaae1e69b0beeb">withCVRQualifiers</a>(CVRQualifiers),</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>                               Alignment);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> }</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="keyword">struct </span>CatchHandler {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *Variable;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Body;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     llvm::BasicBlock *Block;</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="structTypeInfo.html">TypeInfo</a>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   };</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keyword">struct </span>CallObjCEndCatch : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     CallObjCEndCatch(<span class="keywordtype">bool</span> MightThrow, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Fn) :</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       MightThrow(MightThrow), Fn(Fn) {}</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     <span class="keywordtype">bool</span> MightThrow;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Fn;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     <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="l00162"></a><span class="lineno">  162</span>       <span class="keywordflow">if</span> (!MightThrow) {</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(Fn)->setDoesNotThrow();</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         <span class="keywordflow">return</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>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">EmitRuntimeCallOrInvoke</a>(Fn);</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   };</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> }</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a08724ef1c0f41136dad40f9cefb9b13d">  173</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a08724ef1c0f41136dad40f9cefb9b13d">CGObjCRuntime::EmitTryCatchStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtTryStmt.html" title="Represents Objective-C's @try ... @catch ... @finally statement.">ObjCAtTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                                      llvm::Constant *beginCatchFn,</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                                      llvm::Constant *endCatchFn,</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                                      llvm::Constant *exceptionRethrowFn) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="comment">// Jump destination for falling out of catch bodies.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html">CodeGenFunction::JumpDest</a> Cont;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a1e1017ae02939214e29748b63fd3f6b7" title="Retrieve the number of @catch statements in this try-catch-finally block.">getNumCatchStmts</a>())</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>     Cont = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0e99acb67867ef0ac1b5e8d3b1e18fee">getJumpDestInCurrentScope</a>(<span class="stringliteral">"eh.cont"</span>);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1FinallyInfo.html" title="A class controlling the emission of a finally block.">CodeGenFunction::FinallyInfo</a> FinallyInfo;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtFinallyStmt.html" title="Represents Objective-C's @finally statement.">ObjCAtFinallyStmt</a> *Finally = S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#ae318ffee73b17ef7cb44df5ce5257c45" title="Retrieve the @finally statement, if any.">getFinallyStmt</a>())</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     FinallyInfo.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1FinallyInfo.html#a7f0acf3309778396d73280990f4a530a">enter</a>(CGF, Finally->getFinallyBody(),</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>                       beginCatchFn, endCatchFn, exceptionRethrowFn);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CatchHandler, 8></a> Handlers;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>   <span class="comment">// Enter the catch, if there is one.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a1e1017ae02939214e29748b63fd3f6b7" title="Retrieve the number of @catch statements in this try-catch-finally block.">getNumCatchStmts</a>()) {</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a1e1017ae02939214e29748b63fd3f6b7" title="Retrieve the number of @catch statements in this try-catch-finally block.">getNumCatchStmts</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtCatchStmt.html" title="Represents Objective-C's @catch statement.">ObjCAtCatchStmt</a> *CatchStmt = S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a7c4797189f6145dd84394294d8d5b04f" title="Retrieve a @catch statement.">getCatchStmt</a>(I);</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *CatchDecl = CatchStmt-><a class="code" href="classclang_1_1ObjCAtCatchStmt.html#a2a5c6cdf3b6fdecb80bf2373c749d508">getCatchParamDecl</a>();</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>       Handlers.push_back(CatchHandler());</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>       CatchHandler &Handler = Handlers.back();</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       Handler.Variable = CatchDecl;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       Handler.Body = CatchStmt-><a class="code" href="classclang_1_1ObjCAtCatchStmt.html#aadda4ca401a39fa5f63fd4723ac0a54a">getCatchBody</a>();</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       Handler.Block = 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"</span>);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       <span class="comment">// @catch(...) always matches.</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       <span class="keywordflow">if</span> (!CatchDecl) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>         Handler.TypeInfo = 0; <span class="comment">// catch-all</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>         <span class="comment">// Don't consider any other catches.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>       }</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>       Handler.TypeInfo = <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1f6fc246a15b6a108b04e2d4606194b9">GetEHType</a>(CatchDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     }</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>     <a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html">EHCatchScope</a> *Catch = CGF.<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>(Handlers.size());</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = Handlers.size(); I != E; ++I)</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       Catch-><a class="code" href="classclang_1_1CodeGen_1_1EHCatchScope.html#adc88de04a8c758b376d6de0a0b5ff684">setHandler</a>(I, Handlers[I].TypeInfo, Handlers[I].Block);</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>   </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   <span class="comment">// Emit the try body.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a3a694d1a418a5abb7cfbfc0fe49afd94" title="Retrieve the @try body.">getTryBody</a>());</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>   <span class="comment">// Leave the try.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#a1e1017ae02939214e29748b63fd3f6b7" title="Retrieve the number of @catch statements in this try-catch-finally block.">getNumCatchStmts</a>())</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8c61c571269473854eeaba02ac6c63a0">popCatchScope</a>();</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="comment">// Remember where we were.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   CGBuilderTy::InsertPoint SavedIP = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.saveAndClearIP();</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">// Emit the handlers.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = Handlers.size(); I != E; ++I) {</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     CatchHandler &Handler = Handlers[I];</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(Handler.Block);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *RawExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a15e7d15f0497bb9b0a07d0d6dae1bf53">getExceptionFromSlot</a>();</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="comment">// Enter the catch.</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Exn = RawExn;</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">if</span> (beginCatchFn) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       Exn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(beginCatchFn, RawExn, <span class="stringliteral">"exn.adjusted"</span>);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       cast<llvm::CallInst>(Exn)->setDoesNotThrow();</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     }</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1LexicalScope.html">CodeGenFunction::LexicalScope</a> cleanups(CGF, Handler.Body->getSourceRange());</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="keywordflow">if</span> (endCatchFn) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="comment">// Add a cleanup to leave the catch.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <span class="keywordtype">bool</span> EndCatchMightThrow = (Handler.Variable == 0);</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>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjCEndCatch>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>,</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>                                                 EndCatchMightThrow,</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>                                                 endCatchFn);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     }</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="comment">// Bind the catch parameter if it exists.</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *CatchParam = Handler.Variable) {</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       llvm::Type *CatchType = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(CatchParam->getType());</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CastExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Exn, CatchType);</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>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a361ac65d0e3162cda8f4da98876a54dd">EmitAutoVarDecl</a>(*CatchParam);</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *CatchParamAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a82621c86a6f95d33ae07868357749654" title="GetAddrOfLocalVar - Return the address of a local variable.">GetAddrOfLocalVar</a>(CatchParam);</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> </div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="keywordflow">switch</span> (CatchParam->getType().getQualifiers().getObjCLifetime()) {</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</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="l00263"></a><span class="lineno">  263</span>         CastExn = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(CastExn);</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         <span class="comment">// fallthrough</span></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>       <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="l00267"></a><span class="lineno">  267</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="l00268"></a><span class="lineno">  268</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="l00269"></a><span class="lineno">  269</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(CastExn, CatchParamAddr);</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>       <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="l00273"></a><span class="lineno">  273</span>         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">EmitARCInitWeak</a>(CatchParamAddr, CastExn);</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="keywordflow">break</span>;</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> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47a05d442e9157795067aa2be50e62ec">ObjCEHValueStack</a>.push_back(Exn);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(Handler.Body);</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47a05d442e9157795067aa2be50e62ec">ObjCEHValueStack</a>.pop_back();</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="comment">// Leave any cleanups associated with the catch.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>     cleanups.ForceCleanup();</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> </div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5267fb1f19ad8f353488a7a12217117a" title="Terminate the current block by emitting a branch which might leave the current cleanup-protected scop...">EmitBranchThroughCleanup</a>(Cont);</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   }  </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="comment">// Go back to the try-statement fallthrough.</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.restoreIP(SavedIP);</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="comment">// Pop out of the finally.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1ObjCAtTryStmt.html#ae318ffee73b17ef7cb44df5ce5257c45" title="Retrieve the @finally statement, if any.">getFinallyStmt</a>())</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     FinallyInfo.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1FinallyInfo.html#a9b7a24aa9a952d483aec509f094d395d">exit</a>(CGF);</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="keywordflow">if</span> (Cont.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#ae61f66e6bd6a67610116a5fab1b72294">isValid</a>())</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(Cont.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#a144ebf8cb8b5850c9fbf2d0b42fc0283">getBlock</a>());</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> }</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keyword">struct </span>CallSyncExit : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SyncExitFn;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SyncArg;</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>     CallSyncExit(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SyncExitFn, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SyncArg)</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>       : SyncExitFn(SyncExitFn), SyncArg(SyncArg) {}</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="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="l00307"></a><span class="lineno">  307</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(SyncExitFn, SyncArg)->setDoesNotThrow();</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     }</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   };</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> }</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1781c58baeb2aa3e0230df03f037a4a7">  312</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1781c58baeb2aa3e0230df03f037a4a7">CGObjCRuntime::EmitAtSynchronizedStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html" title="Represents Objective-C's @synchronized statement.">ObjCAtSynchronizedStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>                                            llvm::Function *syncEnterFn,</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>                                            llvm::Function *syncExitFn) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">CodeGenFunction::RunCleanupsScope</a> cleanups(CGF);</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="comment">// Evaluate the lock operand.  This is guaranteed to dominate the</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">// ARC release and lock-release cleanups.</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *lockExpr = S.<a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html#a0b42356314e91db5132f170fa041c3e3">getSynchExpr</a>();</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *lock;</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <span class="keywordflow">if</span> (CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     lock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe">EmitARCRetainScalarExpr</a>(lockExpr);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     lock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a05d91b79ac8319906346cdb3b3ad6948">EmitObjCConsumeObject</a>(lockExpr-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), lock);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     lock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(lockExpr);</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>   lock = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(lock, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   <span class="comment">// Acquire the lock.</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(syncEnterFn, lock)->setDoesNotThrow();</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   <span class="comment">// Register an all-paths cleanup to release the lock.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallSyncExit>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa142bdd64990b3ca421f185b630db66c8">NormalAndEHCleanup</a>, syncExitFn, lock);</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">// Emit the body of the statement.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(S.<a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html#a313a9ed284caeab2213c6d455c26d003">getSynchBody</a>());</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"></span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> <span class="comment">/// Compute the pointer-to-function type to which a message send</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment">/// should be casted in order to correctly call the given method</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment">/// with the given arguments.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="comment">/// \param method - may be null</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">/// \param resultType - the result type to use if there's no method</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment">/// \param callArgs - the actual arguments, including implicit ones</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> <span class="comment"></span><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">CGObjCRuntime::MessageSendInfo</a></div>
+<div class="line"><a name="l00348"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ad1d540d665c4bf03c345aae1d9b4f459">  348</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ad1d540d665c4bf03c345aae1d9b4f459">CGObjCRuntime::getMessageSendInfo</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method,</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>                                   <a class="code" href="classclang_1_1QualType.html">QualType</a> resultType,</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>                                   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &callArgs) {</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="comment">// If there's a method, use information from that.</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="keywordflow">if</span> (method) {</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &signature =</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">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#af46a93b855143dbf86a428e50205d105">arrangeObjCMessageSendSignature</a>(method, callArgs[0].Ty);</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>     llvm::PointerType *signatureType =</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>       <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(signature)->getPointerTo();</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> </div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="comment">// If that's not variadic, there's no need to recompute the ABI</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="comment">// arrangement.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">if</span> (!signature.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#af0986db3de02a0f943e4b698166afb4e">isVariadic</a>())</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>       <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">MessageSendInfo</a>(signature, signatureType);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="comment">// Otherwise, there is.</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a> einfo = signature.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a2641287e0c18c5290e351eb7d27750c2">getExtInfo</a>();</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &argsInfo =</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>       <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(resultType, callArgs, einfo,</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>                                              signature.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ad58678b0735829d8af5871209ca49ddf">getRequiredArgs</a>());</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">MessageSendInfo</a>(argsInfo, signatureType);</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> </div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="comment">// There's no method;  just use a default CC.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &argsInfo =</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(resultType, callArgs, </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>                                            <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>                                            <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="comment">// Derive the signature to call from that.</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   llvm::PointerType *signatureType =</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>     <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(argsInfo)->getPointerTo();</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="keywordflow">return</span> <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">MessageSendInfo</a>(argsInfo, signatureType);</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:26 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/CGObjCRuntime_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,673 @@
+<!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: CGObjCRuntime.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">CGObjCRuntime.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGObjCRuntime_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/CGObjCRuntime.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/Release+Asserts/CGObjCRuntime.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  CGObjCRuntime.cpp CGObjCRuntime.h CGBuilder.h \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/include/llvm/IR/IRBuilder.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/IR/BasicBlock.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/ilist.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/ilist_node.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/IR/User.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/IR/Use.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/DebugLoc.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/IR/Instruction.def \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/IR/SymbolTableListTraits.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/IR/DataLayout.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/IR/DerivedTypes.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/IR/Type.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/PassSupport.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Pass.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/InitializePasses.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/PassRegistry.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/Support/Atomic.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/Valgrind.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/PassAnalysisSupport.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/IR/Instructions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/IR/Attributes.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/IR/<a class="code" href="namespaceclang.html#ae6d16e133294b0b9c8c8d3108aadd25b" title="CallingConv - Specifies the calling convention that a function uses.">CallingConv</a>.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/IR/InstrTypes.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/IR/OperandTraits.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/IR/LLVMContext.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm/IR/Operator.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/IR/Constants.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/IR/Constant.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/Support/GetElementPtrTypeIterator.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/Support/ConstantFolder.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/Support/ValueHandle.h CGCall.h \
+ CGValue.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h EHScopeStack.h \
+ ABIInfo.h \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</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 \
+ CGCleanup.h CGRecordLayout.h CodeGenFunction.h CGDebugInfo.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.def \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/include/llvm/DIBuilder.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/DebugInfo.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/include/llvm/IR/Metadata.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/include/llvm/Support/Dwarf.h CodeGenModule.h \
+ CGVTables.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/BaseSubobject.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/GlobalDecl.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/VTableBuilder.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/include/llvm/IR/GlobalVariable.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/include/llvm/IR/GlobalValue.h CodeGenTypes.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/include/llvm/IR/Module.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/include/llvm/IR/Function.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/include/llvm/IR/Argument.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/include/llvm/IR/GlobalAlias.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Mangle.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/include/llvm/Support/Debug.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  /home/tstellar/llvm/include/llvm/Support/CallSite.h</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> CGObjCRuntime.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> CGCall.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> CGValue.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/ASTContext.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/AST/ASTTypeTraits.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTFwd.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/tools/clang/lib/CodeGen/../../include/clang/AST/DeclNodes.inc:</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/StmtNodes.inc:</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/TypeNodes.def:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/Decl.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/APValue.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/Basic/LLVM.h:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/DeclarationName.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/IdentifierTable.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/OperatorKinds.def:</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/TokenKinds.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/TokenKinds.def:</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/include/llvm/ADT/SmallString.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/StringMap.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/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</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/PartialDiagnostic.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/Diagnostic.h:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticIDs.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/IntrusiveRefCntPtr.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/DiagnosticCommonKinds.inc:</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/DiagnosticOptions.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/tools/clang/lib/CodeGen/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceLocation.h:</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/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/<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="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Specifiers.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/include/llvm/Support/PrettyStackTrace.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/ExternalASTSource.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/CharUnits.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/AST/Redeclarable.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/AST/Type.h:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/NestedNameSpecifier.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/TemplateName.h:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/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="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</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="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/ADT/Optional.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/tools/clang/lib/CodeGen/../../include/clang/AST/BuiltinTypes.def:</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/raw_ostream.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/FileSystem.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/include/llvm/Support/system_error.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/Stmt.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/DeclGroup.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/AST/StmtIterator.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/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/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/AST/TypeLoc.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/AST/TypeLocNodes.def:</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/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandTraits.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/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> /home/tstellar/llvm/include/llvm/ADT/Triple.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/Basic/Sanitizers.def:</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/Basic/LangOptions.def:</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/Basic/OpenCLExtensions.def:</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/RawCommentList.h:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/FileManager.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/Basic/FileSystemOptions.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/include/llvm/ADT/DenseSet.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/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/AddressSpaces.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/include/llvm/ADT/SmallPtrSet.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/include/llvm/ADT/TinyPtrVector.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> EHScopeStack.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> ABIInfo.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/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> /home/tstellar/llvm/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="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> CGCleanup.h:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> CGRecordLayout.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> CodeGenFunction.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> CGDebugInfo.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/AST/Expr.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/tools/clang/lib/CodeGen/../../include/clang/AST/ASTVector.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/tools/clang/lib/CodeGen/../../include/clang/AST/DeclAccessPair.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/AST/OperationKinds.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/tools/clang/lib/CodeGen/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Frontend/CodeGenOptions.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/Frontend/CodeGenOptions.def:</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> /home/tstellar/llvm/include/llvm/DIBuilder.h:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> /home/tstellar/llvm/include/llvm/DebugInfo.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/include/llvm/IR/Metadata.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/include/llvm/Support/Dwarf.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> CodeGenModule.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> CGVTables.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/AST/BaseSubobject.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/GlobalDecl.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/DeclCXX.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/AST/ASTUnresolvedSet.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/UnresolvedSet.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/ExprCXX.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/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/Lambda.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/tools/clang/lib/CodeGen/../../include/clang/Basic/ABI.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/VTableBuilder.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/tools/clang/lib/CodeGen/../../include/clang/AST/CXXInheritance.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/tools/clang/lib/CodeGen/../../include/clang/AST/TypeOrdering.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/ADT/MapVector.h:</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.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/include/llvm/IR/GlobalVariable.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/GlobalValue.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> CodeGenTypes.h:</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/CodeGen/CGFunctionInfo.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/Module.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/include/llvm/IR/Function.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/include/llvm/IR/Argument.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/include/llvm/IR/GlobalAlias.h:</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/tools/clang/lib/CodeGen/../../include/clang/AST/Attr.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/Basic/AttrKinds.h:</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/Basic/AttrList.inc:</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/include/llvm/ADT/StringSwitch.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/tools/clang/lib/CodeGen/../../include/clang/AST/Attrs.inc:</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/Mangle.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/Module.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/include/llvm/Transforms/Utils/SpecialCaseList.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/AST/ExprObjC.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/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetInfo.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> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetCXXABI.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/tools/clang/lib/CodeGen/../../include/clang/Basic/TargetOptions.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/Support/Debug.h:</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> </div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> /home/tstellar/llvm/tools/clang/lib/CodeGen/../../include/clang/AST/StmtObjC.h:</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> </div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> /home/tstellar/llvm/include/llvm/Support/CallSite.h:</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> </div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:26 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/CGObjCRuntime_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjCRuntime_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,378 @@
+<!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: CGObjCRuntime.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_373837989a1dc63be881832a195d38c3.html">CodeGen</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CGObjCRuntime.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGObjCRuntime_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===----- CGObjCRuntime.h - Interface to ObjC Runtimes ---------*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">// This provides an abstract class for Objective-C code generation.  Concrete</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// subclasses of this implement code generation for specific Objective-C</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">// runtime libraries.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#ifndef CLANG_CODEGEN_OBCJRUNTIME_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span><span class="preprocessor">#define CLANG_CODEGEN_OBCJRUNTIME_H</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="CGBuilder_8h.html">CGBuilder.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="CGCall_8h.html">CGCall.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="CGValue_8h.html">CGValue.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="IdentifierTable_8h.html" title="Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.">clang/Basic/IdentifierTable.h</a>"</span> <span class="comment">// Selector</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keyword">class </span>Constant;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keyword">class </span>Function;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">class </span>Module;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">class </span>StructLayout;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">class </span>StructType;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">class </span>Type;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <span class="keyword">class </span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> }</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">class </span>CodeGenFunction;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keyword">class </span>FieldDecl;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">class </span>ObjCAtTryStmt;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">class </span>ObjCAtThrowStmt;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keyword">class </span>ObjCAtSynchronizedStmt;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">class </span>ObjCContainerDecl;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keyword">class </span>ObjCCategoryImplDecl;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">class </span>ObjCImplementationDecl;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">class </span>ObjCInterfaceDecl;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">class </span>ObjCMessageExpr;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">class </span>ObjCMethodDecl;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keyword">class </span>ObjCProtocolDecl;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keyword">class </span>Selector;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">class </span>ObjCIvarDecl;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keyword">class </span>ObjCStringLiteral;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keyword">class </span>BlockDeclRefExpr;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="keyword">namespace </span>CodeGen {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keyword">class </span>CodeGenModule;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">class </span>CGBlockInfo;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">// FIXME: Several methods should be pure virtual but aren't to avoid the</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">// partially-implemented subclass breaking.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/// Implements runtime-specific code generation functions.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html">   63</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">   65</a></span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac9bd9aae81ba7075d5317d01699403e9">   66</a></span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac9bd9aae81ba7075d5317d01699403e9">CGObjCRuntime</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>) : CGM(CGM) {}</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">// Utility functions for unified ivar access. These need to</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="comment">// eventually be folded into other places (the structure layout</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">// code).</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  /// Compute an offset to the given ivar, suitable for passing to</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// EmitValueForIvarAtOffset.  Note that the correct handling of</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// bit-fields is carefully coordinated by these two, use caution!</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// The latter overload is suitable for computing the offset of a</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// sythesized ivar.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"></span>  uint64_t <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7f5bb1f3fb5c80e526174171e94e125c">ComputeIvarBaseOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID,</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   uint64_t <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7f5bb1f3fb5c80e526174171e94e125c">ComputeIvarBaseOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *OID,</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar);</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>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7b361207e788e02a9da6a1bc76e0b8c9">EmitValueForIvarAtOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *BaseValue,</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar,</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>                                   <span class="keywordtype">unsigned</span> CVRQualifiers,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);<span class="comment"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// Emits a try / catch statement.  This function is intended to be called by</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  /// subclasses, and provides a generic mechanism for generating these, which</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  /// should be usable by all runtimes.  The caller must provide the functions</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// to call when entering and exiting a \@catch() block, and the function</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  /// used to rethrow exceptions.  If the begin and end catch functions are</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  /// NULL, then the function assumes that the EH personality function provides</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  /// the thrown object directly.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a08724ef1c0f41136dad40f9cefb9b13d">EmitTryCatchStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtTryStmt.html" title="Represents Objective-C's @try ... @catch ... @finally statement.">ObjCAtTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>                         llvm::Constant *beginCatchFn,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                         llvm::Constant *endCatchFn,</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                         llvm::Constant *exceptionRethrowFn);<span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  /// Emits an \@synchronize() statement, using the \p syncEnterFn and</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// \p syncExitFn arguments as the functions called to lock and unlock</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// the object.  This function can be called by subclasses that use</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// zero-cost exception handling.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1781c58baeb2aa3e0230df03f037a4a7">EmitAtSynchronizedStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html" title="Represents Objective-C's @synchronized statement.">ObjCAtSynchronizedStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                             llvm::Function *syncEnterFn,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                             llvm::Function *syncExitFn);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a10c1ef47e73cf8d96c8941f8716429b3">~CGObjCRuntime</a>();</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">  /// Generate the function required to register all Objective-C components in</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// this compilation unit with the runtime library.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Function *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a3446d3331a55ab8ce8ea8f052405393e">ModuleInitFunction</a>() = 0;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment"></span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">  /// Get a selector for the specified name and type values. The</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// return value should have the LLVM type for pointer-to</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// ASTContext::getObjCSelType().</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a221633f2ae695a5fe9ab259baad8630d">GetSelector</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>                                    <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel, <span class="keywordtype">bool</span> lval=<span class="keyword">false</span>) = 0;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// Get a typed selector.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a221633f2ae695a5fe9ab259baad8630d">GetSelector</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method) = 0;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">  /// Get the type constant to catch for the given ObjC pointer type.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// This is used externally to implement catching ObjC types in C++.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">  /// Runtimes which don't support this should add the appropriate</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">  /// error to Sema.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1f6fc246a15b6a108b04e2d4606194b9">GetEHType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) = 0;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment"></span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">  /// Generate a constant string object.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a42b91cd63f020ffaf9d2cc44a974e22b" title="Generate a constant string object.">GenerateConstantString</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *) = 0;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">  /// Generate a category.  A category contains a list of methods (and</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">  /// accompanying metadata) and a list of protocols.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a5be32ac7921dbe0406999d728907ff8c">GenerateCategory</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *OCD) = 0;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// Generate a class structure for this class.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a97ec1981fd2ed902780e62500385a88b" title="Generate a class structure for this class.">GenerateClass</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *OID) = 0;</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  /// Register an class alias.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a59ddf17db53c60df9e4618c145f0753f" title="Register an class alias.">RegisterAlias</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCompatibleAliasDecl.html">ObjCCompatibleAliasDecl</a> *OAD) = 0;</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment"></span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// Generate an Objective-C message send operation.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">  /// \param Method - The method being called, this may be null if synthesizing</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">  /// a property setter or getter.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">CodeGen::RValue</a></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>                       <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnSlot,</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>                       <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType,</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>                       <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel,</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>                       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Receiver,</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>                       <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &CallArgs,</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Class = 0,</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method = 0) = 0;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment"></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">  /// Generate an Objective-C message send operation to the super</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">  /// class initiated in a method for Class and with the given Self</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">  /// object.</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">  /// \param Method - The method being called, this may be null if synthesizing</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">  /// a property setter or getter.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">CodeGen::RValue</a></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a4d4cda33eaeec331dc9af9b09fa6a7a7">GenerateMessageSendSuper</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>                            <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> ReturnSlot,</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                            <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType,</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>                            <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel,</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Class,</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>                            <span class="keywordtype">bool</span> isCategoryImpl,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                            <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Self,</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                            <span class="keywordtype">bool</span> IsClassMessage,</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &CallArgs,</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method = 0) = 0;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment"></span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">  /// Emit the code to return the named protocol as an object, as in a</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// \@protocol expression.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a0b39a85a2b54714ff724171c1321fe41">GenerateProtocolRef</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *OPD) = 0;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment"></span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// Generate the named protocol.  Protocols contain method metadata but no</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// implementations.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#abbbf06795c76a37acace217a12eb15a2">GenerateProtocol</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *OPD) = 0;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment"></span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  /// Generate a function preamble for a method with the specified</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">  /// types.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment"></span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="comment">// FIXME: Current this just generates the Function definition, but really this</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">// should also be generating the loads of the parameters, as the runtime</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="comment">// should have full control over how parameters are passed.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="keyword">virtual</span> llvm::Function *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a63ae192ce38a046152ed9ad9e973025b">GenerateMethod</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD,</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CD) = 0;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment"></span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">  /// Return the runtime function for getting properties.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#abe26b398a7e1eebfb516b857e44e6400" title="Return the runtime function for getting properties.">GetPropertyGetFunction</a>() = 0;</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment"></span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">  /// Return the runtime function for setting properties.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a3827b2573fc5daff8a4a1f26140a4fa1" title="Return the runtime function for setting properties.">GetPropertySetFunction</a>() = 0;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment"></span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">  /// Return the runtime function for optimized setting properties.</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af111b611ca9e3b809d937a526683a64e" title="Return the runtime function for optimized setting properties.">GetOptimizedPropertySetFunction</a>(<span class="keywordtype">bool</span> atomic, </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>                                                           <span class="keywordtype">bool</span> copy) = 0;</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="comment">// API for atomic copying of qualified aggregates in getter.</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1d7d21b5b6b69d270a26f9c8d35a36a2">GetGetStructFunction</a>() = 0;</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="comment">// API for atomic copying of qualified aggregates in setter.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ab1ac01171227a508fb049fb87acc639e">GetSetStructFunction</a>() = 0;<span class="comment"></span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// API for atomic copying of qualified aggregates with non-trivial copy</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// assignment (c++) in setter.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a236752ccbcfa81ee63fff1f675da43fe">GetCppAtomicObjectSetFunction</a>() = 0;<span class="comment"></span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  /// API for atomic copying of qualified aggregates with non-trivial copy</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  /// assignment (c++) in getter.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#aa2dc3538b71ffa6da7ba80f213f73127">GetCppAtomicObjectGetFunction</a>() = 0;</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">  /// GetClass - Return a reference to the class for the given</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  /// interface decl.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a39cd307cfd5856cd35c684ff4f388a6e">GetClass</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID) = 0;</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>   </div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af458b9f40602c3cbcb12ddc7c99fb630">  225</a></span>   <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af458b9f40602c3cbcb12ddc7c99fb630">EmitNSAutoreleasePoolClassRef</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF) {</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     llvm_unreachable(<span class="stringliteral">"autoreleasepool unsupported in this ABI"</span>);</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// EnumerationMutationFunction - Return the function that's called by the</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// compiler when a mutation is detected during foreach iteration.</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment"></span>  <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a6c4b46775e5def1156e767bf433e7848">EnumerationMutationFunction</a>() = 0;</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#afeb2aa743f9b018413af31c9a976de43">EmitSynchronizedStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html" title="Represents Objective-C's @synchronized statement.">ObjCAtSynchronizedStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) = 0;</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a46a725e1a00725e08f57b7d0df08a679">EmitTryStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtTryStmt.html" title="Represents Objective-C's @try ... @catch ... @finally statement.">ObjCAtTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) = 0;</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a71b44b66c20fe78240df7c1547ea7262">EmitThrowStmt</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</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>,</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>                              <span class="keywordtype">bool</span> ClearInsertionPoint=<span class="keyword">true</span>) = 0;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#abd56f60462d301077e883e68ed3a0a20">EmitObjCWeakRead</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *AddrWeakObj) = 0;</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a76199d79668ea4b7ecbeb67781f6ffad">EmitObjCWeakAssign</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dest) = 0;</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af77c93b4c371d40eeadddf4a116c61f4">EmitObjCGlobalAssign</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>                                     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dest,</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>                                     <span class="keywordtype">bool</span> threadlocal=<span class="keyword">false</span>) = 0;</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a1a19b1a6b1aace6b60a579e1bd9725cc">EmitObjCIvarAssign</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dest,</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>                                   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *ivarOffset) = 0;</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a28256878d6a4e2bec747f4d942c6ca3c">EmitObjCStrongCastAssign</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *src, <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *dest) = 0;</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a4a9b1ed52de4de25683e18297db5d31d">EmitObjCValueForIvar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> ObjectTy,</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>                                       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *BaseValue,</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar,</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>                                       <span class="keywordtype">unsigned</span> CVRQualifiers) = 0;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keyword">virtual</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ab142e96801e47d133c85c6c8d180b036">EmitIvarOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Interface,</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar) = 0;</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a7aeb2a65629c8594093f25ef67bc5f47">EmitGCMemmoveCollectable</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGen::CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *DestPtr,</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *SrcPtr,</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>                                         <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Size) = 0;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a86349fcf106c85ac5dec0526f60f9e6a">BuildGCBlockLayout</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGBlockInfo.html" title="CGBlockInfo - Information to generate a block literal.">CodeGen::CGBlockInfo</a> &blockInfo) = 0;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#acfd4bf069ea637e6f3c9b43854375558">BuildRCBlockLayout</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGBlockInfo.html" title="CGBlockInfo - Information to generate a block literal.">CodeGen::CGBlockInfo</a> &blockInfo) = 0;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keyword">virtual</span> llvm::Constant *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#afaffc92c863315f94d08b7acfcddcc3a">BuildByrefLayout</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>                                            <a class="code" href="classclang_1_1QualType.html">QualType</a> T) = 0;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>   <span class="keyword">virtual</span> llvm::GlobalVariable *<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af393814504ae4e0e4e0e60606a46d352">GetClassGlobal</a>(<span class="keyword">const</span> std::string &Name) = 0;</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">  273</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html">MessageSendInfo</a> {</div>
+<div class="line"><a name="l00274"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#ac543c8bae9e4a430609ee379f192d02e">  274</a></span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &<a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#ac543c8bae9e4a430609ee379f192d02e">CallInfo</a>;</div>
+<div class="line"><a name="l00275"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#a219f3fcdbb561e3e37aef042d6421a1e">  275</a></span>     llvm::PointerType *<a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#a219f3fcdbb561e3e37aef042d6421a1e">MessengerType</a>;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#a6760c15064724929f66dae3949575f82">  277</a></span>     <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#a6760c15064724929f66dae3949575f82">MessageSendInfo</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &callInfo,</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>                     llvm::PointerType *messengerType)</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>       : <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#ac543c8bae9e4a430609ee379f192d02e">CallInfo</a>(callInfo), <a class="code" href="structclang_1_1CodeGen_1_1CGObjCRuntime_1_1MessageSendInfo.html#a219f3fcdbb561e3e37aef042d6421a1e">MessengerType</a>(messengerType) {}</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   };</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>   MessageSendInfo <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ad1d540d665c4bf03c345aae1d9b4f459">getMessageSendInfo</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method,</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> resultType,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>                                      <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> &callArgs);</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>   <span class="comment">// FIXME: This probably shouldn't be here, but the code to compute</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="comment">// it is here.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#aea20ce5966fd6fb7db1d21aebf7d1fa1">ComputeBitfieldBitOffset</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGen::CodeGenModule</a> &<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#ac69f976c060ee419a70b674b54a93680">CGM</a>,</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>,</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *Ivar);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment">/// Creates an instance of an Objective-C runtime class.</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment"></span><span class="comment">//TODO: This should include some way of selecting which runtime to target.</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> CGObjCRuntime *<a class="code" href="namespaceclang_1_1CodeGen.html#aa1cd18b8632357c67eef47b27b3d3ce4" title="Creates an instance of an Objective-C runtime class.">CreateGNUObjCRuntime</a>(CodeGenModule &CGM);</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> CGObjCRuntime *<a class="code" href="namespaceclang_1_1CodeGen.html#aafc84f69c1d1f305773727f49e7abc9c">CreateMacObjCRuntime</a>(CodeGenModule &CGM);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> }</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> }</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:26 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/CGObjC_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjC_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjC_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/CGObjC_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,3142 @@
+<!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: CGObjC.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">CGObjC.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="CGObjC_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">//===---- CGBuiltin.cpp - Emit LLVM Code for builtins ---------------------===//</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 Objective-C code 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="CGDebugInfo_8h.html">CGDebugInfo.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CGObjCRuntime_8h.html">CGObjCRuntime.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="CodeGenFunction_8h.html">CodeGenFunction.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="lib_2CodeGen_2TargetInfo_8h.html">TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</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="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Diagnostic_8h.html" title="Defines the Diagnostic-related interfaces.">clang/Basic/Diagnostic.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="CGFunctionInfo_8h.html">clang/CodeGen/CGFunctionInfo.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/STLExtras.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/Support/CallSite.h"</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/InlineAsm.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">using namespace </span>CodeGen;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">   31</a></span> <span class="keyword">typedef</span> llvm::PointerIntPair<llvm::Value*,1,bool> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">static</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</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="l00034"></a><span class="lineno">   34</span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="CGObjC_8cpp.html#a4b3a34cf547b2ee840e66727824fac0f" title="Adjust the type of the result of an Objective-C message send expression when the method has a related...">AdjustRelatedResultType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> ET,</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method,</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Result);</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">/// Given the address of a variable of pointer type, find the correct</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">/// null to store into it.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a463c0cd8f7b9851d73838e56efed2deb">   41</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Constant *<a class="code" href="CGObjC_8cpp.html#a463c0cd8f7b9851d73838e56efed2deb">getNullForVariable</a>(<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *addr) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   llvm::Type *<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="l00043"></a><span class="lineno">   43</span>     cast<llvm::PointerType>(addr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keywordflow">return</span> llvm::ConstantPointerNull::get(cast<llvm::PointerType>(type));</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> }</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment"></span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">/// Emits an instance of NSConstantString representing the object.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae252100bf4a3dbea8238874f326f5e34">   48</a></span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae252100bf4a3dbea8238874f326f5e34" title="Emits an instance of NSConstantString representing the object.">CodeGenFunction::EmitObjCStringLiteral</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCStringLiteral.html">ObjCStringLiteral</a> *E)</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> {</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   llvm::Constant *C = </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</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#a42b91cd63f020ffaf9d2cc44a974e22b" title="Generate a constant string object.">GenerateConstantString</a>(E-><a class="code" href="classclang_1_1ObjCStringLiteral.html#a6cb1da3cba4a12ffd3c7f33c8bc78114">getString</a>());</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="comment">// FIXME: This bitcast should just be made an invariant on the Runtime.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordflow">return</span> llvm::ConstantExpr::getBitCast(C, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> }</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment"></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// EmitObjCBoxedExpr - This routine generates code to call</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">/// the appropriate expression boxing method. This will either be</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">/// one of +[NSNumber numberWith<Type>:], or +[NSString stringWithUTF8String:].</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a79d6242fb95fce150f494ca9935f6225">   61</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a79d6242fb95fce150f494ca9935f6225">CodeGenFunction::EmitObjCBoxedExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCBoxedExpr.html">ObjCBoxedExpr</a> *E) {</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="comment">// Generate the correct selector for this literal's concrete type.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *SubExpr = E-><a class="code" href="classclang_1_1ObjCBoxedExpr.html#ab00145886485e357d5f37eea7d975615">getSubExpr</a>();</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="comment">// Get the method.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *BoxingMethod = E-><a class="code" href="classclang_1_1ObjCBoxedExpr.html#accef0a484abac0ecfa2b9bd123e57c8b">getBoxingMethod</a>();</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   assert(BoxingMethod && <span class="stringliteral">"BoxingMethod is null"</span>);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   assert(BoxingMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa8cc27a94f7b64eee3cc0661304d4295">isClassMethod</a>() && <span class="stringliteral">"BoxingMethod must be a class method"</span>);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel = BoxingMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   </div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">// Generate a reference to the class pointer, which will be the receiver.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="comment">// Assumes that the method was introduced in the class that should be</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="comment">// messaged (avoids pulling it out of the result type).</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> &Runtime = <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>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ClassDecl = BoxingMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>();</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Receiver = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a39cd307cfd5856cd35c684ff4f388a6e">GetClass</a>(*<span class="keyword">this</span>, ClassDecl);</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *argDecl = *BoxingMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>();</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgQT = argDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</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="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55962fe5983453b24c64f76125c760c">EmitAnyExpr</a>(SubExpr);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</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="l00081"></a><span class="lineno">   81</span>   Args.<a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html#a1045111747e571d65a465fef8cdf9abd">add</a>(RV, ArgQT);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> result = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>                                               BoxingMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(), Sel, Receiver, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>                                               ClassDecl, BoxingMethod);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(), </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> }</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a871e05ff911376c4b10b082c5b88a36c">   90</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a871e05ff911376c4b10b082c5b88a36c">CodeGenFunction::EmitObjCCollectionLiteral</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *E,</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodWithObjects) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = <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>();</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCDictionaryLiteral.html">ObjCDictionaryLiteral</a> *DLE = 0;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCArrayLiteral.html">ObjCArrayLiteral</a> *ALE = dyn_cast<<a class="code" href="classclang_1_1ObjCArrayLiteral.html">ObjCArrayLiteral</a>>(E);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keywordflow">if</span> (!ALE)</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>     DLE = cast<ObjCDictionaryLiteral>(E);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment">// Compute the type of the array we're initializing.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   uint64_t NumElements = </div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     ALE ? ALE-><a class="code" href="classclang_1_1ObjCArrayLiteral.html#a3f7ac85eb0aca575940ae1551c6f2d0f" title="getNumElements - Return number of elements of objective-c array literal.">getNumElements</a>() : DLE-><a class="code" href="classclang_1_1ObjCDictionaryLiteral.html#aef9e73035eb6a8fdf38fd81809eeb514">getNumElements</a>();</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   llvm::APInt APNumElements(Context.<a class="code" href="classclang_1_1ASTContext.html#a3e16bd856974e4ac9710e0c507a60cee" title="Return the size of the specified (complete) type T, in bits.">getTypeSize</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>()),</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                             NumElements);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementType = Context.<a class="code" href="classclang_1_1ASTContext.html#a46cf0bb1b4e31396963afe4f98956273" title="Represents the Objective-CC id type.">getObjCIdType</a>().<a class="code" href="classclang_1_1QualType.html#af67a97892c8d03335815654b4b1b27db">withConst</a>();</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ElementArrayType </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>     = Context.<a class="code" href="classclang_1_1ASTContext.html#a1dfd9aba04afad486b0dbbfc17de130b" title="Return the unique reference to the type for a constant array of the specified element type...">getConstantArrayType</a>(ElementType, APNumElements, </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                                    <a class="code" href="classclang_1_1ArrayType.html#a044cc135a180b91387c89659ab7cabb4a4c2f47d08e59b0457e60184462599c17">ArrayType::Normal</a>, <span class="comment">/*IndexTypeQuals=*/</span>0);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="comment">// Allocate the temporary array(s).</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Objects = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(ElementArrayType, <span class="stringliteral">"objects"</span>);  </div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Keys = 0;</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   <span class="keywordflow">if</span> (DLE)</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     Keys = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(ElementArrayType, <span class="stringliteral">"keys"</span>);</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   </div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="comment">// In ARC, we may need to do extra work to keep all the keys and</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="comment">// values alive until after the call.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value *, 16></a> NeededObjects;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordtype">bool</span> TrackNeededObjects =</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</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="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   <span class="comment">// Perform the actual initialialization of the array(s).</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">for</span> (uint64_t i = 0; i < NumElements; i++) {</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     <span class="keywordflow">if</span> (ALE) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>       <span class="comment">// Emit the element and store it to the appropriate array slot.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Rhs = ALE-><a class="code" href="classclang_1_1ObjCArrayLiteral.html#ad597d76758a8cfea7d67918b3a0d8b16" title="getExpr - Return the Expr at the specified index.">getElement</a>(i);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a722d1083ced328e61d7028086ffe91a3">LValue::MakeAddr</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(Objects, i),</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>                                    ElementType,</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>                                    Context.<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(Rhs-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>                                    Context);</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>       <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>(Rhs);</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</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), LV, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">if</span> (TrackNeededObjects) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>         NeededObjects.push_back(value);</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="keywordflow">else</span> {      </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>       <span class="comment">// Emit the key and store it to the appropriate array slot.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *Key = DLE-><a class="code" href="classclang_1_1ObjCDictionaryLiteral.html#ae2889ca5ab2ab4c6eab1b5892fe790cf">getKeyValueElement</a>(i).<a class="code" href="structclang_1_1ObjCDictionaryElement.html#ae19b4fe17956b4c452068a05c52f99ce" title="The key for the dictionary element.">Key</a>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> KeyLV = <a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a722d1083ced328e61d7028086ffe91a3">LValue::MakeAddr</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(Keys, i),</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                                       ElementType,</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>                                     Context.<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(Key-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>                                       Context);</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *keyValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(Key);</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</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>(keyValue), KeyLV, <span class="comment">/*isInit=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="comment">// Emit the value and store it to the appropriate array slot.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> = DLE-><a class="code" href="classclang_1_1ObjCDictionaryLiteral.html#ae2889ca5ab2ab4c6eab1b5892fe790cf">getKeyValueElement</a>(i).<a class="code" href="structclang_1_1ObjCDictionaryElement.html#a4b07b000d1fb894e24f9f9fa04f1452d" title="The value of the dictionary element.">Value</a>;  </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> ValueLV = <a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a722d1083ced328e61d7028086ffe91a3">LValue::MakeAddr</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(Objects, i), </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>                                         ElementType,</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>                                   Context.<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(Value-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()),</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>                                         Context);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *valueValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(Value);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</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>(valueValue), ValueLV, <span class="comment">/*isInit=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>       <span class="keywordflow">if</span> (TrackNeededObjects) {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         NeededObjects.push_back(keyValue);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         NeededObjects.push_back(valueValue);</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       }</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     }</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   }</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="comment">// Generate the argument list.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</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="l00163"></a><span class="lineno">  163</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html#a841541ca3ef9960a3474a637e3c8829d">ObjCMethodDecl::param_const_iterator</a> PI = MethodWithObjects-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>();</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *argDecl = *PI++;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ArgQT = argDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</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="l00166"></a><span class="lineno">  166</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>(Objects), ArgQT);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">if</span> (DLE) {</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     argDecl = *PI++;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     ArgQT = argDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</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="l00170"></a><span class="lineno">  170</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>(Keys), ArgQT);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   }</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   argDecl = *PI;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   ArgQT = argDecl-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</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="l00174"></a><span class="lineno">  174</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960ad0386506936fec96a18d01e42d4eb514">Count</a> = </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     llvm::ConstantInt::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(ArgQT), NumElements);</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</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>(Count), ArgQT);</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>   <span class="comment">// Generate a reference to the class pointer, which will be the receiver.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel = MethodWithObjects-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType = E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *InterfacePointerType</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>     = ResultType-><a class="code" href="classclang_1_1Type.html#a4e46cfb96824987d41a488a8ef52dfa6">getAsObjCInterfacePointerType</a>();</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Class </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     = InterfacePointerType-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#abb391d91721464c0dc1eb15f333637a9">getObjectType</a>()-><a class="code" href="classclang_1_1ObjCObjectType.html#a768f52da9b3b79e70b48391b38388e40">getInterface</a>();</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> &Runtime = <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>();</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Receiver = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a39cd307cfd5856cd35c684ff4f388a6e">GetClass</a>(*<span class="keyword">this</span>, Class);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>   <span class="comment">// Generate the message send.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> result</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>                                   MethodWithObjects-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(),</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>                                   Sel,</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>                                   Receiver, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, Class,</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>                                   MethodWithObjects);</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="comment">// The above message send needs these objects, but in ARC they are</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">// passed in a buffer that is essentially __unsafe_unretained.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="comment">// Therefore we must prevent the optimizer from releasing them until</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="comment">// after the call.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">if</span> (TrackNeededObjects) {</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa59fc1074cb261290bcca01d6aa425c9">EmitARCIntrinsicUse</a>(NeededObjects);</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">  204</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(), </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>                                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()));</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> }</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ef822f10ec39b7bf5f20f07995d400f">  208</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ef822f10ec39b7bf5f20f07995d400f">CodeGenFunction::EmitObjCArrayLiteral</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCArrayLiteral.html">ObjCArrayLiteral</a> *E) {</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a871e05ff911376c4b10b082c5b88a36c">EmitObjCCollectionLiteral</a>(E, E-><a class="code" href="classclang_1_1ObjCArrayLiteral.html#a5a55c28af826dc9c4f32adb34a4b7704">getArrayWithObjectsMethod</a>());</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> }</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a17fc9ab628066b94018efc79b87c0b6b">  212</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a17fc9ab628066b94018efc79b87c0b6b">CodeGenFunction::EmitObjCDictionaryLiteral</a>(</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCDictionaryLiteral.html">ObjCDictionaryLiteral</a> *E) {</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a871e05ff911376c4b10b082c5b88a36c">EmitObjCCollectionLiteral</a>(E, E-><a class="code" href="classclang_1_1ObjCDictionaryLiteral.html#ad5d4342653f1e833f9a95cf8e0a543f7">getDictWithObjectsMethod</a>());</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> }</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment"></span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">/// Emit a selector.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0fcf98c5422fa75f699b6fd6fed64155">  218</a></span> <span class="comment"></span><a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0fcf98c5422fa75f699b6fd6fed64155" title="Emit a selector.">CodeGenFunction::EmitObjCSelectorExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCSelectorExpr.html" title="ObjCSelectorExpr used for @selector in Objective-C.">ObjCSelectorExpr</a> *E) {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="comment">// Untyped selector.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="comment">// Note that this implementation allows for non-constant strings to be passed</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="comment">// as arguments to @selector().  Currently, the only thing preventing this</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="comment">// behaviour is the type checking in the front end.</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</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#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a221633f2ae695a5fe9ab259baad8630d">GetSelector</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1ObjCSelectorExpr.html#ad46ef0145cfc29ba528203e2da6cdccc">getSelector</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> </div>
+<div class="line"><a name="l00226"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a22a433ca58db496f71158f5453b6154d">  226</a></span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a22a433ca58db496f71158f5453b6154d">CodeGenFunction::EmitObjCProtocolExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolExpr.html">ObjCProtocolExpr</a> *E) {</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="comment">// FIXME: This should pass the Decl not the name.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</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#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a0b39a85a2b54714ff724171c1321fe41">GenerateProtocolRef</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1ObjCProtocolExpr.html#ab3f03e1df66e7c88a741e069d5f89fd9">getProtocol</a>());</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> }</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment"></span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">/// \brief Adjust the type of the result of an Objective-C message send </span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">/// expression when the method has a related result type.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a4b3a34cf547b2ee840e66727824fac0f">  233</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="CGObjC_8cpp.html#a4b3a34cf547b2ee840e66727824fac0f" title="Adjust the type of the result of an Objective-C message send expression when the method has a related...">AdjustRelatedResultType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                       <a class="code" href="classclang_1_1QualType.html">QualType</a> ExpT,</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method,</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>                                       <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Result) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   <span class="keywordflow">if</span> (!Method)</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>     <span class="keywordflow">return</span> Result;</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>   <span class="keywordflow">if</span> (!Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af39c2be03915c55301f0d4961e496c2a" title="Determine whether this method has a result type that is related to the message receiver's type...">hasRelatedResultType</a>() ||</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(ExpT, Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()) ||</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>       !Result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#aeb42ff4f93c5721cf244b300ba864e3f">isScalar</a>())</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   <span class="comment">// We have applied a related result type. Cast the rvalue appropriately.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(),</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>                                                CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(ExpT)));</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> }</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment"></span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">/// Decide whether to extend the lifetime of the receiver of a</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">/// returns-inner-pointer message.</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a77d1234b10fe048805d89e0b1e77d299">  253</a></span> <a class="code" href="CGObjC_8cpp.html#a77d1234b10fe048805d89e0b1e77d299">shouldExtendReceiverForInnerPointerMessage</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *message) {</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">switch</span> (message-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a7020f79f1cd86ca26de4595bc3cac99c" title="Determine the kind of receiver that this message is being sent to.">getReceiverKind</a>()) {</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>   <span class="comment">// For a normal instance message, we should extend unless the</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// receiver is loaded from a variable with precise lifetime.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3a4756d0e9fdac36e78b8e9204de1024ed" title="The receiver is an object instance.">ObjCMessageExpr::Instance</a>: {</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *receiver = message-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a52ac8728aad0bc716d5c87887f332cf9" title="Returns the object expression (receiver) for an instance message, or null for a message that is not a...">getInstanceReceiver</a>();</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ice = dyn_cast<<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>>(receiver);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>     <span class="keywordflow">if</span> (!ice || ice-><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>() != <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     receiver = ice-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="comment">// Only __strong variables.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="keywordflow">if</span> (receiver-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>().<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() != <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>)</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">// All ivars and fields have precise lifetime.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>     <span class="keywordflow">if</span> (isa<MemberExpr>(receiver) || isa<ObjCIvarRefExpr>(receiver))</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <span class="comment">// Otherwise, check for variables.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</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> *declRef = dyn_cast<<a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>>(ice-><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>());</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>     <span class="keywordflow">if</span> (!declRef) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *var = dyn_cast<<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>>(declRef-><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>());</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>     <span class="keywordflow">if</span> (!var) <span class="keywordflow">return</span> <span class="keyword">true</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">// All variables have precise lifetime except local variables with</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>     <span class="comment">// automatic storage duration that aren't specially marked.</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">return</span> (var-><a class="code" href="classclang_1_1VarDecl.html#a86bb48bd6ced47b79a59af7df7108184">hasLocalStorage</a>() &&</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</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="l00282"></a><span class="lineno">  282</span>   }</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>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3af0ac31ca6897a72531f404e6356c0951" title="The receiver is a class.">ObjCMessageExpr::Class</a>:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3adc904b05090355dbf60d3e1eff934a54" title="The receiver is a superclass.">ObjCMessageExpr::SuperClass</a>:</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>     <span class="comment">// It's never necessary for class objects.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3a04e089df3503a496f2573c1b3f238812" title="The receiver is the instance of the superclass object.">ObjCMessageExpr::SuperInstance</a>:</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>     <span class="comment">// We generally assume that 'self' lives throughout a method call.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   }</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   llvm_unreachable(<span class="stringliteral">"invalid receiver kind"</span>);</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> }</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a name="l00297"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a08d7699a25157488e38e0117a78a6f5b">  297</a></span> <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a08d7699a25157488e38e0117a78a6f5b">CodeGenFunction::EmitObjCMessageExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html" title="An expression that sends a message to the given Objective-C object or class.">ObjCMessageExpr</a> *E,</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>                                             <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a> Return) {</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">// Only the lookup mechanism and first two arguments of the method</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">// implementation vary between runtimes.  We can get the receiver and</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="comment">// arguments in generic code.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   <span class="keywordtype">bool</span> isDelegateInit = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#aecf5ea3916381e0737fc3ebab28cf2b4">isDelegateInitCall</a>();</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>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a18c98ce48ed8a78cb0290d74feab687a">getMethodDecl</a>();</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>   <span class="comment">// We don't retain the receiver in delegate init calls, and this is</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">// safe because the receiver value is always loaded from 'self',</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">// which we zero out.  We don't want to Block_copy block receivers,</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">// though.</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordtype">bool</span> retainSelf =</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     (!isDelegateInit &&</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</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>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>      method &&</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>      method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumesSelfAttr.html">NSConsumesSelfAttr</a>>());</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> &Runtime = <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>();</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="keywordtype">bool</span> isSuperMessage = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="keywordtype">bool</span> isClassMessage = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID = 0;</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="comment">// Find the receiver</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ReceiverType;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *Receiver = 0;</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <span class="keywordflow">switch</span> (E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a7020f79f1cd86ca26de4595bc3cac99c" title="Determine the kind of receiver that this message is being sent to.">getReceiverKind</a>()) {</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3a4756d0e9fdac36e78b8e9204de1024ed" title="The receiver is an object instance.">ObjCMessageExpr::Instance</a>:</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     ReceiverType = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a52ac8728aad0bc716d5c87887f332cf9" title="Returns the object expression (receiver) for an instance message, or null for a message that is not a...">getInstanceReceiver</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>     <span class="keywordflow">if</span> (retainSelf) {</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>       <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> ter = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(*<span class="keyword">this</span>,</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                                                    E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a52ac8728aad0bc716d5c87887f332cf9" title="Returns the object expression (receiver) for an instance message, or null for a message that is not a...">getInstanceReceiver</a>());</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       Receiver = ter.getPointer();</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <span class="keywordflow">if</span> (ter.getInt()) retainSelf = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>     } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       Receiver = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a52ac8728aad0bc716d5c87887f332cf9" title="Returns the object expression (receiver) for an instance message, or null for a message that is not a...">getInstanceReceiver</a>());</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3af0ac31ca6897a72531f404e6356c0951" title="The receiver is a class.">ObjCMessageExpr::Class</a>: {</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>     ReceiverType = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#aada0b0ab2bf852f5e78be1decd748ae6" title="Returns the type of a class message send, or NULL if the message is not a class message.">getClassReceiver</a>();</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a> *ObjTy = ReceiverType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a>>();</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     assert(ObjTy && <span class="stringliteral">"Invalid Objective-C class message send"</span>);</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     OID = ObjTy-><a class="code" href="classclang_1_1ObjCObjectType.html#a768f52da9b3b79e70b48391b38388e40">getInterface</a>();</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     assert(OID && <span class="stringliteral">"Invalid Objective-C class message send"</span>);</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>     Receiver = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a39cd307cfd5856cd35c684ff4f388a6e">GetClass</a>(*<span class="keyword">this</span>, OID);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>     isClassMessage = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>     <span class="keywordflow">break</span>;</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> </div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3a04e089df3503a496f2573c1b3f238812" title="The receiver is the instance of the superclass object.">ObjCMessageExpr::SuperInstance</a>:</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     ReceiverType = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a9a96db22972ed90304c8599838d5dc6c" title="Retrieve the type referred to by 'super'.">getSuperType</a>();</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     Receiver = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>();</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     isSuperMessage = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1ObjCMessageExpr.html#a55e47323b0150a66564ab406567a40f3adc904b05090355dbf60d3e1eff934a54" title="The receiver is a superclass.">ObjCMessageExpr::SuperClass</a>:</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>     ReceiverType = E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a9a96db22972ed90304c8599838d5dc6c" title="Retrieve the type referred to by 'super'.">getSuperType</a>();</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>     Receiver = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>();</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     isSuperMessage = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     isClassMessage = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="keywordflow">if</span> (retainSelf)</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     Receiver = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(Receiver);</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="comment">// In ARC, we sometimes want to "extend the lifetime"</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="comment">// (i.e. retain+autorelease) of receivers of returns-inner-pointer</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="comment">// messages.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount && method &&</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>       method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCReturnsInnerPointerAttr.html">ObjCReturnsInnerPointerAttr</a>>() &&</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>       <a class="code" href="CGObjC_8cpp.html#a77d1234b10fe048805d89e0b1e77d299">shouldExtendReceiverForInnerPointerMessage</a>(E))</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     Receiver = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0">EmitARCRetainAutorelease</a>(ReceiverType, Receiver);</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>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType =</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     method ? method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>() : E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</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>   <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="l00376"></a><span class="lineno">  376</span>   EmitCallArgs(Args, method, E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#abbdceb77e6a38fa4aea4f80c4a97366b">arg_begin</a>(), E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#af843ba7d22193a8ff61570b13860aa07">arg_end</a>());</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="comment">// For delegate init calls in ARC, do an unsafe store of null into</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="comment">// self.  This represents the call taking direct ownership of that</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   <span class="comment">// value.  We have to do this after emitting the other call</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   <span class="comment">// arguments because they might also reference self, but we don't</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>   <span class="comment">// have to worry about any of them modifying self because that would</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="comment">// be an undefined read and write of an object in unordered</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="comment">// expressions.</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keywordflow">if</span> (isDelegateInit) {</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>     assert(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>            <span class="stringliteral">"delegate init calls should only be marked in ARC"</span>);</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     <span class="comment">// Do an unsafe store of null into self.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *selfAddr =</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>       LocalDeclMap[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>)->getSelfDecl()];</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     assert(selfAddr && <span class="stringliteral">"no self entry for a delegate init call?"</span>);</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(<a class="code" href="CGObjC_8cpp.html#a463c0cd8f7b9851d73838e56efed2deb">getNullForVariable</a>(selfAddr), selfAddr);</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> </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> result;</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="keywordflow">if</span> (isSuperMessage) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     <span class="comment">// super is only valid in an Objective-C method</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD = cast<ObjCMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>);</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="keywordtype">bool</span> isCategoryImpl = isa<ObjCCategoryImplDecl>(OMD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     result = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a4d4cda33eaeec331dc9af9b09fa6a7a7">GenerateMessageSendSuper</a>(*<span class="keyword">this</span>, Return, ResultType,</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>                                               E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a7c194e4fd002abea38c7b099a205db5d">getSelector</a>(),</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>                                               OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>(),</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>                                               isCategoryImpl,</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>                                               Receiver,</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>                                               isClassMessage,</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>                                               <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>                                               method);</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     result = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, Return, ResultType,</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>                                          E-><a class="code" href="classclang_1_1ObjCMessageExpr.html#a7c194e4fd002abea38c7b099a205db5d">getSelector</a>(),</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>                                          Receiver, <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, OID,</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>                                          method);</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   }</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <span class="comment">// For delegate init calls in ARC, implicitly store the result of</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="comment">// the call back into self.  This takes ownership of the value.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <span class="keywordflow">if</span> (isDelegateInit) {</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *selfAddr =</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       LocalDeclMap[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>)->getSelfDecl()];</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *newSelf = result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     <span class="comment">// The delegate return type isn't necessarily a matching type; in</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>     <span class="comment">// fact, it's quite likely to be 'id'.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     llvm::Type *selfTy =</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       cast<llvm::PointerType>(selfAddr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>();</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>     newSelf = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(newSelf, selfTy);</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>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(newSelf, selfAddr);</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   }</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4b3a34cf547b2ee840e66727824fac0f" title="Adjust the type of the result of an Objective-C message send expression when the method has a related...">AdjustRelatedResultType</a>(*<span class="keyword">this</span>, E-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), method, result);</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> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> <span class="keyword">struct </span>FinishARCDealloc : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</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="l00439"></a><span class="lineno">  439</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = cast<ObjCMethodDecl>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> </div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *impl = cast<ObjCImplDecl>(method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *iface = impl->getClassInterface();</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">if</span> (!iface->getSuperClass()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     <span class="keywordtype">bool</span> isCategory = isa<ObjCCategoryImplDecl>(impl);</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> </div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>     <span class="comment">// Call [super dealloc] if we have a superclass.</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">llvm::Value</a> *<span class="keyword">self</span> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>();</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>     <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</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#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a4d4cda33eaeec331dc9af9b09fa6a7a7">GenerateMessageSendSuper</a>(CGF, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>                                                       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>,</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>                                                       method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(),</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>                                                       iface,</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>                                                       isCategory,</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>                                                       <span class="keyword">self</span>,</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>                                                       <span class="comment">/*is class msg*/</span> <span class="keyword">false</span>,</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>                                                       args,</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>                                                       method);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   }</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> };</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> }</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> <span class="comment"></span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> <span class="comment">/// StartObjCMethod - Begin emission of an ObjCMethod. This generates</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> <span class="comment">/// the LLVM function and sets the other context used by</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> <span class="comment">/// CodeGenFunction.</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">  467</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">CodeGenFunction::StartObjCMethod</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD,</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CD,</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</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> StartLoc) {</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>   <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> args;</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="comment">// Check if we should generate debug info for this method.</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   <span class="keywordflow">if</span> (OMD-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NoDebugAttr.html">NoDebugAttr</a>>())</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     DebugInfo = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>; <span class="comment">// disable debug info indefinitely for this function</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> </div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   llvm::Function *Fn = <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#a63ae192ce38a046152ed9ad9e973025b">GenerateMethod</a>(OMD, CD);</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &FI = <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#aa0a3712dac69644328d7d9ca209c18ac">arrangeObjCMethodDeclaration</a>(OMD);</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a8a3a3e46f0e73246119f50dca6578d0d">SetInternalFunctionAttributes</a>(OMD, Fn, FI);</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>   args.push_back(OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>());</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   args.push_back(OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ab5c716be2156d59824da88f40414988a">getCmdDecl</a>());</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#a841541ca3ef9960a3474a637e3c8829d">ObjCMethodDecl::param_const_iterator</a> PI = OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>          E = OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(); PI != E; ++PI)</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     args.push_back(*PI);</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a07a029445bbdb49eea32bef47594ba93" title="CurGD - The GlobalDecl for the current function being compiled.">CurGD</a> = OMD;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> </div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a923f7d7b4fbe87ade9f82f39ebf804a9">StartFunction</a>(OMD, OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(), Fn, FI, args, StartLoc);</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> </div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   <span class="comment">// In ARC, certain methods get an extra cleanup.</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</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>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>() &&</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>       OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>().<a class="code" href="classclang_1_1Selector.html#a27ff9883d243e82c10340d6146e49a7a">isUnarySelector</a>()) {</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ident = </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>().<a class="code" href="classclang_1_1Selector.html#a79b49f4b847c9fea73947aad1fc1ccf8" title="Retrieve the identifier at a given position in the selector.">getIdentifierInfoForSlot</a>(0);</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>     <span class="keywordflow">if</span> (ident-><a class="code" href="classclang_1_1IdentifierInfo.html#a6cc09d0b74aca49bbdb23bcc4c35cf82" title="Return true if this is the identifier for the specified string.">isStr</a>(<span class="stringliteral">"dealloc"</span>))</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<FinishARCDealloc>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2accba30944ea68f763f67e3d31baa0a">getARCCleanupKind</a>());</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   }</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> }</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> <span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#ab8a93cb33b4617d173e3be007229b11a">emitARCRetainLoadOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue, <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="l00504"></a><span class="lineno">  504</span> <span class="comment"></span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> <span class="comment">/// Generate an Objective-C method.  An Objective-C method is a C function with</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="comment">/// its pointer, name, and types registered in the class struture.</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e3e18864e093d98be0599cea582b049">  507</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e3e18864e093d98be0599cea582b049">CodeGenFunction::GenerateObjCMethod</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">StartObjCMethod</a>(OMD, OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>(), OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae05fc39cf093817b3b2ce044686703fb">getLocStart</a>());</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a22e377ee7c8d39f7087197ac6d69d4ae" title="Retrieve the body of this method, if it has one.">getBody</a>());</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>(OMD-><a class="code" href="classclang_1_1Decl.html#ab82f834598084b84b6fd3396698973b6">getBodyRBrace</a>());</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> }</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> <span class="comment"></span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="comment">/// emitStructGetterCall - Call the runtime function to load a property</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> <span class="comment">/// into the return value slot.</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ac824bab553f4c3723bdd61b9bab2fea3">  515</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#ac824bab553f4c3723bdd61b9bab2fea3">emitStructGetterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar, </div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>                                  <span class="keywordtype">bool</span> isAtomic, <span class="keywordtype">bool</span> hasStrong) {</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>();</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>   llvm::Value *src =</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(),</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>                           ivar, 0).getAddress();</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   <span class="comment">// objc_copyStruct (ReturnValue, &structIvar, </span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>   <span class="comment">//                  sizeof (Type of Ivar), isAtomic, false);</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> </div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   llvm::Value *dest = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</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>(dest), Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</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>   src = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(src, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</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>(src), Context.<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> size = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>());</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</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>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#afc1a42dd19d9f4d3fdb1e9d15cf26810" title="getSize - Emit the given number of characters as a value of type size_t.">getSize</a>(size)), Context.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>());</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</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>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1(isAtomic)), Context.<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</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>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1(hasStrong)), Context.<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   llvm::Value *fn = CGF.<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#a1d7d21b5b6b69d270a26f9c8d35a36a2">GetGetStructFunction</a>();</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, args,</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>                                                       <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>                                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>                fn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> <span class="comment">/// Determine whether the given architecture supports unaligned atomic</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> <span class="comment">/// accesses.  They don't have to be fast, just faster than a function</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> <span class="comment">/// call and a mutex.</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a4ecbadd888f29382d2f0e5ada692604c">  548</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGObjC_8cpp.html#a4ecbadd888f29382d2f0e5ada692604c">hasUnalignedAtomics</a>(llvm::Triple::ArchType arch) {</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   <span class="comment">// FIXME: Allow unaligned atomic load/store on x86.  (It is not</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <span class="comment">// currently supported by the backend.)</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> }</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> <span class="comment"></span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> <span class="comment">/// Return the maximum size that permits atomic accesses for the given</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="comment">/// architecture.</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a93bc30ea9118ba70207243bfefdcfbfb">  556</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> <a class="code" href="CGObjC_8cpp.html#a93bc30ea9118ba70207243bfefdcfbfb">getMaxAtomicAccessSize</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>                                         llvm::Triple::ArchType arch) {</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>   <span class="comment">// ARM has 8-byte atomic accesses, but it's not clear whether we</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   <span class="comment">// want to rely on them here.</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   <span class="comment">// In the default case, just assume that any size up to a pointer is</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="comment">// fine given adequate alignment.</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a6e568b394f88b8075e181e675695343a">PointerSizeInBytes</a>);</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> }</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   <span class="keyword">class </span>PropertyImplStrategy {</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>     <span class="keyword">enum</span> StrategyKind {<span class="comment"></span></div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="comment">      /// The 'native' strategy is to use the architecture's provided</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="comment">      /// reads and writes.</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> <span class="comment"></span>      Native,</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="comment"></span></div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="comment">      /// Use objc_setProperty and objc_getProperty.</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="comment"></span>      GetSetProperty,</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="comment"></span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="comment">      /// Use objc_setProperty for the setter, but use expression</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="comment">      /// evaluation for the getter.</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="comment"></span>      SetPropertyAndExpressionGet,</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="comment"></span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="comment">      /// Use objc_copyStruct.</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="comment"></span>      CopyStruct,</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="comment"></span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> <span class="comment">      /// The 'expression' strategy is to emit normal assignment or</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> <span class="comment">      /// lvalue-to-rvalue expressions.</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> <span class="comment"></span>      Expression</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>     };</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>     StrategyKind <a class="code" href="DeclBase_8cpp.html#a37d13911f1772d0ed90b6b2e89cf3c60">getKind</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> StrategyKind(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>); }</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> </div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>     <span class="keywordtype">bool</span> hasStrongMember()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> HasStrong; }</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>     <span class="keywordtype">bool</span> isAtomic()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsAtomic; }</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordtype">bool</span> isCopy()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsCopy; }</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> </div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> getIvarSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IvarSize; }</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> getIvarAlignment()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IvarAlignment; }</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> </div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>     PropertyImplStrategy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *propImpl);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>     <span class="keywordtype">unsigned</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> : 8;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>     <span class="keywordtype">unsigned</span> IsAtomic : 1;</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <span class="keywordtype">unsigned</span> IsCopy : 1;</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>     <span class="keywordtype">unsigned</span> HasStrong : 1;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> IvarSize;</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> IvarAlignment;</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>   };</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span> }</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="comment"></span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="comment">/// Pick an implementation strategy for the given property synthesis.</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="comment"></span>PropertyImplStrategy::PropertyImplStrategy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *propImpl) {</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *prop = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   <a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa5b515a901763bbf17d4d00dd609e482">ObjCPropertyDecl::SetterKind</a> setterKind = prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ae4c5b3430ef3afe62373b7077cffd0b6">getSetterKind</a>();</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> </div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   IsCopy = (setterKind == <a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa5b515a901763bbf17d4d00dd609e482a5fa703a0655bf90aa022ae3e4ee784ec">ObjCPropertyDecl::Copy</a>);</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   IsAtomic = prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a97ea0ec9af208729d312227dc4b2d759" title="isAtomic - Return true if the property is atomic.">isAtomic</a>();</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   HasStrong = <span class="keyword">false</span>; <span class="comment">// doesn't matter here.</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="comment">// Evaluate the ivar's size and alignment.</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a4997f96072c557376eeb6c52423ff6fc">getPropertyIvarDecl</a>();</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ivarType = ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>   llvm::tie(IvarSize, IvarAlignment)</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#abd8adaff3fe53124096c820470099ed1">getTypeInfoInChars</a>(ivarType);</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span> </div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="comment">// If we have a copy property, we always have to use getProperty/setProperty.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   <span class="comment">// TODO: we could actually use setProperty and an expression for non-atomics.</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   <span class="keywordflow">if</span> (IsCopy) {</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = GetSetProperty;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   }</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span> </div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>   <span class="comment">// Handle retain.</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   <span class="keywordflow">if</span> (setterKind == <a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa5b515a901763bbf17d4d00dd609e482a5b41365713861fb58070fb5ac5d59f7a">ObjCPropertyDecl::Retain</a>) {</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="comment">// In GC-only, there's nothing special that needs to be done.</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84a14f316080dbd204ff0c18a43a3e46869">LangOptions::GCOnly</a>) {</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="comment">// fallthrough</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> </div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="comment">// In ARC, if the property is non-atomic, use expression emission,</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>     <span class="comment">// which translates to objc_storeStrong.  This isn't required, but</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="comment">// it's slightly nicer.</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</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>().ObjCAutoRefCount && !IsAtomic) {</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>       <span class="comment">// Using standard expression emission for the setter is only</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       <span class="comment">// acceptable if the ivar is __strong, which won't be true if</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>       <span class="comment">// the property is annotated with __attribute__((NSObject)).</span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>       <span class="comment">// TODO: falling all the way back to objc_setProperty here is</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <span class="comment">// just laziness, though;  we could still use objc_storeStrong</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>       <span class="comment">// if we hacked it right.</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>       <span class="keywordflow">if</span> (ivarType.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>)</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>         <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = Expression;</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>         <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = SetPropertyAndExpressionGet;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>       <span class="keywordflow">return</span>;</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="comment">// Otherwise, we need to at least use setProperty.  However, if</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <span class="comment">// the property isn't atomic, we can use normal expression</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     <span class="comment">// emission for the getter.</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!IsAtomic) {</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>       <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = SetPropertyAndExpressionGet;</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span> </div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     <span class="comment">// Otherwise, we have to use both setProperty and getProperty.</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>       <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = GetSetProperty;</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     }</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   }</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span> </div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>   <span class="comment">// If we're not atomic, just use expression accesses.</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   <span class="keywordflow">if</span> (!IsAtomic) {</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = Expression;</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>   <span class="comment">// Properties on bitfield ivars need to be emitted using expression</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>   <span class="comment">// accesses even if they're nominally atomic.</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>   <span class="keywordflow">if</span> (ivar-><a class="code" href="classclang_1_1FieldDecl.html#af8c123e193d426f26496c15e2f168a49" title="isBitfield - Determines whether this field is a bitfield.">isBitField</a>()) {</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = Expression;</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> </div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="comment">// GC-qualified or ARC-qualified ivars need to be emitted as</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="comment">// expressions.  This actually works out to being atomic anyway,</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="comment">// except for ARC __strong, but that should trigger the above code.</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordflow">if</span> (ivarType.<a class="code" href="classclang_1_1QualType.html#ab6f9c7634216ec0e51ea9b6bfa545699">hasNonTrivialObjCLifetime</a>() ||</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().getGC() &&</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>        CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a96173c1ad2f23e1d8e10b91336d8b2c6" title="Return one of the GCNone, Weak or Strong Objective-C garbage collection attributes.">getObjCGCAttrKind</a>(ivarType))) {</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = Expression;</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">return</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>   <span class="comment">// Compute whether the ivar has strong members.</span></div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().getGC())</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *recordType = ivarType-><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="l00697"></a><span class="lineno">  697</span>       HasStrong = recordType->getDecl()->hasObjectMember();</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> </div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="comment">// We can never access structs with object members with a native</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="comment">// access, because we need to use write barriers.  This is what</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   <span class="comment">// objc_copyStruct is for.</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="keywordflow">if</span> (HasStrong) {</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = CopyStruct;</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   }</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   <span class="comment">// Otherwise, this is target-dependent and based on the size and</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   <span class="comment">// alignment of the ivar.</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span> </div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   <span class="comment">// If the size of the ivar is not a power of two, give up.  We don't</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <span class="comment">// want to get into the business of doing compare-and-swaps.</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="keywordflow">if</span> (!IvarSize.isPowerOfTwo()) {</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = CopyStruct;</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   }</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> </div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   llvm::Triple::ArchType arch =</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a0256b70c5f3ad3812e767f745196fa3f">getTarget</a>().<a class="code" href="classclang_1_1TargetInfo.html#a20f1dc9686f1a537a03975c7603774e7" title="Returns the target triple of the primary target.">getTriple</a>().getArch();</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>   <span class="comment">// Most architectures require memory to fit within a single cache</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>   <span class="comment">// line, so the alignment has to be at least the size of the access.</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>   <span class="comment">// Otherwise we have to grab a lock.</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>   <span class="keywordflow">if</span> (IvarAlignment < IvarSize && !<a class="code" href="CGObjC_8cpp.html#a4ecbadd888f29382d2f0e5ada692604c">hasUnalignedAtomics</a>(arch)) {</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = CopyStruct;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   }</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   <span class="comment">// If the ivar's size exceeds the architecture's maximum atomic</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   <span class="comment">// access size, we have to use CopyStruct.</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>   <span class="keywordflow">if</span> (IvarSize > <a class="code" href="CGObjC_8cpp.html#a93bc30ea9118ba70207243bfefdcfbfb">getMaxAtomicAccessSize</a>(CGM, arch)) {</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>     <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = CopyStruct;</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>   }</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="comment">// Otherwise, we can use native loads and stores.</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = Native;</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span> }</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span> <span class="comment"></span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span> <span class="comment">/// \brief Generate an Objective-C property getter function.</span></div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span> <span class="comment">/// The given Decl must be an ObjCImplementationDecl. \@synthesize</span></div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span> <span class="comment">/// is illegal within a category.</span></div>
+<div class="line"><a name="l00743"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a61601341e3d45b841fdecbe48517bca8">  743</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a61601341e3d45b841fdecbe48517bca8" title="GenerateObjCGetter - Synthesize an Objective-C property getter function.">CodeGenFunction::GenerateObjCGetter</a>(<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IMP,</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID) {</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   llvm::Constant *AtomicHelperFn = </div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac55c2c0a2d817ee537538746501571af">GenerateObjCAtomicGetterCopyHelperFunction</a>(PID);</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PD = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD = PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7f00c5e70f112c0c7863f93c1872545">getGetterMethodDecl</a>();</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>   assert(OMD && <span class="stringliteral">"Invalid call to generate getter (empty method)"</span>);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">StartObjCMethod</a>(OMD, IMP-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae05fc39cf093817b3b2ce044686703fb">getLocStart</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">  752</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba40389a4444132f15f7c4f17576684b">generateObjCGetterBody</a>(IMP, PID, OMD, AtomicHelperFn);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span> </div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>();</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> }</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> </div>
+<div class="line"><a name="l00757"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a0ec7315b1e8365459dc9dd1b41e294d0">  757</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGObjC_8cpp.html#a0ec7315b1e8365459dc9dd1b41e294d0">hasTrivialGetExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *propImpl) {</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *getter = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#aa913ea1dcfdd9c8d23ee69f7cb6dc8ee">getGetterCXXConstructor</a>();</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   <span class="keywordflow">if</span> (!getter) <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="comment">// Sema only makes only of these when the ivar has a C++ class type,</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="comment">// so the form is pretty constrained.</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>   <span class="comment">// If the property has a reference type, we might just be binding a</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>   <span class="comment">// reference, in which case the result will be a gl-value.  We should</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="comment">// treat this as a non-trivial operation.</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>   <span class="keywordflow">if</span> (getter-><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>())</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span> </div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="comment">// If we selected a trivial copy-constructor, we're okay.</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *construct = dyn_cast<CXXConstructExpr>(getter))</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>     <span class="keywordflow">return</span> (construct->getConstructor()->isTrivial());</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span> </div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>   <span class="comment">// The constructor might require cleanups (in which case it's never</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="comment">// trivial).</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>   assert(isa<ExprWithCleanups>(getter));</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span> }</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="comment"></span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> <span class="comment">/// emitCPPObjectAtomicGetterCall - Call the runtime function to </span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span> <span class="comment">/// copy the ivar into the resturn slot.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a9b64daea50c2c6ba13b00136f82bb662">  782</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#a9b64daea50c2c6ba13b00136f82bb662">emitCPPObjectAtomicGetterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, </div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>                                           llvm::Value *returnAddr,</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>                                           <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar,</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>                                           llvm::Constant *AtomicHelperFn) {</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>   <span class="comment">// objc_copyCppObjectAtomic (&returnSlot, &CppObjectIvar,</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   <span class="comment">//                           AtomicHelperFn);</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</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">// The 1st argument is the return Slot.</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</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>(returnAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   </div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>   <span class="comment">// The 2nd argument is the address of the ivar.</span></div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   llvm::Value *ivarAddr = </div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), </div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>                         CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, 0).getAddress();</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>   ivarAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ivarAddr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</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>(ivarAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   </div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>   <span class="comment">// Third argument is the helper function.</span></div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</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>(AtomicHelperFn), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   </div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>   llvm::Value *copyCppAtomicObjectFn = </div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</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#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#aa2dc3538b71ffa6da7ba80f213f73127">GetCppAtomicObjectGetFunction</a>();</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>,</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>                                                       args,</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>                                                       <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>                                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>                copyCppAtomicObjectFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span> }</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba40389a4444132f15f7c4f17576684b">  813</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba40389a4444132f15f7c4f17576684b">CodeGenFunction::generateObjCGetterBody</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *classImpl,</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *propImpl,</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *GetterMethodDecl,</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>                                         llvm::Constant *AtomicHelperFn) {</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   <span class="comment">// If there's a non-trivial 'get' expression, we just have to emit that.</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>   <span class="keywordflow">if</span> (!<a class="code" href="CGObjC_8cpp.html#a0ec7315b1e8365459dc9dd1b41e294d0">hasTrivialGetExpr</a>(propImpl)) {</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>     <span class="keywordflow">if</span> (!AtomicHelperFn) {</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>       <a class="code" href="classclang_1_1ReturnStmt.html">ReturnStmt</a> ret(<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>(), propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#aa913ea1dcfdd9c8d23ee69f7cb6dc8ee">getGetterCXXConstructor</a>(),</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>                      <span class="comment">/*nrvo*/</span> 0);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ade76f8f53ab9db73e68a20a4eb66bc04">EmitReturnStmt</a>(ret);</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">else</span> {</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a4997f96072c557376eeb6c52423ff6fc">getPropertyIvarDecl</a>();</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>       <a class="code" href="CGObjC_8cpp.html#a9b64daea50c2c6ba13b00136f82bb662">emitCPPObjectAtomicGetterCall</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, </div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>                                     ivar, AtomicHelperFn);</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     }</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>   }</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> </div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *prop = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> propType = prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *getterMethod = prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#ac7f00c5e70f112c0c7863f93c1872545">getGetterMethodDecl</a>();</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_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a4997f96072c557376eeb6c52423ff6fc">getPropertyIvarDecl</a>();  </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">// Pick an implementation strategy.</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>   PropertyImplStrategy strategy(CGM, propImpl);</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>   <span class="keywordflow">switch</span> (strategy.getKind()) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>   <span class="keywordflow">case</span> PropertyImplStrategy::Native: {</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <span class="comment">// We don't need to do anything for a zero-size struct.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <span class="keywordflow">if</span> (strategy.getIvarSize().isZero())</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> </div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, 0);</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">// Currently, all atomic accesses have to be through integer</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>     <span class="comment">// types, so there's no point in trying to pick a prettier type.</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     llvm::Type *bitcastType =</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>       llvm::Type::getIntNTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>                             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().toBits(strategy.getIvarSize()));</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     bitcastType = bitcastType->getPointerTo(); <span class="comment">// addrspace 0 okay</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span> </div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>     <span class="comment">// Perform an atomic load.  This does not impose ordering constraints.</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     llvm::Value *ivarAddr = LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>     ivarAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ivarAddr, bitcastType);</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>     llvm::LoadInst *load = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(ivarAddr, <span class="stringliteral">"load"</span>);</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>     load->setAlignment(strategy.getIvarAlignment().getQuantity());</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     load->setAtomic(llvm::Unordered);</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">// Store that value into the return address.  Doing this with a</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="comment">// bitcast is likely to produce some pretty ugly IR, but it's not</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     <span class="comment">// the *most* terrible thing in the world.</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(load, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, bitcastType));</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> </div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>     <span class="comment">// Make sure we don't do an autorelease.</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   }</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span> </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>   <span class="keywordflow">case</span> PropertyImplStrategy::GetSetProperty: {</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     llvm::Value *getPropertyFn =</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#abe26b398a7e1eebfb516b857e44e6400" title="Return the runtime function for getting properties.">GetPropertyGetFunction</a>();</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="keywordflow">if</span> (!getPropertyFn) {</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(propImpl, <span class="stringliteral">"Obj-C getter requiring atomic copy"</span>);</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     <span class="comment">// Return (ivar-type) objc_getProperty((id) self, _cmd, offset, true).</span></div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     <span class="comment">// FIXME: Can't this be simpler? This might even be worse than the</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="comment">// corresponding gcc code.</span></div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     llvm::Value *cmd =</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(LocalDeclMap[getterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ab5c716be2156d59824da88f40414988a">getCmdDecl</a>()], <span class="stringliteral">"cmd"</span>);</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     llvm::Value *<span class="keyword">self</span> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     llvm::Value *ivarOffset =</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23a0355d2d20770b02f2d92c5872c81">EmitIvarOffset</a>(classImpl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), ivar);</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span> </div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>     <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</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>(<span class="keyword">self</span>), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType());</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>     args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(cmd), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCSelType());</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(ivarOffset), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerDiffType());</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     args.add(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1(strategy.isAtomic())),</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>              <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span> </div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     <span class="comment">// FIXME: We shouldn't need to get the function info here, the</span></div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>     <span class="comment">// runtime already should have computed it to build the function.</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> RV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().arrangeFreeFunctionCall(propType, args,</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>                                                        <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>                                                             <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>                          getPropertyFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</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="comment">// We need to fix the type here. Ivars with copy & retain are</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     <span class="comment">// always objects so we don't need to worry about complex or</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     <span class="comment">// aggregates.</span></div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     RV = <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(RV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(),</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>            <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(getterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>())));</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span> </div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>     EmitReturnOfRValue(RV, propType);</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> </div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     <span class="comment">// objc_getProperty does an autorelease, so we should suppress ours.</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span> </div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   }</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="keywordflow">case</span> PropertyImplStrategy::CopyStruct:</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>     <a class="code" href="CGObjC_8cpp.html#ac824bab553f4c3723bdd61b9bab2fea3">emitStructGetterCall</a>(*<span class="keyword">this</span>, ivar, strategy.isAtomic(),</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>                          strategy.hasStrongMember());</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span> </div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>   <span class="keywordflow">case</span> PropertyImplStrategy::Expression:</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>   <span class="keywordflow">case</span> PropertyImplStrategy::SetPropertyAndExpressionGet: {</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, 0);</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>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ivarType = ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>     <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac1be3afe566ffd19818efe9f6b07a8ea">getEvaluationKind</a>(ivarType)) {</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9ad0c74fbe072df321c2078f52f052d07c">TEK_Complex</a>: {</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae417ed4971c18c5ce0607e1be62ec117">ComplexPairTy</a> pair = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a26d8547dd8e031970116491629669c39" title="EmitLoadOfComplex - Load a complex number from the specified l-value.">EmitLoadOfComplex</a>(LV, <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="l00930"></a><span class="lineno">  930</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>(pair,</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>                          <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac85064af11c2b350b51e373aa33f3f3e">MakeNaturalAlignAddrLValue</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, ivarType),</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>                          <span class="comment">/*init*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     }</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9a6bdd6972cc7f7a6326c359a2a07df29a">TEK_Aggregate</a>:</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       <span class="comment">// The return value slot is guaranteed to not be aliased, but</span></div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       <span class="comment">// that's not necessarily the same as "on the stack", so</span></div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>       <span class="comment">// we still potentially need objc_memmove_collectable.</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a12ee175c3e6e4041476f5d3af692a70a">EmitAggregateCopy</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1eb2b28a846f4bcb0c7db1f39813d1af">ReturnValue</a>, LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), ivarType);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1CodeGen.html#a8e206ea4edfe305918f0b28322f7aef9aa4a7b0b5cf5c3854e35ca0c172e93269">TEK_Scalar</a>: {</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>       llvm::Value *value;</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>       <span class="keywordflow">if</span> (propType-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>         value = LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>         <span class="comment">// We want to load and autoreleaseReturnValue ARC __weak ivars.</span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>         <span class="keywordflow">if</span> (LV.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a046d8d562af26daba3ed3b781ba5ff54">getQuals</a>().<a class="code" href="classclang_1_1Qualifiers.html#adc87b34275b3ffb4f05274cc1fe0ecf7">getObjCLifetime</a>() == <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="l00948"></a><span class="lineno">  948</span>           value = <a class="code" href="CGObjC_8cpp.html#ab8a93cb33b4617d173e3be007229b11a">emitARCRetainLoadOfScalar</a>(*<span class="keyword">this</span>, LV, ivarType);</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>         <span class="comment">// Otherwise we want to do a simple load, suppressing the</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>         <span class="comment">// final autorelease.</span></div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>           value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6ec6fabfbe7aa87203af03a05ab5d157">EmitLoadOfLValue</a>(LV, <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>()).<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>           <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a> = <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>         value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(propType));</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>         value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>                   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(GetterMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()));</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>       }</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>       </div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       EmitReturnOfRValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(value), propType);</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     }</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     }</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     llvm_unreachable(<span class="stringliteral">"bad evaluation kind"</span>);</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> </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   }</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   llvm_unreachable(<span class="stringliteral">"bad @property implementation strategy!"</span>);</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> }</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span> <span class="comment"></span></div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <span class="comment">/// emitStructSetterCall - Call the runtime function to store the value</span></div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> <span class="comment">/// from the first formal parameter into the given ivar.</span></div>
+<div class="line"><a name="l00975"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#aec004cf7d3d14d6e0df33b4502b529e9">  975</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#aec004cf7d3d14d6e0df33b4502b529e9">emitStructSetterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD,</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>                                  <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar) {</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   <span class="comment">// objc_copyStruct (&structIvar, &Arg, </span></div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>   <span class="comment">//                  sizeof (struct something), true, false);</span></div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</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="comment">// The first argument is the address of the ivar.</span></div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   llvm::Value *ivarAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(),</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>                                                 CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, 0)</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>     .getAddress();</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>   ivarAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ivarAddr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</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>(ivarAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span> </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   <span class="comment">// The second argument is the address of the parameter variable.</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>   <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *argVar = *OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>();</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</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> argRef(argVar, <span class="keyword">false</span>, argVar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>(), </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>                      <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="l00992"></a><span class="lineno">  992</span>   llvm::Value *argAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(&argRef).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   argAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(argAddr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</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>(argAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span> </div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>   <span class="comment">// The third argument is the sizeof the type.</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>   llvm::Value *size =</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</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#afc1a42dd19d9f4d3fdb1e9d15cf26810" title="getSize - Emit the given number of characters as a value of type size_t.">getSize</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae8d8371f22bd850bced9b4b9ca848c4e" title="Return the size of the specified (complete) type T, in characters.">getTypeSizeInChars</a>(ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>()));</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</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>(size), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>());</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="comment">// The fourth argument is the 'isAtomic' flag.</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</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>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getTrue()), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   <span class="comment">// The fifth argument is the 'hasStrong' flag.</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>   <span class="comment">// FIXME: should this really always be false?</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</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>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getFalse()), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>   llvm::Value *copyStructFn = CGF.<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#ab1ac01171227a508fb049fb87acc639e">GetSetStructFunction</a>();</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>,</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>                                                       args,</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>                                                       <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>                                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>                copyStructFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> }</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment"></span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="comment">/// emitCPPObjectAtomicSetterCall - Call the runtime function to store </span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="comment">/// the value from the first formal parameter into the given ivar, using </span></div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment">/// the Cpp API for atomic Cpp objects with non-trivial copy assignment.</span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#aeeb3147cb44ef0d3f8213e219eeb6c3d"> 1019</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#aeeb3147cb44ef0d3f8213e219eeb6c3d">emitCPPObjectAtomicSetterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF, </div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>                                           <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD,</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>                                           <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar,</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>                                           llvm::Constant *AtomicHelperFn) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>   <span class="comment">// objc_copyCppObjectAtomic (&CppObjectIvar, &Arg, </span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>   <span class="comment">//                           AtomicHelperFn);</span></div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>   </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   <span class="comment">// The first argument is the address of the ivar.</span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>   llvm::Value *ivarAddr = </div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), </div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>                           CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, 0).getAddress();</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>   ivarAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ivarAddr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</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>(ivarAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>   </div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>   <span class="comment">// The second argument is the address of the parameter variable.</span></div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>   <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *argVar = *OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>();</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</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> argRef(argVar, <span class="keyword">false</span>, argVar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>(), </div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>                      <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="l01038"></a><span class="lineno"> 1038</span>   llvm::Value *argAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(&argRef).<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   argAddr = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(argAddr, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</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>(argAddr), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</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="comment">// Third argument is the helper function.</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</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>(AtomicHelperFn), CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a485732164c40553bb323c58f5e8bf7a7">VoidPtrTy</a>);</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>   llvm::Value *copyCppAtomicObjectFn = </div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</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#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a236752ccbcfa81ee63fff1f675da43fe">GetCppAtomicObjectSetFunction</a>();</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>,</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>                                                       args,</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>                                                       <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>                                                       <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>                copyCppAtomicObjectFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</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> </div>
+<div class="line"><a name="l01055"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#af4dabe5840dc9ca0d51eb18a4bf3a263"> 1055</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGObjC_8cpp.html#af4dabe5840dc9ca0d51eb18a4bf3a263">hasTrivialSetExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID) {</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *setter = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a6715a4348431248163bc821c56e27a38">getSetterCXXAssignment</a>();</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   <span class="keywordflow">if</span> (!setter) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>   <span class="comment">// Sema only makes only of these when the ivar has a C++ class type,</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <span class="comment">// so the form is pretty constrained.</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> </div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>   <span class="comment">// An operator call is trivial if the function it calls is trivial.</span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>   <span class="comment">// This also implies that there's nothing non-trivial going on with</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>   <span class="comment">// the arguments, because operator= can only be trivial if it's a</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   <span class="comment">// synthesized assignment operator and therefore both parameters are</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   <span class="comment">// references.</span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *call = dyn_cast<CallExpr>(setter)) {</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *callee</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>           = dyn_cast_or_null<FunctionDecl>(call->getCalleeDecl()))</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>       <span class="keywordflow">if</span> (callee->isTrivial())</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     <span class="keywordflow">return</span> <span class="keyword">false</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> </div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>   assert(isa<ExprWithCleanups>(setter));</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> }</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#afa6aa60a62966524824e2dcb533fd729"> 1079</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGObjC_8cpp.html#afa6aa60a62966524824e2dcb533fd729">UseOptimizedSetter</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM) {</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   <span class="keywordflow">return</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#a06937fff556941150e9526e3968fda9b" title="Does this runtime supports optimized setter entrypoints?">hasOptimizedSetter</a>();</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> </div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7db283a16fbbb45515d9cf5b92dd9e9a"> 1086</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7db283a16fbbb45515d9cf5b92dd9e9a">CodeGenFunction::generateObjCSetterBody</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *classImpl,</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *propImpl,</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>                                         llvm::Constant *AtomicHelperFn) {</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *prop = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar = propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a4997f96072c557376eeb6c52423ff6fc">getPropertyIvarDecl</a>();</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *setterMethod = prop-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a0deedcad9deaf37c5964646a16a6ef36">getSetterMethodDecl</a>();</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="comment">// Just use the setter expression if Sema gave us one and it's</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <span class="comment">// non-trivial.</span></div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   <span class="keywordflow">if</span> (!<a class="code" href="CGObjC_8cpp.html#af4dabe5840dc9ca0d51eb18a4bf3a263">hasTrivialSetExpr</a>(propImpl)) {</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>     <span class="keywordflow">if</span> (!AtomicHelperFn)</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>       <span class="comment">// If non-atomic, assignment is called directly.</span></div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(propImpl-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a6715a4348431248163bc821c56e27a38">getSetterCXXAssignment</a>());</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>       <span class="comment">// If atomic, assignment is called via a locking api.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>       <a class="code" href="CGObjC_8cpp.html#aeeb3147cb44ef0d3f8213e219eeb6c3d">emitCPPObjectAtomicSetterCall</a>(*<span class="keyword">this</span>, setterMethod, ivar,</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>                                     AtomicHelperFn);</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>     <span class="keywordflow">return</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>   PropertyImplStrategy strategy(CGM, propImpl);</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>   <span class="keywordflow">switch</span> (strategy.getKind()) {</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>   <span class="keywordflow">case</span> PropertyImplStrategy::Native: {</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     <span class="comment">// We don't need to do anything for a zero-size struct.</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>     <span class="keywordflow">if</span> (strategy.getIvarSize().isZero())</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>     llvm::Value *argAddr = LocalDeclMap[*setterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</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>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> ivarLValue =</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), ivar, <span class="comment">/*quals*/</span> 0);</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>     llvm::Value *ivarAddr = ivarLValue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>();</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> </div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>     <span class="comment">// Currently, all atomic accesses have to be through integer</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     <span class="comment">// types, so there's no point in trying to pick a prettier type.</span></div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     llvm::Type *bitcastType =</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>       llvm::Type::getIntNTy(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(),</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>                             <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().toBits(strategy.getIvarSize()));</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     bitcastType = bitcastType->getPointerTo(); <span class="comment">// addrspace 0 okay</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <span class="comment">// Cast both arguments to the chosen operation type.</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>     argAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(argAddr, bitcastType);</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     ivarAddr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(ivarAddr, bitcastType);</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> </div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     <span class="comment">// This bitcast load is likely to cause some nasty IR.</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     llvm::Value *load = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(argAddr);</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> </div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>     <span class="comment">// Perform an atomic store.  There are no memory ordering requirements.</span></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     llvm::StoreInst *store = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(load, ivarAddr);</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     store->setAlignment(strategy.getIvarAlignment().getQuantity());</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     store->setAtomic(llvm::Unordered);</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   }</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> </div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <span class="keywordflow">case</span> PropertyImplStrategy::GetSetProperty:</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="keywordflow">case</span> PropertyImplStrategy::SetPropertyAndExpressionGet: {</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>   </div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     llvm::Value *setOptimizedPropertyFn = 0;</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>     llvm::Value *setPropertyFn = 0;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     <span class="keywordflow">if</span> (<a class="code" href="CGObjC_8cpp.html#afa6aa60a62966524824e2dcb533fd729">UseOptimizedSetter</a>(CGM)) {</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>       <span class="comment">// 10.8 and iOS 6.0 code and GC is off</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       setOptimizedPropertyFn = </div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>         CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>()</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>            .<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af111b611ca9e3b809d937a526683a64e" title="Return the runtime function for optimized setting properties.">GetOptimizedPropertySetFunction</a>(strategy.isAtomic(),</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>                                             strategy.isCopy());</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>       <span class="keywordflow">if</span> (!setOptimizedPropertyFn) {</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>         CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(propImpl, <span class="stringliteral">"Obj-C optimized setter - NYI"</span>);</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>       }</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     }</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>     <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>       setPropertyFn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a3827b2573fc5daff8a4a1f26140a4fa1" title="Return the runtime function for setting properties.">GetPropertySetFunction</a>();</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>       <span class="keywordflow">if</span> (!setPropertyFn) {</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>         CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(propImpl, <span class="stringliteral">"Obj-C setter requiring atomic copy"</span>);</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>       }</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>     }</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>    </div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="comment">// Emit objc_setProperty((id) self, _cmd, offset, arg,</span></div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     <span class="comment">//                       <is-atomic>, <is-copy>).</span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     llvm::Value *cmd =</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(LocalDeclMap[setterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ab5c716be2156d59824da88f40414988a">getCmdDecl</a>()]);</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     llvm::Value *<span class="keyword">self</span> =</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     llvm::Value *ivarOffset =</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac23a0355d2d20770b02f2d92c5872c81">EmitIvarOffset</a>(classImpl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), ivar);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     llvm::Value *arg = LocalDeclMap[*setterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>()];</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     arg = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(arg, <span class="stringliteral">"arg"</span>), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> args;</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</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>(<span class="keyword">self</span>), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType());</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</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>(cmd), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCSelType());</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>     <span class="keywordflow">if</span> (setOptimizedPropertyFn) {</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</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), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType());</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</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>(ivarOffset), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerDiffType());</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().arrangeFreeFunctionCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, args,</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>                                                   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>                                                   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>                setOptimizedPropertyFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</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>(ivarOffset), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerDiffType());</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</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), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType());</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1(strategy.isAtomic())),</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</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>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getInt1(strategy.isCopy())),</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>                <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a699510ff594ec09506e02c3ec68e4ff5">BoolTy</a>);</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>       <span class="comment">// FIXME: We shouldn't need to get the function info here, the runtime</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>       <span class="comment">// already should have computed it to build the function.</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a5120facc67b842511aeefb15ece6407d">getTypes</a>().arrangeFreeFunctionCall(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, args,</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>                                                   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>                                                   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>                setPropertyFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), args);</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>     </div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <span class="keywordflow">case</span> PropertyImplStrategy::CopyStruct:</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     <a class="code" href="CGObjC_8cpp.html#aec004cf7d3d14d6e0df33b4502b529e9">emitStructSetterCall</a>(*<span class="keyword">this</span>, setterMethod, ivar);</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="keywordflow">case</span> PropertyImplStrategy::Expression:</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     <span class="keywordflow">break</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> </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="comment">// Otherwise, fake up some ASTs and emit a normal assignment.</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *selfDecl = setterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>();</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</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> <span class="keyword">self</span>(selfDecl, <span class="keyword">false</span>, selfDecl-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>                    <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="l01215"></a><span class="lineno"> 1215</span>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> selfLoad(<a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1fa0610e8a9e3d21423e2ee90a7cb120ee2">ImplicitCastExpr::OnStack</a>,</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>                             selfDecl-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>, &<span class="keyword">self</span>,</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>                             <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   <a class="code" href="classclang_1_1ObjCIvarRefExpr.html" title="ObjCIvarRefExpr - A reference to an ObjC instance variable.">ObjCIvarRefExpr</a> ivarRef(ivar, ivar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>().<a class="code" href="classclang_1_1QualType.html#ab6a2e89b5fcb1618aaef3a38563b10e4">getNonReferenceType</a>(),</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</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>(), <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="l01220"></a><span class="lineno"> 1220</span>                           &selfLoad, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> </div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *argDecl = *setterMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>();</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> argType = argDecl->getType().getNonReferenceType();</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</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> arg(argDecl, <span class="keyword">false</span>, argType, <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="l01225"></a><span class="lineno"> 1225</span>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> argLoad(<a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1fa0610e8a9e3d21423e2ee90a7cb120ee2">ImplicitCastExpr::OnStack</a>,</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>                            argType.<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>(), <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>,</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>                            &arg, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     </div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   <span class="comment">// The property type can differ from the ivar type in some situations with</span></div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>   <span class="comment">// Objective-C pointer types, we can always bit cast the RHS in these cases.</span></div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   <span class="comment">// The following absurdity is just to ensure well-formed IR.</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>;</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordflow">if</span> (ivarRef.getType()->isObjCObjectPointerType()) {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="keywordflow">if</span> (argLoad.getType()->isObjCObjectPointerType())</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>       argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>;</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argLoad.getType()->isBlockPointerType())</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>       argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>;</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>       argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>;</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ivarRef.getType()->isBlockPointerType()) {</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>      <span class="keywordflow">if</span> (argLoad.getType()->isBlockPointerType())</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>       argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>;</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>       argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>;</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ivarRef.getType()->isPointerType()) {</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     argCK = <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>;</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>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> argCast(<a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1fa0610e8a9e3d21423e2ee90a7cb120ee2">ImplicitCastExpr::OnStack</a>,</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>                            ivarRef.getType(), argCK, &argLoad,</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>                            <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>);</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *finalArg = &argLoad;</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(ivarRef.getType(),</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>                                            argLoad.getType()))</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>     finalArg = &argCast;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </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>   <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> assign(&ivarRef, finalArg, <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>,</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>                         ivarRef.getType(), <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</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>(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(&assign);</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"></span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> <span class="comment">/// \brief Generate an Objective-C property setter function.</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> <span class="comment">/// The given Decl must be an ObjCImplementationDecl. \@synthesize</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> <span class="comment">/// is illegal within a category.</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abd650cdb47806bf1336d2a170c190b5e"> 1267</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abd650cdb47806bf1336d2a170c190b5e" title="Generate an Objective-C property setter function.">CodeGenFunction::GenerateObjCSetter</a>(<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IMP,</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>                                          <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID) {</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>   llvm::Constant *AtomicHelperFn = </div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aac0a00459dc6f8aba54a631c7aff1d5c">GenerateObjCAtomicSetterCopyHelperFunction</a>(PID);</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PD = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD = PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a0deedcad9deaf37c5964646a16a6ef36">getSetterMethodDecl</a>();</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   assert(OMD && <span class="stringliteral">"Invalid call to generate setter (empty method)"</span>);</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">StartObjCMethod</a>(OMD, IMP-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae05fc39cf093817b3b2ce044686703fb">getLocStart</a>());</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> </div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7db283a16fbbb45515d9cf5b92dd9e9a">generateObjCSetterBody</a>(IMP, PID, AtomicHelperFn);</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>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>();</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> }</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   <span class="keyword">struct </span>DestroyIvar : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>     llvm::Value *addr;</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar;</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer;</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>     <span class="keywordtype">bool</span> useEHCleanupForArray;</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>     DestroyIvar(llvm::Value *addr, <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar,</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer,</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>                 <span class="keywordtype">bool</span> useEHCleanupForArray)</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>       : addr(addr), ivar(ivar), destroyer(destroyer),</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         useEHCleanupForArray(useEHCleanupForArray) {}</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="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="l01296"></a><span class="lineno"> 1296</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>         = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), addr, ivar, <span class="comment">/*CVR*/</span> 0);</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9aaad21865e78a4de5b46182c55f5a35">emitDestroy</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), ivar->getType(), destroyer,</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>                       flags.isForNormalCleanup() && useEHCleanupForArray);</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>     }</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>   };</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> }</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="comment"></span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="comment">/// Like CodeGenFunction::destroyARCStrong, but do it with a call.</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a48c8cf465f083107ddc04b774bf3e35c"> 1305</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#a48c8cf465f083107ddc04b774bf3e35c" title="Like CodeGenFunction::destroyARCStrong, but do it with a call.">destroyARCStrongWithStore</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>                                       llvm::Value *addr,</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</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="l01308"></a><span class="lineno"> 1308</span>   llvm::Value *null = <a class="code" href="CGObjC_8cpp.html#a463c0cd8f7b9851d73838e56efed2deb">getNullForVariable</a>(addr);</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd">EmitARCStoreStrongCall</a>(addr, null, <span class="comment">/*ignored*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> }</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> </div>
+<div class="line"><a name="l01312"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ac25e037670f0a582fa90a9b88b44ed0c"> 1312</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#ac25e037670f0a582fa90a9b88b44ed0c">emitCXXDestructMethod</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>                                   <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *impl) {</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</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> scope(CGF);</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::Value *<span class="keyword">self</span> = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>();</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="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *iface = impl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>();</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ivar = iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a33ad0524e4d449655e216893b85910e2">all_declared_ivar_begin</a>();</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>        ivar; ivar = ivar-><a class="code" href="classclang_1_1ObjCIvarDecl.html#ad4e167798de561f182d039520eb90b29">getNextIvar</a>()) {</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</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> = ivar->getType();</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> </div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="comment">// Check whether the ivar is a destructible type.</span></div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>     <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfc">QualType::DestructionKind</a> dtorKind = type.<a class="code" href="classclang_1_1QualType.html#a4af063b416855444719ed33495b48537">isDestructedType</a>();</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="keywordflow">if</span> (!dtorKind) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> </div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a84d444e891ff658b166431b6ffe97aa1">CodeGenFunction::Destroyer</a> *destroyer = 0;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> </div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>     <span class="comment">// Use a call to objc_storeStrong to destroy strong ivars, for the</span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>     <span class="comment">// general benefit of the tools.</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>     <span class="keywordflow">if</span> (dtorKind == <a class="code" href="classclang_1_1QualType.html#a240cb64a6507feeb4b4e84fa4666edfcad585d701cc19b3a22c6d3609a81379ad">QualType::DK_objc_strong_lifetime</a>) {</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>       destroyer = <a class="code" href="CGObjC_8cpp.html#a48c8cf465f083107ddc04b774bf3e35c" title="Like CodeGenFunction::destroyARCStrong, but do it with a call.">destroyARCStrongWithStore</a>;</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> </div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     <span class="comment">// Otherwise use the default for the destruction kind.</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>       destroyer = CGF.<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>     }</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>     <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6f">CleanupKind</a> cleanupKind = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab7774ca5dab3b221895fcbf1529084f5">getCleanupKind</a>(dtorKind);</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> </div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<DestroyIvar>(cleanupKind, <span class="keyword">self</span>, ivar, destroyer,</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>                                          cleanupKind & <a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa2a393433bdad04753d5b3b39597b2e90">EHCleanup</a>);</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>   }</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   assert(scope.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html#a6f0580f4dfc815d9fcc73841de72b0d3" title="Determine whether this scope requires any cleanups.">requiresCleanups</a>() && <span class="stringliteral">"nothing to do in .cxx_destruct?"</span>);</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> </div>
+<div class="line"><a name="l01348"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44ccfb1a455d7b83bb25dbdfef78d554"> 1348</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a44ccfb1a455d7b83bb25dbdfef78d554">CodeGenFunction::GenerateObjCCtorDtorMethod</a>(<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IMP,</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>                                                  <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD,</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>                                                  <span class="keywordtype">bool</span> ctor) {</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>   MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ad54865d4902bed294f62149712f56631">createImplicitParams</a>(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>(), IMP-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>());</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1e6a8ad280ba3d23353aedd73b657520">StartObjCMethod</a>(MD, IMP-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>(), MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae05fc39cf093817b3b2ce044686703fb">getLocStart</a>());</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> </div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>   <span class="comment">// Emit .cxx_construct.</span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   <span class="keywordflow">if</span> (ctor) {</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>     <span class="comment">// Suppress the final autorelease in ARC.</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab76fb84db4ffd19dc418ce9ee4e253ed" title="In ARC, whether we should autorelease the return value.">AutoreleaseResult</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> </div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CXXCtorInitializer *, 8></a> IvarInitializers;</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCImplementationDecl.html#a71b4589aff18c117a0dd9b7f3e8295b8" title="init_const_iterator - Iterates through the ivar initializer list.">ObjCImplementationDecl::init_const_iterator</a> B = IMP-><a class="code" href="classclang_1_1ObjCImplementationDecl.html#aa4c77ff6ced9a4530797ce4fc0cc7150" title="init_begin() - Retrieve an iterator to the first initializer.">init_begin</a>(),</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>            E = IMP-><a class="code" href="classclang_1_1ObjCImplementationDecl.html#a20c1c20fa2a7a25815bca657ffb53753" title="init_end() - Retrieve an iterator past the last initializer.">init_end</a>(); B != E; ++B) {</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>       <a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *IvarInit = (*B);</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>       <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = IvarInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a7d079569b4b69f0f7f48f5c61828d536">getAnyMember</a>();</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>  *Ivar = cast<ObjCIvarDecl>(Field);</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>       <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> LV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4357c93c47371c808bda8a2d1033424a">EmitLValueForIvar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">TypeOfSelfObject</a>(), </div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), Ivar, 0);</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(IvarInit-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>(),</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>                   <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a4da02d41c1e95dca9477b21b89e1841c">AggValueSlot::forLValue</a>(LV, <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>                                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>                                           <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>));</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     }</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="comment">// constructor returns 'self'.</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html">CodeGenTypes</a> &Types = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>();</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> IdTy(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a46cf0bb1b4e31396963afe4f98956273" title="Represents the Objective-CC id type.">getObjCIdType</a>());</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>     llvm::Value *SelfAsId =</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">LoadObjCSelf</a>(), Types.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a1bd0fa41a59020e22706ac3f36f7c31f" title="ConvertType - Convert type T into a llvm::Type.">ConvertType</a>(IdTy));</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     EmitReturnOfRValue(<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(SelfAsId), IdTy);</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>   <span class="comment">// Emit .cxx_destruct.</span></div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>     <a class="code" href="CGObjC_8cpp.html#ac25e037670f0a582fa90a9b88b44ed0c">emitCXXDestructMethod</a>(*<span class="keyword">this</span>, IMP);</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>   }</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>();</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> </div>
+<div class="line"><a name="l01386"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a50bdfa19d81f398178bdbf0b6fb4b99f"> 1386</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a50bdfa19d81f398178bdbf0b6fb4b99f">CodeGenFunction::IndirectObjCSetterArg</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &FI) {</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#a65e9af9d90f96254d71c45f2669d3115">CGFunctionInfo::const_arg_iterator</a> it = FI.<a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html#ae79a956b6ca82977dc154183144c62fe">arg_begin</a>();</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   it++; it++;</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html">ABIArgInfo</a> &AI = it->info;</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>   <span class="comment">// FIXME. Is this sufficient check?</span></div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>   <span class="keywordflow">return</span> (AI.<a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a5a95c44143588f81827dc8aeda02d3d0">getKind</a>() == <a class="code" href="classclang_1_1CodeGen_1_1ABIArgInfo.html#a52bcdf401687eb35f8569bb9da8d687cadae4ef4ee3f65e068672fa51f8aaca15">ABIArgInfo::Indirect</a>);</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> }</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div>
+<div class="line"><a name="l01394"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab4a57977feb93815f431a555c5f12ca9"> 1394</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab4a57977feb93815f431a555c5f12ca9">CodeGenFunction::IvarTypeWithAggrGCObjects</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *FDTTy = Ty.<a class="code" href="classclang_1_1QualType.html#a669d7ba0645cd05d53508e3c1895075a">getTypePtr</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>())</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>     <span class="keywordflow">return</span> FDTTy->getDecl()->hasObjectMember();</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> }</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> </div>
+<div class="line"><a name="l01402"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5"> 1402</a></span> llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9e29d062b0663a0ffa00ac18ef73c0d5">CodeGenFunction::LoadObjCSelf</a>() {</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>   <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *Self = cast<ObjCMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>)->getSelfDecl();</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</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(Self, <span class="comment">/*is enclosing local*/</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a> != <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a57b46a6624e733181105ee9c0eb39618" title="CurCodeDecl - This is the inner-most code context, which includes blocks.">CurCodeDecl</a>),</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>                   Self-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), <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="l01406"></a><span class="lineno"> 1406</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a811bcfd5769bf9dc2ad7f62e9350dc56">EmitDeclRefLValue</a>(&DRE), <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="l01407"></a><span class="lineno"> 1407</span> }</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e"> 1409</a></span> <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a761e878df508c90d00396c64673aff0e" title="TypeOfSelfObject - Return type of object that this self represents.">CodeGenFunction::TypeOfSelfObject</a>() {</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *OMD = cast<ObjCMethodDecl>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa90f4bdf700179645197d8d2b96e289f">CurFuncDecl</a>);</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> *selfDecl = OMD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>();</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *PTy = cast<ObjCObjectPointerType>(</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(selfDecl->getType()));</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>   <span class="keywordflow">return</span> PTy-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#a610d3fc1a15aafd545c35748819a5227">getPointeeType</a>();</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> }</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> </div>
+<div class="line"><a name="l01417"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aef10f65a10635aeb5b412a467f9e5437"> 1417</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aef10f65a10635aeb5b412a467f9e5437">CodeGenFunction::EmitObjCForCollectionStmt</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCForCollectionStmt.html" title="Represents Objective-C's collection statement.">ObjCForCollectionStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>){</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>   llvm::Constant *EnumerationMutationFn =</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a6c4b46775e5def1156e767bf433e7848">EnumerationMutationFunction</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="keywordflow">if</span> (!EnumerationMutationFn) {</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a376568c3ab5102ebd46232c944128aee">ErrorUnsupported</a>(&S, <span class="stringliteral">"Obj-C fast enumeration for this runtime"</span>);</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>   }</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</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="l01427"></a><span class="lineno"> 1427</span>   <span class="keywordflow">if</span> (DI)</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#ab42b87541eff690214862d1648366d6c">EmitLexicalBlockStart</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, S.<a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>());</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> </div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>   <span class="comment">// The local variable comes into scope immediately.</span></div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html">AutoVarEmission</a> variable = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1AutoVarEmission.html#aee4cf89514f6143af8599eec60dbb90f">AutoVarEmission::invalid</a>();</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclStmt.html">DeclStmt</a> *SD = dyn_cast<DeclStmt>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a13ce6a12def9e05f184b2bf674d77c70">getElement</a>()))</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     variable = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40b64c30a88dc9b44b4941951bf80da7">EmitAutoVarAlloca</a>(*cast<VarDecl>(SD->getSingleDecl()));</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> </div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   <a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html">JumpDest</a> LoopEnd = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0e99acb67867ef0ac1b5e8d3b1e18fee">getJumpDestInCurrentScope</a>(<span class="stringliteral">"forcoll.end"</span>);</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   <span class="comment">// Fast enumeration state.</span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> StateTy = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4369d5282e78727f80f1466a71038733" title="Retrieve the record type that describes the state of an Objective-C fast enumeration loop (for...">getObjCFastEnumerationStateType</a>();</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   llvm::Value *StatePtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(StateTy, <span class="stringliteral">"state.ptr"</span>);</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7344a3814e9742710d31ef902d639de2">EmitNullInitialization</a>(StatePtr, StateTy);</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> </div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   <span class="comment">// Number of elements in the items array.</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> NumItems = 16;</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> </div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>   <span class="comment">// Fetch the countByEnumeratingWithState:objects:count: selector.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II[] = {</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"countByEnumeratingWithState"</span>),</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"objects"</span>),</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>     &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"count"</span>)</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   };</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> FastEnumSel =</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#aae4996e6370b3c39722a757eb37b38b8" title="Can create any sort of selector.">getSelector</a>(llvm::array_lengthof(II), &II[0]);</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> </div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ItemsTy =</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a1dfd9aba04afad486b0dbbfc17de130b" title="Return the unique reference to the type for a constant array of the specified element type...">getConstantArrayType</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType(),</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>                                       llvm::APInt(32, NumItems),</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>                                       <a class="code" href="classclang_1_1ArrayType.html#a044cc135a180b91387c89659ab7cabb4a4c2f47d08e59b0457e60184462599c17">ArrayType::Normal</a>, 0);</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   llvm::Value *ItemsPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a47e5345241bbd0554790bef95ea40f46">CreateMemTemp</a>(ItemsTy, <span class="stringliteral">"items.ptr"</span>);</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   <span class="comment">// Emit the collection pointer.  In ARC, we do a retain.</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>   llvm::Value *Collection;</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>     Collection = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe">EmitARCRetainScalarExpr</a>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a4bc912c3ad7e9cc5b19a22b7dd743139">getCollection</a>());</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>     <span class="comment">// Enter a cleanup to do the release.</span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a05d91b79ac8319906346cdb3b3ad6948">EmitObjCConsumeObject</a>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a4bc912c3ad7e9cc5b19a22b7dd743139">getCollection</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), Collection);</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>     Collection = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a4bc912c3ad7e9cc5b19a22b7dd743139">getCollection</a>());</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   }</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>   <span class="comment">// The 'continue' label needs to appear within the cleanup for the</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>   <span class="comment">// collection object.</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>   <a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html">JumpDest</a> AfterBody = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0e99acb67867ef0ac1b5e8d3b1e18fee">getJumpDestInCurrentScope</a>(<span class="stringliteral">"forcoll.next"</span>);</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> </div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>   <span class="comment">// Send it our message:</span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</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="l01477"></a><span class="lineno"> 1477</span> </div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   <span class="comment">// The first argument is a temporary of the enumeration-state type.</span></div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</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>(StatePtr), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerType(StateTy));</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> </div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   <span class="comment">// The second argument is a temporary array with space for NumItems</span></div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="comment">// pointers.  We'll actually be loading elements from the array</span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   <span class="comment">// pointer written into the control state; this buffer is so that</span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="comment">// collections that *aren't* backed by arrays can still queue up</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="comment">// batches of elements.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</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>(ItemsPtr), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getPointerType(ItemsTy));</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="comment">// The third argument is the capacity of that temporary array.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>   llvm::Type *UnsignedLongLTy = <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>().UnsignedLongTy);</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>   llvm::Constant *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960ad0386506936fec96a18d01e42d4eb514">Count</a> = llvm::ConstantInt::get(UnsignedLongLTy, NumItems);</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</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>(Count), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().UnsignedLongTy);</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>   <span class="comment">// Start the enumeration.</span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> CountRV =</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>                                              <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().UnsignedLongTy,</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>                                              FastEnumSel,</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>                                              Collection, Args);</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> </div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <span class="comment">// The initial number of objects that were returned in the buffer.</span></div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   llvm::Value *initialBufferLimit = CountRV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   llvm::BasicBlock *EmptyBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.empty"</span>);</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   llvm::BasicBlock *LoopInitBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.loopinit"</span>);</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> </div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   llvm::Value *zero = llvm::Constant::getNullValue(UnsignedLongLTy);</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="comment">// If the limit pointer was zero to begin with, the collection is</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>   <span class="comment">// empty; skip all this.</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(initialBufferLimit, zero, <span class="stringliteral">"iszero"</span>),</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>                        EmptyBB, LoopInitBB);</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">// Otherwise, initialize the loop.</span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(LoopInitBB);</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> </div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>   <span class="comment">// Save the initial mutations value.  This is the value at an</span></div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>   <span class="comment">// address that was written into the state object by</span></div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   <span class="comment">// countByEnumeratingWithState:objects:count:.</span></div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>   llvm::Value *StateMutationsPtrPtr =</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(StatePtr, 2, <span class="stringliteral">"mutationsptr.ptr"</span>);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   llvm::Value *StateMutationsPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(StateMutationsPtrPtr,</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>                                                       <span class="stringliteral">"mutationsptr"</span>);</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> </div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>   llvm::Value *initialMutations =</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(StateMutationsPtr, <span class="stringliteral">"forcoll.initial-mutations"</span>);</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>   <span class="comment">// Start looping.  This is the point we return to whenever we have a</span></div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>   <span class="comment">// fresh, non-empty batch of objects.</span></div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>   llvm::BasicBlock *LoopBodyBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.loopbody"</span>);</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(LoopBodyBB);</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> </div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>   <span class="comment">// The current index into the buffer.</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>   llvm::PHINode *index = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(UnsignedLongLTy, 3, <span class="stringliteral">"forcoll.index"</span>);</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>   index->addIncoming(zero, LoopInitBB);</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>   <span class="comment">// The current buffer size.</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>   llvm::PHINode *count = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreatePHI(UnsignedLongLTy, 3, <span class="stringliteral">"forcoll.count"</span>);</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>   count->addIncoming(initialBufferLimit, LoopInitBB);</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> </div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>   <span class="comment">// Check whether the mutations value has changed from where it was</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>   <span class="comment">// at start.  StateMutationsPtr should actually be invariant between</span></div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   <span class="comment">// refreshes.</span></div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>   StateMutationsPtr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(StateMutationsPtrPtr, <span class="stringliteral">"mutationsptr"</span>);</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>   llvm::Value *currentMutations</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>     = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(StateMutationsPtr, <span class="stringliteral">"statemutations"</span>);</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>   llvm::BasicBlock *WasMutatedBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.mutated"</span>);</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   llvm::BasicBlock *WasNotMutatedBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.notmutated"</span>);</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(currentMutations, initialMutations),</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>                        WasNotMutatedBB, WasMutatedBB);</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> </div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>   <span class="comment">// If so, call the enumeration-mutation function.</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(WasMutatedBB);</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>   llvm::Value *V =</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(Collection,</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>                           <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>().getObjCIdType()));</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>   <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a> Args2;</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>   Args2.<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>(V), <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType());</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>   <span class="comment">// FIXME: We shouldn't need to get the function info here, the runtime already</span></div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>   <span class="comment">// should have computed it to build the function.</span></div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41637beb876ec52a99f9f316445ff1bb">EmitCall</a>(CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a9c0dc1747ba8a68d004619269218fc29">arrangeFreeFunctionCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, Args2,</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>                                                   <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>                                                   <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>),</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>            EnumerationMutationFn, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), Args2);</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">// Otherwise, or if the mutation function returns, just continue.</span></div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(WasNotMutatedBB);</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> </div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>   <span class="comment">// Initialize the element variable.</span></div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> elementVariableScope(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>   <span class="keywordtype">bool</span> elementIsVariable;</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> elementLValue;</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> elementType;</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclStmt.html">DeclStmt</a> *SD = dyn_cast<DeclStmt>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a13ce6a12def9e05f184b2bf674d77c70">getElement</a>())) {</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     <span class="comment">// Initialize the variable, in case it's a __block variable or something.</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a373581b9034f81c725f8aaa829ece14b">EmitAutoVarInit</a>(variable);</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> </div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a>* D = cast<VarDecl>(SD->getSingleDecl());</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</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> tempDRE(const_cast<VarDecl*>(D), <span class="keyword">false</span>, D-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>                         <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="l01582"></a><span class="lineno"> 1582</span>     elementLValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(&tempDRE);</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     elementType = D-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>     elementIsVariable = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> </div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</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="l01587"></a><span class="lineno"> 1587</span>       elementLValue.getQuals().setObjCLifetime(<a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>);</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>     elementLValue = <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a>(); <span class="comment">// suppress warning</span></div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     elementType = cast<Expr>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a13ce6a12def9e05f184b2bf674d77c70">getElement</a>())->getType();</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>     elementIsVariable = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>   }</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>   llvm::Type *convertedElementType = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(elementType);</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> </div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   <span class="comment">// Fetch the buffer out of the enumeration state.</span></div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   <span class="comment">// TODO: this pointer should actually be invariant between</span></div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="comment">// refreshes, which would help us do certain loop optimizations.</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   llvm::Value *StateItemsPtr =</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStructGEP(StatePtr, 1, <span class="stringliteral">"stateitems.ptr"</span>);</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   llvm::Value *EnumStateItems =</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(StateItemsPtr, <span class="stringliteral">"stateitems"</span>);</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> </div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   <span class="comment">// Fetch the value at the current index from the buffer.</span></div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>   llvm::Value *CurrentItemPtr =</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateGEP(EnumStateItems, index, <span class="stringliteral">"currentitem.ptr"</span>);</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>   llvm::Value *CurrentItem = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(CurrentItemPtr);</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> </div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>   <span class="comment">// Cast that value to the right type.</span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   CurrentItem = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(CurrentItem, convertedElementType,</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>                                       <span class="stringliteral">"currentitem"</span>);</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> </div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>   <span class="comment">// Make sure we have an l-value.  Yes, this gets evaluated every</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>   <span class="comment">// time through the loop.</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>   <span class="keywordflow">if</span> (!elementIsVariable) {</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>     elementLValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(cast<Expr>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a13ce6a12def9e05f184b2bf674d77c70">getElement</a>()));</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</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>(CurrentItem), elementLValue);</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a4957380d06be8ac67e51f46d96830788">EmitScalarInit</a>(CurrentItem, elementLValue);</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>   }</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> </div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>   <span class="comment">// If we do have an element variable, this assignment is the end of</span></div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>   <span class="comment">// its initialization.</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>   <span class="keywordflow">if</span> (elementIsVariable)</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa92cef8f0df2b1f7f8aaadac281a3f23">EmitAutoVarCleanups</a>(variable);</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> </div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>   <span class="comment">// Perform the loop body, setting up break and continue labels.</span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>   BreakContinueStack.push_back(BreakContinue(LoopEnd, AfterBody));</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>   {</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a9da84c935e436a79217195925a30626a">getBody</a>());</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   }</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   BreakContinueStack.pop_back();</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> </div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>   <span class="comment">// Destroy the element variable now.</span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>   elementVariableScope.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html#a03074aa0531976ff3827c74d69789744" title="Force the emission of cleanups now, instead of waiting until this object is destroyed.">ForceCleanup</a>();</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>   <span class="comment">// Check whether there are more elements.</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(AfterBody.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#a144ebf8cb8b5850c9fbf2d0b42fc0283">getBlock</a>());</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>   llvm::BasicBlock *FetchMoreBB = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d442ba1c516ff4a2fbf1e118359cb52" title="createBasicBlock - Create an LLVM basic block.">createBasicBlock</a>(<span class="stringliteral">"forcoll.refetch"</span>);</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>   <span class="comment">// First we check in the local buffer.</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   llvm::Value *indexPlusOne</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>     = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateAdd(index, llvm::ConstantInt::get(UnsignedLongLTy, 1));</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   <span class="comment">// If we haven't overrun the buffer yet, we can continue.</span></div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpULT(indexPlusOne, count),</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>                        LoopBodyBB, FetchMoreBB);</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> </div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>   index->addIncoming(indexPlusOne, AfterBody.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#a144ebf8cb8b5850c9fbf2d0b42fc0283">getBlock</a>());</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>   count->addIncoming(count, AfterBody.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#a144ebf8cb8b5850c9fbf2d0b42fc0283">getBlock</a>());</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> </div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>   <span class="comment">// Otherwise, we have to fetch more elements.</span></div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(FetchMoreBB);</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>   CountRV =</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>     CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>                                              <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().UnsignedLongTy,</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>                                              FastEnumSel,</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>                                              Collection, Args);</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>   <span class="comment">// If we got a zero count, we're done.</span></div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>   llvm::Value *refetchCount = CountRV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> </div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>   <span class="comment">// (note that the message send might split FetchMoreBB)</span></div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>   index->addIncoming(zero, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock());</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>   count->addIncoming(refetchCount, <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.GetInsertBlock());</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> </div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCondBr(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateICmpEQ(refetchCount, zero),</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>                        EmptyBB, LoopBodyBB);</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> </div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>   <span class="comment">// No more elements.</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(EmptyBB);</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="keywordflow">if</span> (!elementIsVariable) {</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     <span class="comment">// If the element was not a declaration, set it to be null.</span></div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> </div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>     llvm::Value *null = llvm::Constant::getNullValue(convertedElementType);</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>     elementLValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(cast<Expr>(S.<a class="code" href="classclang_1_1ObjCForCollectionStmt.html#a13ce6a12def9e05f184b2bf674d77c70">getElement</a>()));</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</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>(null), elementLValue);</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>   }</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>   <span class="keywordflow">if</span> (DI)</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#a6cb8ef31ea4dbd044bd4f0a2ba48cde7">EmitLexicalBlockEnd</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, S.<a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</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>   <span class="comment">// Leave the cleanup we entered in ARC.</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</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="l01689"></a><span class="lineno"> 1689</span> </div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#afdec5412ab40bb1923c689fe093f8871">EmitBlock</a>(LoopEnd.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenFunction_1_1JumpDest.html#a144ebf8cb8b5850c9fbf2d0b42fc0283">getBlock</a>());</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> }</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> </div>
+<div class="line"><a name="l01693"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a90b659829772b465f99dd2567021af79"> 1693</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a90b659829772b465f99dd2567021af79">CodeGenFunction::EmitObjCAtTryStmt</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtTryStmt.html" title="Represents Objective-C's @try ... @catch ... @finally statement.">ObjCAtTryStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>   CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a46a725e1a00725e08f57b7d0df08a679">EmitTryStmt</a>(*<span class="keyword">this</span>, S);</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> }</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> </div>
+<div class="line"><a name="l01697"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a348c253e28de3a8e030e4944bcb7bc50"> 1697</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a348c253e28de3a8e030e4944bcb7bc50">CodeGenFunction::EmitObjCAtThrowStmt</a>(<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>) {</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>   CGM.<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);</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> }</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span> </div>
+<div class="line"><a name="l01701"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aac246b8284c913edd7a222dd7052428e"> 1701</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aac246b8284c913edd7a222dd7052428e">CodeGenFunction::EmitObjCAtSynchronizedStmt</a>(</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAtSynchronizedStmt.html" title="Represents Objective-C's @synchronized statement.">ObjCAtSynchronizedStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>   CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#afeb2aa743f9b018413af31c9a976de43">EmitSynchronizedStmt</a>(*<span class="keyword">this</span>, S);</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> }</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span> <span class="comment"></span></div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span> <span class="comment">/// Produce the code for a CK_ARCProduceObject.  Just does a</span></div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> <span class="comment">/// primitive retain.</span></div>
+<div class="line"><a name="l01708"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a97e5d057bbed7f969fd32c21fc5980be"> 1708</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a97e5d057bbed7f969fd32c21fc5980be">CodeGenFunction::EmitObjCProduceObject</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>                                                     llvm::Value *value) {</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">EmitARCRetain</a>(type, value);</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="keyword">namespace </span>{</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>   <span class="keyword">struct </span>CallObjCRelease : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     CallObjCRelease(llvm::Value *<span class="keywordtype">object</span>) : object(object) {}</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>     llvm::Value *object;</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>     <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="l01719"></a><span class="lineno"> 1719</span>       <span class="comment">// Releases at the end of the full-expression are imprecise.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(<span class="keywordtype">object</span>, <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a6ec820d64b2841f94059b9e637e82aa7">ARCImpreciseLifetime</a>);</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> }</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> <span class="comment"></span></div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> <span class="comment">/// Produce the code for a CK_ARCConsumeObject.  Does a primitive</span></div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <span class="comment">/// release at the end of the full-expression.</span></div>
+<div class="line"><a name="l01727"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a05d91b79ac8319906346cdb3b3ad6948"> 1727</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a05d91b79ac8319906346cdb3b3ad6948">CodeGenFunction::EmitObjCConsumeObject</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>                                                     llvm::Value *<span class="keywordtype">object</span>) {</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   <span class="comment">// If we're in a conditional branch, we need to make the cleanup</span></div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   <span class="comment">// conditional.</span></div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>   pushFullExprCleanup<CallObjCRelease>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2accba30944ea68f763f67e3d31baa0a">getARCCleanupKind</a>(), object);</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   <span class="keywordflow">return</span> object;</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> }</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> </div>
+<div class="line"><a name="l01735"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad0d203901d53b05c0fbc891489254c35"> 1735</a></span> llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad0d203901d53b05c0fbc891489254c35">CodeGenFunction::EmitObjCExtendObjectLifetime</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>                                                            llvm::Value *value) {</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0">EmitARCRetainAutorelease</a>(type, value);</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> <span class="comment"></span></div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="comment">/// Given a number of pointers, inform the optimizer that they're</span></div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="comment">/// being intrinsically used up until this point in the program.</span></div>
+<div class="line"><a name="l01742"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa59fc1074cb261290bcca01d6aa425c9"> 1742</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa59fc1074cb261290bcca01d6aa425c9">CodeGenFunction::EmitARCIntrinsicUse</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Value*></a> values) {</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#ac25e101b7dd84ee3872b9bdbc3342043" title="void clang.arc.use(...);">clang_arc_use</a>;</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>       llvm::FunctionType::get(CGM.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<llvm::Type*></a>(), <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>     fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(fnType, <span class="stringliteral">"clang.arc.use"</span>);</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>   }</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   <span class="comment">// This isn't really a "runtime" function, but as an intrinsic it</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>   <span class="comment">// doesn't really matter as long as we align things up.</span></div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, values);</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> }</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> </div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span> </div>
+<div class="line"><a name="l01756"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c"> 1756</a></span> <span class="keyword">static</span> llvm::Constant *<a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html">CodeGenModule</a> &CGM,</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>                                                 llvm::FunctionType *<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="l01758"></a><span class="lineno"> 1758</span>                                                 StringRef fnName) {</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>   llvm::Constant *fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a776cff8c453bd698eae25f3edb82ac40">CreateRuntimeFunction</a>(type, fnName);</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> </div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="keywordflow">if</span> (llvm::Function *f = dyn_cast<llvm::Function>(fn)) {</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>     <span class="comment">// If the target runtime doesn't naturally support ARC, emit weak</span></div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>     <span class="comment">// references to the runtime support library.  We don't really</span></div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>     <span class="comment">// permit this to fail, but we need a particular relocation style.</span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>     <span class="keywordflow">if</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#a2fd9de71174695afbf9e7b221015f388" title="Does this runtime natively provide the ARC entrypoints?">hasNativeARC</a>()) {</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       f->setLinkage(llvm::Function::ExternalWeakLinkage);</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fnName == <span class="stringliteral">"objc_retain"</span> || fnName  == <span class="stringliteral">"objc_release"</span>) {</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>       <span class="comment">// If we have Native ARC, set nonlazybind attribute for these APIs for</span></div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>       <span class="comment">// performance.</span></div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>       f->addFnAttr(llvm::Attribute::NonLazyBind);</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     }</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   }</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> </div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>   <span class="keywordflow">return</span> fn;</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> }</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> <span class="comment"></span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="comment">/// Perform an operation having the signature</span></div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="comment">///   i8* (i8*)</span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> <span class="comment">/// where a null input causes a no-op and returns null.</span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240"> 1780</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>                                           llvm::Value *value,</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>                                           llvm::Constant *&fn,</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>                                           StringRef fnName,</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>                                           <span class="keywordtype">bool</span> isTailCall = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantPointerNull>(value)) <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> </div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>       llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, fnType, fnName);</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>   }</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> </div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>   <span class="comment">// Cast the argument to 'id'.</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>   llvm::Type *origType = value->getType();</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>   value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> </div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>   <span class="comment">// Call the function.</span></div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>   llvm::CallInst *call = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, value);</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>   <span class="keywordflow">if</span> (isTailCall)</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>     call->setTailCall();</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> </div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>   <span class="comment">// Cast the result back to the original type.</span></div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(call, origType);</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> }</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> <span class="comment"></span></div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> <span class="comment">/// Perform an operation having the following signature:</span></div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> <span class="comment">///   i8* (i8**)</span></div>
+<div class="line"><a name="l01808"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a0d9a8f7e5c7f0391d915f1fc4add6b9f"> 1808</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#a0d9a8f7e5c7f0391d915f1fc4add6b9f">emitARCLoadOperation</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>                                          llvm::Value *addr,</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>                                          llvm::Constant *&fn,</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>                                          StringRef fnName) {</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>       llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, fnType, fnName);</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>   }</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> </div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>   <span class="comment">// Cast the argument to 'id*'.</span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>   llvm::Type *origType = addr->getType();</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>   addr = 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#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>);</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> </div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>   <span class="comment">// Call the function.</span></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>   llvm::Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, addr);</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> </div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>   <span class="comment">// Cast the result back to a dereference of the original type.</span></div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>   <span class="keywordflow">if</span> (origType != CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>)</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>     result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result,</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>                         cast<llvm::PointerType>(origType)-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>());</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> </div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> }</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> <span class="comment"></span></div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <span class="comment">/// Perform an operation having the following signature:</span></div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> <span class="comment">///   i8* (i8**, i8*)</span></div>
+<div class="line"><a name="l01835"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ab84f229be41b61680ecefe886128310d"> 1835</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#ab84f229be41b61680ecefe886128310d">emitARCStoreOperation</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>                                           llvm::Value *addr,</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>                                           llvm::Value *value,</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>                                           llvm::Constant *&fn,</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>                                           StringRef fnName,</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>                                           <span class="keywordtype">bool</span> ignored) {</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>   assert(cast<llvm::PointerType>(addr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>()</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>            == value->getType());</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span> </div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     llvm::Type *argTypes[] = { CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a> };</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> </div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>     llvm::FunctionType *fnType</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>       = llvm::FunctionType::get(CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, argTypes, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, fnType, fnName);</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>   }</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> </div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>   llvm::Type *origType = value->getType();</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> </div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>   llvm::Value *args[] = {</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>     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#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>),</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>)</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>   };</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>   llvm::CallInst *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, args);</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> </div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>   <span class="keywordflow">if</span> (ignored) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> </div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>   <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, origType);</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> }</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> <span class="comment"></span></div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> <span class="comment">/// Perform an operation having the following signature:</span></div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> <span class="comment">///   void (i8**, i8**)</span></div>
+<div class="line"><a name="l01867"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a79593a7e6da5f7b1fffd9ff58a6a278f"> 1867</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="CGObjC_8cpp.html#a79593a7e6da5f7b1fffd9ff58a6a278f">emitARCCopyOperation</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>                                  llvm::Value *dst,</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>                                  llvm::Value *src,</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>                                  llvm::Constant *&fn,</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>                                  StringRef fnName) {</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>   assert(dst->getType() == src->getType());</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>     llvm::Type *argTypes[] = { CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a> };</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span> </div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>     llvm::FunctionType *fnType</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>       = llvm::FunctionType::get(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getVoidTy(), argTypes, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac90e716619f634d438c02ba73caaafeb">CGM</a>, fnType, fnName);</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>   }</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> </div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>   llvm::Value *args[] = {</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(dst, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>),</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(src, CGF.<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>)</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>   };</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, args);</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> }</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> <span class="comment"></span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">/// Produce the code to do a retain.  Based on the type, calls one of:</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">///   call i8* \@objc_retain(i8* %value)</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> <span class="comment">///   call i8* \@objc_retainBlock(i8* %value)</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518"> 1892</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">CodeGenFunction::EmitARCRetain</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, llvm::Value *value) {</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   <span class="keywordflow">if</span> (type-><a class="code" href="classclang_1_1Type.html#ad6cd1a04cac76bfb304bbc02bf23a9bb">isBlockPointerType</a>())</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">EmitARCRetainBlock</a>(value, <span class="comment">/*mandatory*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(value);</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> }</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> <span class="comment"></span></div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> <span class="comment">/// Retain the given object, with normal retain semantics.</span></div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> <span class="comment">///   call i8* \@objc_retain(i8* %value)</span></div>
+<div class="line"><a name="l01901"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861"> 1901</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">CodeGenFunction::EmitARCRetainNonBlock</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>                                CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#ac2c0383be78d55c6a98dc3b367ffe9e9" title="id objc_retain(id);">objc_retain</a>,</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>                                <span class="stringliteral">"objc_retain"</span>);</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span> }</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> <span class="comment"></span></div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span> <span class="comment">/// Retain the given block, with _Block_copy semantics.</span></div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> <span class="comment">///   call i8* \@objc_retainBlock(i8* %value)</span></div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> <span class="comment">/// \param mandatory - If false, emit the call with metadata</span></div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> <span class="comment">/// indicating that it's okay for the optimizer to eliminate this call</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span> <span class="comment">/// if it can prove that the block never escapes except down the stack.</span></div>
+<div class="line"><a name="l01913"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371"> 1913</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">CodeGenFunction::EmitARCRetainBlock</a>(llvm::Value *value,</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>                                                  <span class="keywordtype">bool</span> mandatory) {</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>   llvm::Value *result</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>     = <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>                             CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4f4c89a2778b09399851093ea40ad4ce" title="id objc_retainBlock(id);">objc_retainBlock</a>,</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>                             <span class="stringliteral">"objc_retainBlock"</span>);</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span> </div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>   <span class="comment">// If the copy isn't mandatory, add !clang.arc.copy_on_escape to</span></div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>   <span class="comment">// tell the optimizer that it doesn't need to do this copy if the</span></div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>   <span class="comment">// block doesn't escape, where being passed as an argument doesn't</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   <span class="comment">// count as escaping.</span></div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>   <span class="keywordflow">if</span> (!mandatory && isa<llvm::Instruction>(result)) {</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>     llvm::CallInst *call</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>       = cast<llvm::CallInst>(result->stripPointerCasts());</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>     assert(call->getCalledValue() == CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4f4c89a2778b09399851093ea40ad4ce" title="id objc_retainBlock(id);">objc_retainBlock</a>);</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*,1></a> args;</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     call->setMetadata(<span class="stringliteral">"clang.arc.copy_on_escape"</span>,</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>                       llvm::MDNode::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getContext(), args));</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>   }</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span> </div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span> }</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> <span class="comment"></span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> <span class="comment">/// Retain the given object which is the result of a function call.</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> <span class="comment">///   call i8* \@objc_retainAutoreleasedReturnValue(i8* %value)</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> <span class="comment">/// Yes, this function name is one character away from a different</span></div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> <span class="comment">/// call with completely different semantics.</span></div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <span class="comment"></span>llvm::Value *</div>
+<div class="line"><a name="l01943"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40725fabb5a39651b7b2589cc67f9cd7"> 1943</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40725fabb5a39651b7b2589cc67f9cd7">CodeGenFunction::EmitARCRetainAutoreleasedReturnValue</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>   <span class="comment">// Fetch the void(void) inline asm which marks that we're going to</span></div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>   <span class="comment">// retain the autoreleased return value.</span></div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>   llvm::InlineAsm *&marker</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>     = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4fcdce74afb7f350ef6c2cb1a2c1ab46">retainAutoreleasedReturnValueMarker</a>;</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>   <span class="keywordflow">if</span> (!marker) {</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>     StringRef assembly</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>       = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ac098ad9054632d2c6c4bf4c243cb04b1">getTargetCodeGenInfo</a>()</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>            .<a class="code" href="classclang_1_1TargetCodeGenInfo.html#a08c750aa65cabffce408671ea2df08ef">getARCRetainAutoreleasedReturnValueMarker</a>();</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span> </div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>     <span class="comment">// If we have an empty assembly string, there's nothing to do.</span></div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>     <span class="keywordflow">if</span> (assembly.empty()) {</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> </div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>     <span class="comment">// Otherwise, at -O0, build an inline asm that we're going to call</span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>     <span class="comment">// in a moment.</span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0) {</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>       llvm::FunctionType *<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="l01960"></a><span class="lineno"> 1960</span>         llvm::FunctionType::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, <span class="comment">/*variadic*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       </div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>       marker = llvm::InlineAsm::get(type, assembly, <span class="stringliteral">""</span>, <span class="comment">/*sideeffects*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span> </div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>     <span class="comment">// If we're at -O1 and above, we don't want to litter the code</span></div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>     <span class="comment">// with this marker yet, so leave a breadcrumb for the ARC</span></div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>     <span class="comment">// optimizer to pick up.</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>       llvm::NamedMDNode *metadata =</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>         CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>().getOrInsertNamedMetadata(</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>                             <span class="stringliteral">"clang.arc.retainAutoreleasedReturnValueMarker"</span>);</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>       assert(metadata->getNumOperands() <= 1);</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>       <span class="keywordflow">if</span> (metadata->getNumOperands() == 0) {</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>         llvm::Value *<span class="keywordtype">string</span> = llvm::MDString::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), assembly);</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>         metadata->addOperand(llvm::MDNode::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a3ab38e48e9cabd4b9b64555c6c825f06">getLLVMContext</a>(), <span class="keywordtype">string</span>));</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>       }</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>     }</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>   }</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>   <span class="comment">// Call the marker asm if we made one, which we do only at -O0.</span></div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>   <span class="keywordflow">if</span> (marker) <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateCall(marker);</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> </div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>                      CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#aa7b51f1e94c79b5b97d598b95d291398" title="id objc_retainAutoreleasedReturnValue(id);">objc_retainAutoreleasedReturnValue</a>,</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>                                <span class="stringliteral">"objc_retainAutoreleasedReturnValue"</span>);</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> }</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> <span class="comment"></span></div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> <span class="comment">/// Release the given object.</span></div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> <span class="comment">///   call void \@objc_release(i8* %value)</span></div>
+<div class="line"><a name="l01989"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec"> 1989</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">CodeGenFunction::EmitARCRelease</a>(llvm::Value *value,</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</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="l01991"></a><span class="lineno"> 1991</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantPointerNull>(value)) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> </div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4a6d3a38510e84d0e609e9d32345bee1" title="void objc_release(id);">objc_release</a>;</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>       llvm::FunctionType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getVoidTy(), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGM, fnType, <span class="stringliteral">"objc_release"</span>);</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>   }</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>   <span class="comment">// Cast the argument to 'id'.</span></div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>   value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> </div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>   <span class="comment">// Call objc_release.</span></div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>   llvm::CallInst *call = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, value);</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> </div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>   <span class="keywordflow">if</span> (precise == <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a6ec820d64b2841f94059b9e637e82aa7">ARCImpreciseLifetime</a>) {</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<llvm::Value*,1></a> args;</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     call->setMetadata(<span class="stringliteral">"clang.imprecise_release"</span>,</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>                       llvm::MDNode::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getContext(), args));</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>   }</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> }</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> <span class="comment"></span></div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> <span class="comment">/// Destroy a __strong variable.</span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> <span class="comment">/// At -O0, emit a call to store 'null' into the address;</span></div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> <span class="comment">/// instrumenting tools prefer this because the address is exposed,</span></div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> <span class="comment">/// but it's relatively cumbersome to optimize.</span></div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> <span class="comment">/// At -O1 and above, just load and call objc_release.</span></div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> <span class="comment">///   call void \@objc_storeStrong(i8** %addr, i8* null)</span></div>
+<div class="line"><a name="l02022"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af9ce639e02760d47c591c756ab9c83d9"> 2022</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af9ce639e02760d47c591c756ab9c83d9">CodeGenFunction::EmitARCDestroyStrong</a>(llvm::Value *addr,</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</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="l02024"></a><span class="lineno"> 2024</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0) {</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>     llvm::PointerType *addrTy = cast<llvm::PointerType>(addr->getType());</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>     llvm::Value *null = llvm::ConstantPointerNull::get(</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>                           cast<llvm::PointerType>(addrTy->getElementType()));</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd">EmitARCStoreStrongCall</a>(addr, null, <span class="comment">/*ignored*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>   }</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> </div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>   llvm::Value *value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateLoad(addr);</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(value, precise);</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> }</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> <span class="comment"></span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span> <span class="comment">/// Store into a strong object.  Always calls this:</span></div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> <span class="comment">///   call void \@objc_storeStrong(i8** %addr, i8* %value)</span></div>
+<div class="line"><a name="l02038"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd"> 2038</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd">CodeGenFunction::EmitARCStoreStrongCall</a>(llvm::Value *addr,</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>                                                      llvm::Value *value,</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>                                                      <span class="keywordtype">bool</span> ignored) {</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>   assert(cast<llvm::PointerType>(addr->getType())-><a class="code" href="SemaChecking_8cpp.html#a9f6c9a015ec06db5f86672533b582823">getElementType</a>()</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>            == value->getType());</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> </div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a6e322e4e5f0e8939fc4488c6a6cbe678" title="id objc_storeStrong(id*, id);">objc_storeStrong</a>;</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>     llvm::Type *argTypes[] = { <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a> };</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>     llvm::FunctionType *fnType</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>       = llvm::FunctionType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getVoidTy(), argTypes, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGM, fnType, <span class="stringliteral">"objc_storeStrong"</span>);</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>   }</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   llvm::Value *args[] = {</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(addr, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>),</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>)</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>   };</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, args);</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> </div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>   <span class="keywordflow">if</span> (ignored) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>   <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> }</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span> <span class="comment"></span></div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> <span class="comment">/// Store into a strong object.  Sometimes calls this:</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> <span class="comment">///   call void \@objc_storeStrong(i8** %addr, i8* %value)</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> <span class="comment">/// Other times, breaks it down into components.</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40497037ed1f343c5ef7aa5b2dc652f5"> 2065</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40497037ed1f343c5ef7aa5b2dc652f5">CodeGenFunction::EmitARCStoreStrong</a>(<a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> dst,</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>                                                  llvm::Value *newValue,</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>                                                  <span class="keywordtype">bool</span> ignored) {</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</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> = dst.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a01d08898a1636d6cb5d3489aafbc2ca1">getType</a>();</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>   <span class="keywordtype">bool</span> isBlock = type-><a class="code" href="classclang_1_1Type.html#ad6cd1a04cac76bfb304bbc02bf23a9bb">isBlockPointerType</a>();</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span> </div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>   <span class="comment">// Use a store barrier at -O0 unless this is a block type or the</span></div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>   <span class="comment">// lvalue is inadequately aligned.</span></div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2d4331f8070be31c4042da24b3a98169">shouldUseFusedARCCalls</a>() &&</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>       !isBlock &&</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>       (dst.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>().<a class="code" href="classclang_1_1CharUnits.html#af39b99432339c76e577a5149b6c59e4e" title="isZero - Test whether the quantity equals zero.">isZero</a>() ||</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>        dst.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a2d35987e18fbcfd14728b22c04c04bf4">getAlignment</a>() >= <a class="code" href="classclang_1_1CharUnits.html#adf6d3a79993b58285a0626b61c2c6c82" title="fromQuantity - Construct a CharUnits quantity from a raw integer type.">CharUnits::fromQuantity</a>(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#abae4acd5bac9daf9bffb74d6ef40d4a6">PointerAlignInBytes</a>))) {</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2863540e649e702b48a34173d7ead2bd">EmitARCStoreStrongCall</a>(dst.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>(), newValue, ignored);</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>   }</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> </div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="comment">// Otherwise, split it out.</span></div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="comment">// Retain the new value.</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>   newValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">EmitARCRetain</a>(type, newValue);</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> </div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>   <span class="comment">// Read the old value.</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>   llvm::Value *oldValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(dst, <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="l02087"></a><span class="lineno"> 2087</span> </div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   <span class="comment">// Store.  We do this before the release so that any deallocs won't</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>   <span class="comment">// see the old value.</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(newValue, dst);</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>   <span class="comment">// Finally, release the old value.</span></div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(oldValue, dst.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a1d4b1559393aa4b485033b95bc973300">isARCPreciseLifetime</a>());</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> </div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>   <span class="keywordflow">return</span> newValue;</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> }</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> <span class="comment"></span></div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> <span class="comment">/// Autorelease the given object.</span></div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> <span class="comment">///   call i8* \@objc_autorelease(i8* %value)</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c0bc45bc01991e548dbc6535427c275"> 2100</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c0bc45bc01991e548dbc6535427c275">CodeGenFunction::EmitARCAutorelease</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>                                CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a65256b3638d7e382fa230efff5df8aed" title="id objc_autorelease(id);">objc_autorelease</a>,</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>                                <span class="stringliteral">"objc_autorelease"</span>);</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> }</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> <span class="comment"></span></div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> <span class="comment">/// Autorelease the given object.</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> <span class="comment">///   call i8* \@objc_autoreleaseReturnValue(i8* %value)</span></div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span> <span class="comment"></span>llvm::Value *</div>
+<div class="line"><a name="l02109"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a27c7debe106b52406d15aa004e73e71e"> 2109</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a27c7debe106b52406d15aa004e73e71e">CodeGenFunction::EmitARCAutoreleaseReturnValue</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>                             CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a183a438c895ef01afd2d4e313972d65e" title="id objc_autoreleaseReturnValue(id);">objc_autoreleaseReturnValue</a>,</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>                                <span class="stringliteral">"objc_autoreleaseReturnValue"</span>,</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>                                <span class="comment">/*isTailCall*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> }</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> <span class="comment"></span></div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> <span class="comment">/// Do a fused retain/autorelease of the given object.</span></div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> <span class="comment">///   call i8* \@objc_retainAutoreleaseReturnValue(i8* %value)</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> <span class="comment"></span>llvm::Value *</div>
+<div class="line"><a name="l02119"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0bc089e441ae4fbb13dd119349db633a"> 2119</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0bc089e441ae4fbb13dd119349db633a">CodeGenFunction::EmitARCRetainAutoreleaseReturnValue</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>                      CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a74605e1663bfb01768b57cd20cf46c56" title="id objc_retainAutoreleaseReturnValue(id);">objc_retainAutoreleaseReturnValue</a>,</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>                                <span class="stringliteral">"objc_retainAutoreleaseReturnValue"</span>,</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>                                <span class="comment">/*isTailCall*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> }</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> <span class="comment"></span></div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> <span class="comment">/// Do a fused retain/autorelease of the given object.</span></div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> <span class="comment">///   call i8* \@objc_retainAutorelease(i8* %value)</span></div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> <span class="comment">/// or</span></div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <span class="comment">///   %retain = call i8* \@objc_retainBlock(i8* %value)</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="comment">///   call i8* \@objc_autorelease(i8* %retain)</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0"> 2131</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0">CodeGenFunction::EmitARCRetainAutorelease</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>                                                        llvm::Value *value) {</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>   <span class="keywordflow">if</span> (!type-><a class="code" href="classclang_1_1Type.html#ad6cd1a04cac76bfb304bbc02bf23a9bb">isBlockPointerType</a>())</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba777669cee08ad5ad22e8eb8b2bc03a">EmitARCRetainAutoreleaseNonBlock</a>(value);</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantPointerNull>(value)) <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span> </div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   llvm::Type *origType = value->getType();</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>   value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">EmitARCRetainBlock</a>(value, <span class="comment">/*mandatory*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c0bc45bc01991e548dbc6535427c275">EmitARCAutorelease</a>(value);</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, origType);</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> }</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> <span class="comment"></span></div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> <span class="comment">/// Do a fused retain/autorelease of the given object.</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> <span class="comment">///   call i8* \@objc_retainAutorelease(i8* %value)</span></div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span> <span class="comment"></span>llvm::Value *</div>
+<div class="line"><a name="l02148"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba777669cee08ad5ad22e8eb8b2bc03a"> 2148</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba777669cee08ad5ad22e8eb8b2bc03a">CodeGenFunction::EmitARCRetainAutoreleaseNonBlock</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab2e5606fd67481f8587c9a6455e9b240">emitARCValueOperation</a>(*<span class="keyword">this</span>, value,</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>                                CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a7cfd139c8dcf6e96c9977ea3c0dc7c30" title="id objc_retainAutorelease(id);">objc_retainAutorelease</a>,</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>                                <span class="stringliteral">"objc_retainAutorelease"</span>);</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> }</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> <span class="comment"></span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> <span class="comment">/// i8* \@objc_loadWeak(i8** %addr)</span></div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> <span class="comment">/// Essentially objc_autorelease(objc_loadWeakRetained(addr)).</span></div>
+<div class="line"><a name="l02156"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae8c37e377ab7954140298f71bda818b1"> 2156</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae8c37e377ab7954140298f71bda818b1">CodeGenFunction::EmitARCLoadWeak</a>(llvm::Value *addr) {</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a0d9a8f7e5c7f0391d915f1fc4add6b9f">emitARCLoadOperation</a>(*<span class="keyword">this</span>, addr,</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>                               CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a83961837be55e8fc62df706e0d513db2" title="id objc_loadWeak(id*);">objc_loadWeak</a>,</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>                               <span class="stringliteral">"objc_loadWeak"</span>);</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span> }</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> <span class="comment"></span></div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> <span class="comment">/// i8* \@objc_loadWeakRetained(i8** %addr)</span></div>
+<div class="line"><a name="l02163"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad15b229b97c9f1c2194ec720af286730"> 2163</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad15b229b97c9f1c2194ec720af286730" title="i8* @objc_loadWeakRetained(i8** addr)">CodeGenFunction::EmitARCLoadWeakRetained</a>(llvm::Value *addr) {</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a0d9a8f7e5c7f0391d915f1fc4add6b9f">emitARCLoadOperation</a>(*<span class="keyword">this</span>, addr,</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>                               CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#acfcac48e4f89d8cfc05bd53385784a50" title="id objc_loadWeakRetained(id*);">objc_loadWeakRetained</a>,</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>                               <span class="stringliteral">"objc_loadWeakRetained"</span>);</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> }</div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> <span class="comment"></span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> <span class="comment">/// i8* \@objc_storeWeak(i8** %addr, i8* %value)</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> <span class="comment">/// Returns %value.</span></div>
+<div class="line"><a name="l02171"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba3bbef5c415ca021de407fd87f92038"> 2171</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aba3bbef5c415ca021de407fd87f92038">CodeGenFunction::EmitARCStoreWeak</a>(llvm::Value *addr,</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>                                                llvm::Value *value,</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>                                                <span class="keywordtype">bool</span> ignored) {</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#ab84f229be41b61680ecefe886128310d">emitARCStoreOperation</a>(*<span class="keyword">this</span>, addr, value,</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>                                CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a16946f266bf49beeaf896ab106ee2482" title="id objc_storeWeak(id*, id);">objc_storeWeak</a>,</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>                                <span class="stringliteral">"objc_storeWeak"</span>, ignored);</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> }</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> <span class="comment"></span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span> <span class="comment">/// i8* \@objc_initWeak(i8** %addr, i8* %value)</span></div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> <span class="comment">/// Returns %value.  %addr is known to not have a current weak entry.</span></div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> <span class="comment">/// Essentially equivalent to:</span></div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> <span class="comment">///   *addr = nil; objc_storeWeak(addr, value);</span></div>
+<div class="line"><a name="l02183"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9"> 2183</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac005c2c2b8bea21c81fbb348e80611b9">CodeGenFunction::EmitARCInitWeak</a>(llvm::Value *addr, llvm::Value *value) {</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>   <span class="comment">// If we're initializing to null, just write null to memory; no need</span></div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>   <span class="comment">// to get the runtime involved.  But don't do this if optimization</span></div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>   <span class="comment">// is enabled, because accounting for this would make the optimizer</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>   <span class="comment">// much more complicated.</span></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>   <span class="keywordflow">if</span> (isa<llvm::ConstantPointerNull>(value) &&</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>       CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a054eb00391038519d37236032f1ebfe5">getCodeGenOpts</a>().OptimizationLevel == 0) {</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateStore(value, addr);</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>   }</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> </div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   <a class="code" href="CGObjC_8cpp.html#ab84f229be41b61680ecefe886128310d">emitARCStoreOperation</a>(*<span class="keyword">this</span>, addr, value,</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>                         CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#ac7c4f54337e6c99a9e8c54a86e2aaa81" title="id objc_initWeak(id*, id);">objc_initWeak</a>,</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>                         <span class="stringliteral">"objc_initWeak"</span>, <span class="comment">/*ignored*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span> }</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> <span class="comment"></span></div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> <span class="comment">/// void \@objc_destroyWeak(i8** %addr)</span></div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> <span class="comment">/// Essentially objc_storeWeak(addr, nil).</span></div>
+<div class="line"><a name="l02201"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafb0889b796846ed4e1efa47ca06338b"> 2201</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafb0889b796846ed4e1efa47ca06338b">CodeGenFunction::EmitARCDestroyWeak</a>(llvm::Value *addr) {</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#adb02996c41168280a9622affab5bb000" title="void objc_destroyWeak(id*);">objc_destroyWeak</a>;</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>       llvm::FunctionType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getVoidTy(), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGM, fnType, <span class="stringliteral">"objc_destroyWeak"</span>);</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>   }</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> </div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>   <span class="comment">// Cast the argument to 'id*'.</span></div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>   addr = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(addr, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0b64321ef8f3e8f6c70c218bfb4203ce">Int8PtrPtrTy</a>);</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn, addr);</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> }</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> <span class="comment"></span></div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> <span class="comment">/// void \@objc_moveWeak(i8** %dest, i8** %src)</span></div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> <span class="comment">/// Disregards the current value in %dest.  Leaves %src pointing to nothing.</span></div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span> <span class="comment">/// Essentially (objc_copyWeak(dest, src), objc_destroyWeak(src)).</span></div>
+<div class="line"><a name="l02218"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d627edce178fb92e318417785fb3c7a"> 2218</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9d627edce178fb92e318417785fb3c7a">CodeGenFunction::EmitARCMoveWeak</a>(llvm::Value *dst, llvm::Value *src) {</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>   <a class="code" href="CGObjC_8cpp.html#a79593a7e6da5f7b1fffd9ff58a6a278f">emitARCCopyOperation</a>(*<span class="keyword">this</span>, dst, src,</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>                        CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#a4e2cb5f787d117d01517ddeaf55cbbff" title="void objc_moveWeak(id *dest, id *src);">objc_moveWeak</a>,</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>                        <span class="stringliteral">"objc_moveWeak"</span>);</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> }</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> <span class="comment"></span></div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <span class="comment">/// void \@objc_copyWeak(i8** %dest, i8** %src)</span></div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> <span class="comment">/// Disregards the current value in %dest.  Essentially</span></div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> <span class="comment">///   objc_release(objc_initWeak(dest, objc_readWeakRetained(src)))</span></div>
+<div class="line"><a name="l02227"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aada507d5c7d22479abaa65fa3a1641da"> 2227</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aada507d5c7d22479abaa65fa3a1641da">CodeGenFunction::EmitARCCopyWeak</a>(llvm::Value *dst, llvm::Value *src) {</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>   <a class="code" href="CGObjC_8cpp.html#a79593a7e6da5f7b1fffd9ff58a6a278f">emitARCCopyOperation</a>(*<span class="keyword">this</span>, dst, src,</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>                        CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a858c9cffc6fb15ef489077924e91c9a2">getARCEntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1ARCEntrypoints.html#aaf8e77f8358141cb936dd810ede6d759" title="void objc_copyWeak(id *dest, id *src);">objc_copyWeak</a>,</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>                        <span class="stringliteral">"objc_copyWeak"</span>);</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span> }</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span> <span class="comment"></span></div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span> <span class="comment">/// Produce the code to do a objc_autoreleasepool_push.</span></div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span> <span class="comment">///   call i8* \@objc_autoreleasePoolPush(void)</span></div>
+<div class="line"><a name="l02235"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abcc1c2097998ae1280af73ef50cb2407"> 2235</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abcc1c2097998ae1280af73ef50cb2407">CodeGenFunction::EmitObjCAutoreleasePoolPush</a>() {</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ad110a73de2d00b276f8d519d37fa3574">getRREntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1RREntrypoints.html#a28b7e883f3ec9bdabaa69c5a98ee12b6" title="void *objc_autoreleasePoolPush(void);">objc_autoreleasePoolPush</a>;</div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>       llvm::FunctionType::get(<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGM, fnType, <span class="stringliteral">"objc_autoreleasePoolPush"</span>);</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>   }</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> </div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(fn);</div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> }</div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <span class="comment"></span></div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <span class="comment">/// Produce the code to do a primitive release.</span></div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> <span class="comment">///   call void \@objc_autoreleasePoolPop(i8* %ptr)</span></div>
+<div class="line"><a name="l02248"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af1d996056b096397027645a322afb275"> 2248</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af1d996056b096397027645a322afb275">CodeGenFunction::EmitObjCAutoreleasePoolPop</a>(llvm::Value *value) {</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>   assert(value->getType() == <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>);</div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> </div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   llvm::Constant *&fn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ad110a73de2d00b276f8d519d37fa3574">getRREntrypoints</a>().<a class="code" href="structclang_1_1CodeGen_1_1RREntrypoints.html#afb97c72d61decda11f23645f74ca7328" title="void objc_autoreleasePoolPop(void*);">objc_autoreleasePoolPop</a>;</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>   <span class="keywordflow">if</span> (!fn) {</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>     llvm::FunctionType *fnType =</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>       llvm::FunctionType::get(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.getVoidTy(), <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ac3ec7e3938996c5354dbee1a103ed4d2">Int8PtrTy</a>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span> </div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>     <span class="comment">// We don't want to use a weak import here; instead we should not</span></div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>     <span class="comment">// fall into this path.</span></div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>     fn = <a class="code" href="CGObjC_8cpp.html#ab037d9af9d2c17e3df67dc73999b3f4c">createARCRuntimeFunction</a>(CGM, fnType, <span class="stringliteral">"objc_autoreleasePoolPop"</span>);</div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>   }</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> </div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>   <span class="comment">// objc_autoreleasePoolPop can throw.</span></div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa5f13ed85d317257f72ba3a3f4e1d97e" title="Emits a call or invoke instruction to the given runtime function.">EmitRuntimeCallOrInvoke</a>(fn, value);</div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> }</div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> <span class="comment"></span></div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span> <span class="comment">/// Produce the code to do an MRR version objc_autoreleasepool_push.</span></div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span> <span class="comment">/// Which is: [[NSAutoreleasePool alloc] init];</span></div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span> <span class="comment">/// Where alloc is declared as: + (id) alloc; in NSAutoreleasePool class.</span></div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> <span class="comment">/// init is declared as: - (id) init; in its NSObject super class.</span></div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02270"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41fdaabbb91f5804b0b42acbb2442295"> 2270</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41fdaabbb91f5804b0b42acbb2442295">CodeGenFunction::EmitObjCMRRAutoreleasePoolPush</a>() {</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> &Runtime = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>();</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>   llvm::Value *Receiver = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#af458b9f40602c3cbcb12ddc7c99fb630">EmitNSAutoreleasePoolClassRef</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>   <span class="comment">// [NSAutoreleasePool alloc]</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"alloc"</span>);</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> AllocSel = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#aae4996e6370b3c39722a757eb37b38b8" title="Can create any sort of selector.">getSelector</a>(0, &II);</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</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="l02277"></a><span class="lineno"> 2277</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> AllocRV =  </div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>     Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(), </div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>                                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType(),</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>                                 AllocSel, Receiver, Args); </div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> </div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>   <span class="comment">// [Receiver init]</span></div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>   Receiver = AllocRV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>   II = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"init"</span>);</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> InitSel = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#aae4996e6370b3c39722a757eb37b38b8" title="Can create any sort of selector.">getSelector</a>(0, &II);</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> InitRV =</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>     Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>                                 <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().getObjCIdType(),</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>                                 InitSel, Receiver, Args); </div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>   <span class="keywordflow">return</span> InitRV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> }</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> <span class="comment"></span></div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> <span class="comment">/// Produce the code to do a primitive release.</span></div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> <span class="comment">/// [tmp drain];</span></div>
+<div class="line"><a name="l02295"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae537866d37aab5d16ccdc203dcde78a6"> 2295</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae537866d37aab5d16ccdc203dcde78a6">CodeGenFunction::EmitObjCMRRAutoreleasePoolPop</a>(llvm::Value *Arg) {</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"drain"</span>);</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> DrainSel = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#aae4996e6370b3c39722a757eb37b38b8" title="Can create any sort of selector.">getSelector</a>(0, &II);</div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</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="l02299"></a><span class="lineno"> 2299</span>   CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>().<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>                               <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#ad2e842be873196b0fab39b1479223209" title="void">VoidTy</a>, DrainSel, Arg, Args); </div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> }</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> </div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aed2746a127c4a525fffc41bee41b0476">CodeGenFunction::destroyARCStrongPrecise</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>                                               llvm::Value *addr,</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</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="l02306"></a><span class="lineno"> 2306</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af9ce639e02760d47c591c756ab9c83d9">EmitARCDestroyStrong</a>(addr, <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a1fa599feff7af33fae2bda52a0a6a516">ARCPreciseLifetime</a>);</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> }</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> </div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a763a89a99e4b6b63fedbccd55a1a90e9">CodeGenFunction::destroyARCStrongImprecise</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>                                                 llvm::Value *addr,</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>                                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> type) {</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af9ce639e02760d47c591c756ab9c83d9">EmitARCDestroyStrong</a>(addr, <a class="code" href="namespaceclang_1_1CodeGen.html#abd4c22c5bca7ad596b2a7bdcfe7dcea0a6ec820d64b2841f94059b9e637e82aa7">ARCImpreciseLifetime</a>);</div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span> }</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> </div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1faef89e589b0be992e3ac6f6d76c468">CodeGenFunction::destroyARCWeak</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>                                      llvm::Value *addr,</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> type) {</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>   CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aafb0889b796846ed4e1efa47ca06338b">EmitARCDestroyWeak</a>(addr);</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> }</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> </div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>   <span class="keyword">struct </span>CallObjCAutoreleasePoolObject : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>     llvm::Value *<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>;</div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span> </div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>     CallObjCAutoreleasePoolObject(llvm::Value *token) : <a class="code" href="classclang_1_1Token.html">Token</a>(token) {}</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> </div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</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="l02328"></a><span class="lineno"> 2328</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#af1d996056b096397027645a322afb275">EmitObjCAutoreleasePoolPop</a>(<a class="code" href="classclang_1_1Token.html">Token</a>);</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>     }</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>   };</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>   <span class="keyword">struct </span>CallObjCMRRAutoreleasePoolObject : <a class="code" href="classclang_1_1CodeGen_1_1EHScopeStack_1_1Cleanup.html">EHScopeStack::Cleanup</a> {</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>     llvm::Value *<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>;</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span> </div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>     CallObjCMRRAutoreleasePoolObject(llvm::Value *token) : <a class="code" href="classclang_1_1Token.html">Token</a>(token) {}</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> </div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</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="l02337"></a><span class="lineno"> 2337</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae537866d37aab5d16ccdc203dcde78a6">EmitObjCMRRAutoreleasePoolPop</a>(<a class="code" href="classclang_1_1Token.html">Token</a>);</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>     }</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>   };</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span> }</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> </div>
+<div class="line"><a name="l02342"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a36779ae528491c75e06400da08db0971"> 2342</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a36779ae528491c75e06400da08db0971">CodeGenFunction::EmitObjCAutoreleasePoolCleanup</a>(llvm::Value *Ptr) {</div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>   <span class="keywordflow">if</span> (CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#abae1594027ce284ce5b7f06c66d24ea7">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjCAutoreleasePoolObject>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, Ptr);</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjCMRRAutoreleasePoolObject>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, Ptr);</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span> }</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div>
+<div class="line"><a name="l02349"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344"> 2349</a></span> <span class="keyword">static</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> <a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344">tryEmitARCRetainLoadOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>                                                   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue,</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>                                                   <a class="code" href="classclang_1_1QualType.html">QualType</a> type) {</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>   <span class="keywordflow">switch</span> (type.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>()) {</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</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="l02354"></a><span class="lineno"> 2354</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="l02355"></a><span class="lineno"> 2355</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="l02356"></a><span class="lineno"> 2356</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="l02357"></a><span class="lineno"> 2357</span>     <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6ec6fabfbe7aa87203af03a05ab5d157">EmitLoadOfLValue</a>(lvalue,</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</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>()).<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(),</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>                          <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</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="l02362"></a><span class="lineno"> 2362</span>     <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad15b229b97c9f1c2194ec720af286730" title="i8* @objc_loadWeakRetained(i8** addr)">EmitARCLoadWeakRetained</a>(lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>()),</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>                          <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>   }</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>   llvm_unreachable(<span class="stringliteral">"impossible lifetime!"</span>);</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span> }</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div>
+<div class="line"><a name="l02369"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a64f05513f63ff4dbb1a0bdae18b98999"> 2369</a></span> <span class="keyword">static</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> <a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344">tryEmitARCRetainLoadOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>                                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>   e = e-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> type = e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> </div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>   <span class="comment">// If we're loading retained from a __strong xvalue, we can avoid </span></div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>   <span class="comment">// an extra retain/release pair by zeroing out the source of this</span></div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>   <span class="comment">// "move" operation.</span></div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>   <span class="keywordflow">if</span> (e-><a class="code" href="classclang_1_1Expr.html#a8deff4f116bef25e49044d73f3186946">isXValue</a>() &&</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>       !type.<a class="code" href="classclang_1_1QualType.html#afea72c89b99446db779fcfb0ea257826" title="Determine whether this type is const-qualified.">isConstQualified</a>() &&</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>       type.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() == <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a056719970802d94ba3740489f709a96e">Qualifiers::OCL_Strong</a>) {</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>     <span class="comment">// Emit the lvalue.</span></div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>     <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lv = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(e);</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>     </div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>     <span class="comment">// Load the object pointer.</span></div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>     llvm::Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6ec6fabfbe7aa87203af03a05ab5d157">EmitLoadOfLValue</a>(lv,</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</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>()).<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>     </div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>     <span class="comment">// Set the source pointer to NULL.</span></div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(<a class="code" href="CGObjC_8cpp.html#a463c0cd8f7b9851d73838e56efed2deb">getNullForVariable</a>(lv.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a5ed4224f90d6bb056bc6df1523c3b7dd">getAddress</a>()), lv);</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>     </div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>     <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>   }</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> </div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>   <span class="comment">// As a very special optimization, in ARC++, if the l-value is the</span></div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>   <span class="comment">// result of a non-volatile assignment, do a simple retain of the</span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>   <span class="comment">// result of the call to objc_storeWeak instead of reloading.</span></div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</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="l02397"></a><span class="lineno"> 2397</span>       !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="l02398"></a><span class="lineno"> 2398</span>       type.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() == <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="l02399"></a><span class="lineno"> 2399</span>       isa<BinaryOperator>(e) &&</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>       cast<BinaryOperator>(e)->getOpcode() == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a>)</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>     <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(e), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span> </div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344">tryEmitARCRetainLoadOfScalar</a>(CGF, CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(e), <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="l02404"></a><span class="lineno"> 2404</span> }</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> </div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#a151fc2c498a8558994ce4dc4410740c5">emitARCRetainAfterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>                                            llvm::Value *value);</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> <span class="comment"></span></div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> <span class="comment">/// Given that the given expression is some sort of call (which does</span></div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span> <span class="comment">/// not return retained), emit a retain following it.</span></div>
+<div class="line"><a name="l02411"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a9738c0659f2733b62b4671ce4502e810"> 2411</a></span> <span class="comment"></span><span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#a9738c0659f2733b62b4671ce4502e810">emitARCRetainCall</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="l02412"></a><span class="lineno"> 2412</span>   llvm::Value *value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(e);</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a151fc2c498a8558994ce4dc4410740c5">emitARCRetainAfterCall</a>(CGF, value);</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span> }</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span> </div>
+<div class="line"><a name="l02416"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a151fc2c498a8558994ce4dc4410740c5"> 2416</a></span> <span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#a151fc2c498a8558994ce4dc4410740c5">emitARCRetainAfterCall</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>                                            llvm::Value *value) {</div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>   <span class="keywordflow">if</span> (llvm::CallInst *call = dyn_cast<llvm::CallInst>(value)) {</div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>     CGBuilderTy::InsertPoint ip = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.saveIP();</div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span> </div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>     <span class="comment">// Place the retain immediately following the call.</span></div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.SetInsertPoint(call->getParent(),</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>                                ++llvm::BasicBlock::iterator(call));</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>     value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40725fabb5a39651b7b2589cc67f9cd7">EmitARCRetainAutoreleasedReturnValue</a>(value);</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> </div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.restoreIP(ip);</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>     <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (llvm::InvokeInst *invoke = dyn_cast<llvm::InvokeInst>(value)) {</div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>     CGBuilderTy::InsertPoint ip = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.saveIP();</div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span> </div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>     <span class="comment">// Place the retain at the beginning of the normal destination block.</span></div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>     llvm::BasicBlock *BB = invoke->getNormalDest();</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.SetInsertPoint(BB, BB->begin());</div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>     value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40725fabb5a39651b7b2589cc67f9cd7">EmitARCRetainAutoreleasedReturnValue</a>(value);</div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span> </div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>     CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.restoreIP(ip);</div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>     <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span> </div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>   <span class="comment">// Bitcasts can arise because of related-result returns.  Rewrite</span></div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>   <span class="comment">// the operand.</span></div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (llvm::BitCastInst *bitcast = dyn_cast<llvm::BitCastInst>(value)) {</div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>     llvm::Value *operand = bitcast->getOperand(0);</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>     operand = <a class="code" href="CGObjC_8cpp.html#a151fc2c498a8558994ce4dc4410740c5">emitARCRetainAfterCall</a>(CGF, operand);</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>     bitcast->setOperand(0, operand);</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>     <span class="keywordflow">return</span> bitcast;</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span> </div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>   <span class="comment">// Generic fall-back case.</span></div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>     <span class="comment">// Retain using the non-block variant: we never need to do a copy</span></div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>     <span class="comment">// of a block that's been returned to us.</span></div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>     <span class="keywordflow">return</span> CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab8f93d18f0518fc32858adb46f0ac861">EmitARCRetainNonBlock</a>(value);</div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>   }</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span> }</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span> <span class="comment"></span></div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span> <span class="comment">/// Determine whether it might be important to emit a separate</span></div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span> <span class="comment">/// objc_retain_block on the result of the given expression, or</span></div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span> <span class="comment">/// whether it's okay to just emit it in a +1 context.</span></div>
+<div class="line"><a name="l02458"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a1594ef41195d0512a6dd815a8360e5c2"> 2458</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="CGObjC_8cpp.html#a1594ef41195d0512a6dd815a8360e5c2">shouldEmitSeparateBlockRetain</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>   assert(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ad6cd1a04cac76bfb304bbc02bf23a9bb">isBlockPointerType</a>());</div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>   e = e-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> </div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>   <span class="comment">// For future goodness, emit block expressions directly in +1</span></div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>   <span class="comment">// contexts if we can.</span></div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>   <span class="keywordflow">if</span> (isa<BlockExpr>(e))</div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> </div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *cast = dyn_cast<CastExpr>(e)) {</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>     <span class="keywordflow">switch</span> (cast->getCastKind()) {</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>     <span class="comment">// Emitting these operations in +1 contexts is goodness.</span></div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>:</div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca54bc1edcd89f791f8516abeea370fa49" title="[ARC] Reclaim a retainable object pointer object that may have been produced and autoreleased as part...">CK_ARCReclaimReturnedObject</a>:</div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cabd5bc09cee26b551eb8174e32f1239cf" title="[ARC] Consumes a retainable object pointer that has just been produced, e.g. as the return value of a...">CK_ARCConsumeObject</a>:</div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca9f5583b92f81ac9a5b9fb5ad43e8435c" title="[ARC] Produces a retainable object pointer so that it may be consumed, e.g. by being passed to a cons...">CK_ARCProduceObject</a>:</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> </div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>     <span class="comment">// These operations preserve a block type.</span></div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>       <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a1594ef41195d0512a6dd815a8360e5c2">shouldEmitSeparateBlockRetain</a>(cast->getSubExpr());</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> </div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>     <span class="comment">// These operations are known to be bad (or haven't been considered).</span></div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>     }</div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>   }</div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span> </div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span> }</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span> <span class="comment"></span></div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> <span class="comment">/// Try to emit a PseudoObjectExpr at +1.</span></div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span> <span class="comment">/// This massively duplicates emitPseudoObjectRValue.</span></div>
+<div class="line"><a name="l02494"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#af99d777357f3ca4f2c61f3ae047740fc"> 2494</a></span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> <a class="code" href="CGObjC_8cpp.html#af99d777357f3ca4f2c61f3ae047740fc">tryEmitARCRetainPseudoObject</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>                                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *E) {</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CodeGenFunction::OpaqueValueMappingData, 4></a> opaques;</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span> </div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>   <span class="comment">// Find the result expression.</span></div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *resultExpr = E-><a class="code" href="classclang_1_1PseudoObjectExpr.html#af760319fea78d2265fbb94c586f3b2db" title="Return the result-bearing expression, or null if there is none.">getResultExpr</a>();</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>   assert(resultExpr);</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>   <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result;</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span> </div>
+<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1PseudoObjectExpr.html#a499c2bea62e3284750aa65047d460b95">PseudoObjectExpr::const_semantics_iterator</a></div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>          i = E-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a455ba1c6b83c289e35c00e77add3b4eb">semantics_begin</a>(), e = E-><a class="code" href="classclang_1_1PseudoObjectExpr.html#a1976b4ff176afbd94577feb75431b1d5">semantics_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *semantic = *i;</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span> </div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>     <span class="comment">// If this semantic expression is an opaque value, bind it</span></div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>     <span class="comment">// to the result of its source expression.</span></div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *ov = dyn_cast<OpaqueValueExpr>(semantic)) {</div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>       <span class="keyword">typedef</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1OpaqueValueMappingData.html">CodeGenFunction::OpaqueValueMappingData</a> OVMA;</div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>       OVMA opaqueData;</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> </div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>       <span class="comment">// If this semantic is the result of the pseudo-object</span></div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>       <span class="comment">// expression, try to evaluate the source as +1.</span></div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>       <span class="keywordflow">if</span> (ov == resultExpr) {</div>
+<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>         assert(!OVMA::shouldBindAsLValue(ov));</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>         result = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(CGF, ov->getSourceExpr());</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>         opaqueData = OVMA::bind(CGF, ov, <a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a1a8427ae63385ddc17ad8c68352d95b2">RValue::get</a>(result.getPointer()));</div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> </div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>       <span class="comment">// Otherwise, just bind it.</span></div>
+<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>         opaqueData = OVMA::bind(CGF, ov, ov->getSourceExpr());</div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>       }</div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>       opaques.push_back(opaqueData);</div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span> </div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>     <span class="comment">// Otherwise, if the expression is the result, evaluate it</span></div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>     <span class="comment">// and remember the result.</span></div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (semantic == resultExpr) {</div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>       result = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(CGF, semantic);</div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span> </div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>     <span class="comment">// Otherwise, evaluate the expression in an ignored context.</span></div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>       CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a6d658adb4ef629c25cc3821f5a3e01ec" title="EmitIgnoredExpr - Emit an expression in a context which ignores the result.">EmitIgnoredExpr</a>(semantic);</div>
+<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>     }</div>
+<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>   }</div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span> </div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>   <span class="comment">// Unbind all the opaques now.</span></div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = opaques.size(); i != e; ++i)</div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>     opaques[i].unbind(CGF);</div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span> </div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> }</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span> </div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span> <span class="keyword">static</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a></div>
+<div class="line"><a name="l02545"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059"> 2545</a></span> <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</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="l02546"></a><span class="lineno"> 2546</span>   <span class="comment">// We should *never* see a nested full-expression here, because if</span></div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>   <span class="comment">// we fail to emit at +1, our caller must not retain after we close</span></div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>   <span class="comment">// out the full-expression.</span></div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>   assert(!isa<ExprWithCleanups>(e));</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span> </div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>   <span class="comment">// The desired result type, if it differs from the type of the</span></div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>   <span class="comment">// ultimate opaque expression.</span></div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>   llvm::Type *resultType = 0;</div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span> </div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>     e = e-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> </div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>     <span class="comment">// There's a break at the end of this if-chain;  anything</span></div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>     <span class="comment">// that wants to keep looping has to explicitly continue.</span></div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *ce = dyn_cast<CastExpr>(e)) {</div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>       <span class="keywordflow">switch</span> (ce->getCastKind()) {</div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>       <span class="comment">// No-op casts don't change the type, so we just ignore them.</span></div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca534ff1b7708ce501d6f39f65d98ffdcb">CK_NoOp</a>:</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>         e = ce->getSubExpr();</div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> </div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca3b60e4a2d76963a5a2db0e0b720d8ce4">CK_LValueToRValue</a>: {</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>         <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> loadResult</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>           = <a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344">tryEmitARCRetainLoadOfScalar</a>(CGF, ce->getSubExpr());</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>         <span class="keywordflow">if</span> (resultType) {</div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>           llvm::Value *value = loadResult.getPointer();</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>           value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, resultType);</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>           loadResult.setPointer(value);</div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>         }</div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>         <span class="keywordflow">return</span> loadResult;</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>       }</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> </div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>       <span class="comment">// These casts can change the type, so remember that and</span></div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>       <span class="comment">// soldier on.  We only need to remember the outermost such</span></div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>       <span class="comment">// cast, though.</span></div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cacc999b93239de9e4bc022719ddd96159">CK_CPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca90f41f80fbcffc5e47ac9c9b448f5c00">CK_BlockPointerToObjCPointerCast</a>:</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cac5436c20ce687d8a80eac6656ccd4053">CK_AnyPointerToBlockPointerCast</a>:</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca183b8948b82911a415cc54446ddcb3ab">CK_BitCast</a>:</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>         <span class="keywordflow">if</span> (!resultType)</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>           resultType = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a1ccd343226e5bdfd99c6017f0ddfda20">ConvertType</a>(ce->getType());</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>         e = ce->getSubExpr();</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>         assert(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#af129d24577622dba16699371936d41d2">hasPointerRepresentation</a>());</div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> </div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>       <span class="comment">// For consumptions, just emit the subexpression and thus elide</span></div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>       <span class="comment">// the retain/release pair.</span></div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8cabd5bc09cee26b551eb8174e32f1239cf" title="[ARC] Consumes a retainable object pointer that has just been produced, e.g. as the return value of a...">CK_ARCConsumeObject</a>: {</div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>         llvm::Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(ce->getSubExpr());</div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>         <span class="keywordflow">if</span> (resultType) result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>         <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>       }</div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> </div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>       <span class="comment">// Block extends are net +0.  Naively, we could just recurse on</span></div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>       <span class="comment">// the subexpression, but actually we need to ensure that the</span></div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>       <span class="comment">// value is copied as a block, so there's a little filter here.</span></div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca88a24e1d8c6ee42652b389edc898488f" title="[ARC] Causes a value of block type to be copied to the heap, if it is not already there...">CK_ARCExtendBlockObject</a>: {</div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>         llvm::Value *result; <span class="comment">// will be a +0 value</span></div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span> </div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>         <span class="comment">// If we can't safely assume the sub-expression will produce a</span></div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>         <span class="comment">// block-copied value, emit the sub-expression at +0.</span></div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>         <span class="keywordflow">if</span> (<a class="code" href="CGObjC_8cpp.html#a1594ef41195d0512a6dd815a8360e5c2">shouldEmitSeparateBlockRetain</a>(ce->getSubExpr())) {</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>           result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(ce->getSubExpr());</div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> </div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>         <span class="comment">// Otherwise, try to emit the sub-expression at +1 recursively.</span></div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>           <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> subresult</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>             = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(CGF, ce->getSubExpr());</div>
+<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>           result = subresult.getPointer();</div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span> </div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>           <span class="comment">// If that produced a retained value, just use that,</span></div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>           <span class="comment">// possibly casting down.</span></div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>           <span class="keywordflow">if</span> (subresult.getInt()) {</div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>             <span class="keywordflow">if</span> (resultType)</div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>               result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>             <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>           }</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> </div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>           <span class="comment">// Otherwise it's +0.</span></div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>         }</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span> </div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>         <span class="comment">// Retain the object as a block, then cast down.</span></div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>         result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">EmitARCRetainBlock</a>(result, <span class="comment">/*mandatory*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>         <span class="keywordflow">if</span> (resultType) result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>         <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>       }</div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span> </div>
+<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>       <span class="comment">// For reclaims, emit the subexpression as a retained call and</span></div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>       <span class="comment">// skip the consumption.</span></div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>       <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8ca54bc1edcd89f791f8516abeea370fa49" title="[ARC] Reclaim a retainable object pointer object that may have been produced and autoreleased as part...">CK_ARCReclaimReturnedObject</a>: {</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>         llvm::Value *result = <a class="code" href="CGObjC_8cpp.html#a9738c0659f2733b62b4671ce4502e810">emitARCRetainCall</a>(CGF, ce->getSubExpr());</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>         <span class="keywordflow">if</span> (resultType) result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>         <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>       }</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>       <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>       }</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span> </div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>     <span class="comment">// Skip __extension__.</span></div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *op = dyn_cast<UnaryOperator>(e)) {</div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>       <span class="keywordflow">if</span> (op->getOpcode() == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffadc9189ae28cc27f4b3170faeb8ea61b5">UO_Extension</a>) {</div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>         e = op->getSubExpr();</div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>       }</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span> </div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>     <span class="comment">// For calls and message sends, use the retained-call logic.</span></div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>     <span class="comment">// Delegate inits are a special case in that they're the only</span></div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>     <span class="comment">// returns-retained expression that *isn't* surrounded by</span></div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>     <span class="comment">// a consume.</span></div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<CallExpr>(e) ||</div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>                (isa<ObjCMessageExpr>(e) &&</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>                 !cast<ObjCMessageExpr>(e)->isDelegateInitCall())) {</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>       llvm::Value *result = <a class="code" href="CGObjC_8cpp.html#a9738c0659f2733b62b4671ce4502e810">emitARCRetainCall</a>(CGF, e);</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>       <span class="keywordflow">if</span> (resultType) result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>       <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span> </div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>     <span class="comment">// Look through pseudo-object expressions.</span></div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PseudoObjectExpr.html">PseudoObjectExpr</a> *pseudo = dyn_cast<PseudoObjectExpr>(e)) {</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>       <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>         = <a class="code" href="CGObjC_8cpp.html#af99d777357f3ca4f2c61f3ae047740fc">tryEmitARCRetainPseudoObject</a>(CGF, pseudo);</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>       <span class="keywordflow">if</span> (resultType) {</div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>         llvm::Value *value = result.getPointer();</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>         value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(value, resultType);</div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>         result.setPointer(value);</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>       }</div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>       <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>     }</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> </div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>     <span class="comment">// Conservatively halt the search at any other expression kind.</span></div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>   }</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span> </div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>   <span class="comment">// We didn't find an obvious production, so emit what we've got and</span></div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>   <span class="comment">// tell the caller that we didn't manage to retain.</span></div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>   llvm::Value *result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(e);</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>   <span class="keywordflow">if</span> (resultType) result = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(result, resultType);</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>   <span class="keywordflow">return</span> <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a>(result, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> }</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span> </div>
+<div class="line"><a name="l02686"></a><span class="lineno"><a class="code" href="CGObjC_8cpp.html#ab8a93cb33b4617d173e3be007229b11a"> 2686</a></span> <span class="keyword">static</span> llvm::Value *<a class="code" href="CGObjC_8cpp.html#ab8a93cb33b4617d173e3be007229b11a">emitARCRetainLoadOfScalar</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html">CodeGenFunction</a> &CGF,</div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>                                                 <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue,</div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>                                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> type) {</div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>   <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result = <a class="code" href="CGObjC_8cpp.html#a8af39fce566199638d86d2760f32d344">tryEmitARCRetainLoadOfScalar</a>(CGF, lvalue, type);</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>   llvm::Value *value = result.getPointer();</div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>   <span class="keywordflow">if</span> (!result.getInt())</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>     value = CGF.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">EmitARCRetain</a>(type, value);</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>   <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> }</div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span> <span class="comment"></span></div>
+<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span> <span class="comment">/// EmitARCRetainScalarExpr - Semantically equivalent to</span></div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> <span class="comment">/// EmitARCRetainObject(e->getType(), EmitScalarExpr(e)), but making a</span></div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> <span class="comment">/// best-effort attempt to peephole expressions that naturally produce</span></div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> <span class="comment">/// retained objects.</span></div>
+<div class="line"><a name="l02700"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe"> 2700</a></span> <span class="comment"></span>llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe">CodeGenFunction::EmitARCRetainScalarExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>   <span class="comment">// The retain needs to happen within the full-expression.</span></div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *cleanups = dyn_cast<ExprWithCleanups>(e)) {</div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a83deaf3d8bd449ba59ee5c966b22da09">enterFullExpression</a>(cleanups);</div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> scope(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a89df616486925c940d4d6d2388feacbe">EmitARCRetainScalarExpr</a>(cleanups->getSubExpr());</div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>   }</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> </div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>   <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(*<span class="keyword">this</span>, e);</div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>   llvm::Value *value = result.getPointer();</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>   <span class="keywordflow">if</span> (!result.getInt())</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a294eb3b71d952ac195a575a4c616b518">EmitARCRetain</a>(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), value);</div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>   <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span> }</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span> </div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> llvm::Value *</div>
+<div class="line"><a name="l02716"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748"> 2716</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748">CodeGenFunction::EmitARCRetainAutoreleaseScalarExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>   <span class="comment">// The retain needs to happen within the full-expression.</span></div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ExprWithCleanups.html">ExprWithCleanups</a> *cleanups = dyn_cast<ExprWithCleanups>(e)) {</div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a83deaf3d8bd449ba59ee5c966b22da09">enterFullExpression</a>(cleanups);</div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> scope(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748">EmitARCRetainAutoreleaseScalarExpr</a>(cleanups->getSubExpr());</div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>   }</div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span> </div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>   <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(*<span class="keyword">this</span>, e);</div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>   llvm::Value *value = result.getPointer();</div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>   <span class="keywordflow">if</span> (result.getInt())</div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c0bc45bc01991e548dbc6535427c275">EmitARCAutorelease</a>(value);</div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a403370a4339d7bb5aff0701ecf096de0">EmitARCRetainAutorelease</a>(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), value);</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>   <span class="keywordflow">return</span> value;</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span> }</div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> </div>
+<div class="line"><a name="l02733"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae7d99da876a93f0638b61385ea5a1166"> 2733</a></span> llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ae7d99da876a93f0638b61385ea5a1166">CodeGenFunction::EmitARCExtendBlockObject</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *e) {</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>   llvm::Value *result;</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>   <span class="keywordtype">bool</span> doRetain;</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span> </div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>   <span class="keywordflow">if</span> (<a class="code" href="CGObjC_8cpp.html#a1594ef41195d0512a6dd815a8360e5c2">shouldEmitSeparateBlockRetain</a>(e)) {</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>     result = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(e);</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>     doRetain = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>     <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> subresult = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(*<span class="keyword">this</span>, e);</div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>     result = subresult.getPointer();</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>     doRetain = !subresult.getInt();</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>   }</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span> </div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>   <span class="keywordflow">if</span> (doRetain)</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>     result = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">EmitARCRetainBlock</a>(result, <span class="comment">/*mandatory*/</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a05d91b79ac8319906346cdb3b3ad6948">EmitObjCConsumeObject</a>(e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(), result);</div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span> }</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span> </div>
+<div class="line"><a name="l02751"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a514f9adcddd61f2dcde49d3d6cf7ecff"> 2751</a></span> llvm::Value *<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a514f9adcddd61f2dcde49d3d6cf7ecff">CodeGenFunction::EmitObjCThrowOperand</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>) {</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>   <span class="comment">// In ARC, retain and autorelease the expression.</span></div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>     <span class="comment">// Do so before running any cleanups for the full-expression.</span></div>
+<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>     <span class="comment">// EmitARCRetainAutoreleaseScalarExpr does this for us.</span></div>
+<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748">EmitARCRetainAutoreleaseScalarExpr</a>(expr);</div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>   }</div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span> </div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>   <span class="comment">// Otherwise, use the normal scalar-expression emission.  The</span></div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>   <span class="comment">// exception machinery doesn't do anything special with the</span></div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>   <span class="comment">// exception like retaining it, so there's no safety associated with</span></div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>   <span class="comment">// only running cleanups after the throw has started, and when it</span></div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>   <span class="comment">// matters it tends to be substantially inferior code.</span></div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ada2bbe60d33f290a0ef688d71c491ca8">EmitScalarExpr</a>(expr);</div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span> }</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span> </div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span> std::pair<LValue,llvm::Value*></div>
+<div class="line"><a name="l02768"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a32cc54565757d8b85f9707a5d90800c6"> 2768</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40497037ed1f343c5ef7aa5b2dc652f5">CodeGenFunction::EmitARCStoreStrong</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *e,</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>                                     <span class="keywordtype">bool</span> ignored) {</div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>   <span class="comment">// Evaluate the RHS first.</span></div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>   <a class="code" href="CGObjC_8cpp.html#a4e6d1446c7f7321cd20ad1dee9829626">TryEmitResult</a> result = <a class="code" href="CGObjC_8cpp.html#a6016ebbcaed5013f4729ecbf77454059">tryEmitARCRetainScalarExpr</a>(*<span class="keyword">this</span>, e-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>   llvm::Value *value = result.getPointer();</div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span> </div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>   <span class="keywordtype">bool</span> hasImmediateRetain = result.getInt();</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span> </div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>   <span class="comment">// If we didn't emit a retained object, and the l-value is of block</span></div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>   <span class="comment">// type, then we need to emit the block-retain immediately in case</span></div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>   <span class="comment">// it invalidates the l-value.</span></div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>   <span class="keywordflow">if</span> (!hasImmediateRetain && e-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#ad6cd1a04cac76bfb304bbc02bf23a9bb">isBlockPointerType</a>()) {</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8712b1e93f3e32b6fbff04996a6fb371">EmitARCRetainBlock</a>(value, <span class="comment">/*mandatory*/</span> <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>     hasImmediateRetain = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>   }</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span> </div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(e-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span> </div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>   <span class="comment">// If the RHS was emitted retained, expand this.</span></div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>   <span class="keywordflow">if</span> (hasImmediateRetain) {</div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>     llvm::Value *oldValue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aff8d4768706029de6dbe796b2867a8ef">EmitLoadOfScalar</a>(lvalue, <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="l02789"></a><span class="lineno"> 2789</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(value, lvalue);</div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a585a58940cba78b5edc132481e3af6ec">EmitARCRelease</a>(oldValue, lvalue.<a class="code" href="classclang_1_1CodeGen_1_1LValue.html#a1d4b1559393aa4b485033b95bc973300">isARCPreciseLifetime</a>());</div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>     value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a40497037ed1f343c5ef7aa5b2dc652f5">EmitARCStoreStrong</a>(lvalue, value, ignored);</div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>   }</div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span> </div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>   <span class="keywordflow">return</span> std::pair<LValue,llvm::Value*>(lvalue, value);</div>
+<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span> }</div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span> </div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span> std::pair<LValue,llvm::Value*></div>
+<div class="line"><a name="l02799"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0ef8a2405698ceeb0f76138b79ab6def"> 2799</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a0ef8a2405698ceeb0f76138b79ab6def">CodeGenFunction::EmitARCStoreAutoreleasing</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *e) {</div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>   llvm::Value *value = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a2c529514891a3075184ecace50c54748">EmitARCRetainAutoreleaseScalarExpr</a>(e-><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>());</div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>   <a class="code" href="classclang_1_1CodeGen_1_1LValue.html">LValue</a> lvalue = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa0edab9cd404123428caf6cf599aa09e">EmitLValue</a>(e-><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>());</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span> </div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aa3de7edefb050b883760e29af7e65f75">EmitStoreOfScalar</a>(value, lvalue);</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span> </div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>   <span class="keywordflow">return</span> std::pair<LValue,llvm::Value*>(lvalue, value);</div>
+<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span> }</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span> </div>
+<div class="line"><a name="l02808"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7684311e09bdb7fefd03451a5dabbad5"> 2808</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7684311e09bdb7fefd03451a5dabbad5">CodeGenFunction::EmitObjCAutoreleasePoolStmt</a>(</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>                                           <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCAutoreleasePoolStmt.html" title="Represents Objective-C's @autoreleasepool Statement.">ObjCAutoreleasePoolStmt</a> &ARPS) {</div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *subStmt = ARPS.<a class="code" href="classclang_1_1ObjCAutoreleasePoolStmt.html#aec8c7263d6f1061ee21f11f43b1228eb">getSubStmt</a>();</div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a> = cast<CompoundStmt>(*subStmt);</div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span> </div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</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="l02814"></a><span class="lineno"> 2814</span>   <span class="keywordflow">if</span> (DI)</div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#ab42b87541eff690214862d1648366d6c">EmitLexicalBlockStart</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, S.<a class="code" href="classclang_1_1CompoundStmt.html#a69c302ef8b8c4aa524e48e018503ec15">getLBracLoc</a>());</div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> </div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>   <span class="comment">// Keep track of the current cleanup stack depth.</span></div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction_1_1RunCleanupsScope.html" title="Enters a new scope for capturing cleanups, all of which will be executed once the scope is exited...">RunCleanupsScope</a> <a class="code" href="classclang_1_1Scope.html">Scope</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>   <span class="keywordflow">if</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#a2fd9de71174695afbf9e7b221015f388" title="Does this runtime natively provide the ARC entrypoints?">hasNativeARC</a>()) {</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>     llvm::Value *token = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#abcc1c2097998ae1280af73ef50cb2407">EmitObjCAutoreleasePoolPush</a>();</div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjCAutoreleasePoolObject>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, token);</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>     llvm::Value *token = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a41fdaabbb91f5804b0b42acbb2442295">EmitObjCMRRAutoreleasePoolPush</a>();</div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a9b8530f063bc2736b570c0b56a705d37">EHStack</a>.pushCleanup<CallObjCMRRAutoreleasePoolObject>(<a class="code" href="namespaceclang_1_1CodeGen.html#a2186970022771224a80dc9baa7d8ba6fa10fc653c48ca5920abf8664d6efd7158">NormalCleanup</a>, token);</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>   }</div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span> </div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CompoundStmt.html#a9750d59c3c5fa551951901a40a3887da">CompoundStmt::const_body_iterator</a> I = S.<a class="code" href="classclang_1_1CompoundStmt.html#a89f494cf13b72531e81c7b9a87db22a7">body_begin</a>(),</div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>        E = S.<a class="code" href="classclang_1_1CompoundStmt.html#a5bc934fe5cf3477500b1824a7e0d4db2">body_end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>     <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(*I);</div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span> </div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>   <span class="keywordflow">if</span> (DI)</div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>     DI-><a class="code" href="classclang_1_1CodeGen_1_1CGDebugInfo.html#a6cb8ef31ea4dbd044bd4f0a2ba48cde7">EmitLexicalBlockEnd</a>(<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>, S.<a class="code" href="classclang_1_1CompoundStmt.html#a5a3ec9cd066b7f7f5acf887794dcba36">getRBracLoc</a>());</div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> }</div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span> <span class="comment"></span></div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span> <span class="comment">/// EmitExtendGCLifetime - Given a pointer to an Objective-C object,</span></div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span> <span class="comment">/// make sure it survives garbage collection until this point.</span></div>
+<div class="line"><a name="l02837"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80dd70a938a3c1881d46add358ea7efc"> 2837</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a80dd70a938a3c1881d46add358ea7efc">CodeGenFunction::EmitExtendGCLifetime</a>(llvm::Value *<span class="keywordtype">object</span>) {</div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>   <span class="comment">// We just use an inline assembly.</span></div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>   llvm::FunctionType *extenderType</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</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#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>, <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>   llvm::Value *extender</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>     = llvm::InlineAsm::get(extenderType,</div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>                            <span class="comment">/* assembly */</span> <span class="stringliteral">""</span>,</div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>                            <span class="comment">/* constraints */</span> <span class="stringliteral">"r"</span>,</div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>                            <span class="comment">/* side effects */</span> <span class="keyword">true</span>);</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span> </div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>   <span class="keywordtype">object</span> = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a982c1e3091df3de75723921687460d3d">Builder</a>.CreateBitCast(<span class="keywordtype">object</span>, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a76d925109b30811e708f705a63541075">EmitNounwindRuntimeCall</a>(extender, <span class="keywordtype">object</span>);</div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span> }</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span> <span class="comment"></span></div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> <span class="comment">/// GenerateObjCAtomicSetterCopyHelperFunction - Given a c++ object type with</span></div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span> <span class="comment">/// non-trivial copy assignment function, produce following helper function.</span></div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> <span class="comment">/// static void copyHelper(Ty *dest, const Ty *source) { *dest = *source; }</span></div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> <span class="comment"></span>llvm::Constant *</div>
+<div class="line"><a name="l02856"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aac0a00459dc6f8aba54a631c7aff1d5c"> 2856</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#aac0a00459dc6f8aba54a631c7aff1d5c">CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction</a>(</div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID) {</div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</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="l02859"></a><span class="lineno"> 2859</span>       !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="classclang_1_1ObjCRuntime.html" title="The basic abstraction for the target Objective-C runtime.">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a4490b87b7eb6e6bdd856120ef38c2429">hasAtomicCopyHelper</a>())</div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a4997f96072c557376eeb6c52423ff6fc">getPropertyIvarDecl</a>()-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>   <span class="keywordflow">if</span> (!Ty-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>())</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PD = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>   <span class="keywordflow">if</span> ((!(PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>() & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>)))</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>   llvm::Constant * HelperFn = 0;</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>   <span class="keywordflow">if</span> (<a class="code" href="CGObjC_8cpp.html#af4dabe5840dc9ca0d51eb18a4bf3a263">hasTrivialSetExpr</a>(PID))</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>   assert(PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a6715a4348431248163bc821c56e27a38">getSetterCXXAssignment</a>() && <span class="stringliteral">"SetterCXXAssignment - null"</span>);</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>   <span class="keywordflow">if</span> ((HelperFn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a92ac995feb0b819c3387d370d8bcc2de">getAtomicSetterHelperFnMap</a>(Ty)))</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>     <span class="keywordflow">return</span> HelperFn;</div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>   </div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>();</div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II</div>
+<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>     = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"__assign_helper_atomic_property_"</span>);</div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>   <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = <a class="code" href="classclang_1_1FunctionDecl.html#a1e97bea3113d786b0a4d20c54b21714e">FunctionDecl::Create</a>(C,</div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>                                           C.<a class="code" href="classclang_1_1ASTContext.html#abd909fb01ef10cfd0244832a67b1dd64">getTranslationUnitDecl</a>(),</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</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="l02880"></a><span class="lineno"> 2880</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>(), II, C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, 0,</div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>                                           <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370a8ab15f6f81097ed5c20dd71e5ef4aa00">SC_Static</a>,</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>                                           <span class="keyword">false</span>,</div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>                                           <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>   </div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy = C.<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>(Ty);</div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy = Ty;</div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>   SrcTy.<a class="code" href="classclang_1_1QualType.html#a43a8b5d4a9d63c319ad978252426379a" title="addConst - add the specified type qualifier to this QualType.">addConst</a>();</div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>   SrcTy = C.<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>(SrcTy);</div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>   </div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>   <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> args;</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>   <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> dstDecl(FD, <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>(), 0, DestTy);</div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>   args.push_back(&dstDecl);</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>   <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> srcDecl(FD, <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>(), 0, SrcTy);</div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>   args.push_back(&srcDecl);</div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>   </div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &FI =</div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>     CGM.<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>(C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, args,</div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>                                               <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>                                               <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>   </div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>   llvm::FunctionType *LTy = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(FI);</div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>   </div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   llvm::Function *Fn =</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>     llvm::Function::Create(LTy, <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="l02905"></a><span class="lineno"> 2905</span>                            <span class="stringliteral">"__assign_helper_atomic_property_"</span>,</div>
+<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>                            &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>());</div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>   </div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a923f7d7b4fbe87ade9f82f39ebf804a9">StartFunction</a>(FD, C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, Fn, FI, args, <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="l02909"></a><span class="lineno"> 2909</span>   </div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</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> DstExpr(&dstDecl, <span class="keyword">false</span>, DestTy,</div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>                       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</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="l02912"></a><span class="lineno"> 2912</span>   <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> DST(&DstExpr, <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>, DestTy->getPointeeType(),</div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>                     <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="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</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="l02914"></a><span class="lineno"> 2914</span>   </div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</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> SrcExpr(&srcDecl, <span class="keyword">false</span>, SrcTy,</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>                       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</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="l02917"></a><span class="lineno"> 2917</span>   <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> SRC(&SrcExpr, <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>, SrcTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>(),</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>                     <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="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</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="l02919"></a><span class="lineno"> 2919</span>   </div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>[2] = { &DST, &SRC };</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>   <a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> *CalleeExp = cast<CallExpr>(PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a6715a4348431248163bc821c56e27a38">getSetterCXXAssignment</a>());</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>   <a class="code" href="classclang_1_1CXXOperatorCallExpr.html" title="A call to an overloaded operator written using operator syntax.">CXXOperatorCallExpr</a> TheCall(C, OO_Equal, CalleeExp-><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>(),</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>                               <a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>, DestTy->getPointeeType(),</div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>                               <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>(), <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>   </div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab625dabfdcc8082335d64c4cbd009ef0">EmitStmt</a>(&TheCall);</div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span> </div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>();</div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>   HelperFn = llvm::ConstantExpr::getBitCast(Fn, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>   CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a932840a2173b4021e711311db0ecc96c">setAtomicSetterHelperFnMap</a>(Ty, HelperFn);</div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>   <span class="keywordflow">return</span> HelperFn;</div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> }</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> </div>
+<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span> llvm::Constant *</div>
+<div class="line"><a name="l02935"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac55c2c0a2d817ee537538746501571af"> 2935</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ac55c2c0a2d817ee537538746501571af">CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction</a>(</div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PID) {</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</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="l02938"></a><span class="lineno"> 2938</span>       !<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a7f36282ddf1577e2efd3a888053b2f87">getLangOpts</a>().<a class="code" href="classclang_1_1ObjCRuntime.html" title="The basic abstraction for the target Objective-C runtime.">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a4490b87b7eb6e6bdd856120ef38c2429">hasAtomicCopyHelper</a>())</div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *PD = PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#a7c47743d3355f901f96c12f3ea552d16">getPropertyDecl</a>();</div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty = PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#af0e7df097fcd79bcda29939566e96644">getType</a>();</div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>   <span class="keywordflow">if</span> (!Ty-><a class="code" href="classclang_1_1Type.html#a6525adb10d549a7ee372424dcdb6b9bd">isRecordType</a>())</div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>   <span class="keywordflow">if</span> ((!(PD-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a3ab708c370cfcf22f84f69afa79345c8">getPropertyAttributes</a>() & <a class="code" href="classclang_1_1ObjCPropertyDecl.html#a8c30cbf1e395e8f65ea427afb5ed0e08acc3f6599e0d52d6f6fa52f2e07588b10">ObjCPropertyDecl::OBJC_PR_atomic</a>)))</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>   llvm::Constant * HelperFn = 0;</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>   </div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>   <span class="keywordflow">if</span> (<a class="code" href="CGObjC_8cpp.html#a0ec7315b1e8365459dc9dd1b41e294d0">hasTrivialGetExpr</a>(PID))</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>   assert(PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#aa913ea1dcfdd9c8d23ee69f7cb6dc8ee">getGetterCXXConstructor</a>() && <span class="stringliteral">"getGetterCXXConstructor - null"</span>);</div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>   <span class="keywordflow">if</span> ((HelperFn = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a759ed48fb4a986507e156dca420647a8">getAtomicGetterHelperFnMap</a>(Ty)))</div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>     <span class="keywordflow">return</span> HelperFn;</div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>   </div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>   </div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>();</div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II</div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>   = &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a4a62f428c7e3d80e67885383b9263054">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"__copy_helper_atomic_property_"</span>);</div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>   <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = <a class="code" href="classclang_1_1FunctionDecl.html#a1e97bea3113d786b0a4d20c54b21714e">FunctionDecl::Create</a>(C,</div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>                                           C.<a class="code" href="classclang_1_1ASTContext.html#abd909fb01ef10cfd0244832a67b1dd64">getTranslationUnitDecl</a>(),</div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</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="l02961"></a><span class="lineno"> 2961</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>(), II, C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, 0,</div>
+<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>                                           <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370a8ab15f6f81097ed5c20dd71e5ef4aa00">SC_Static</a>,</div>
+<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>                                           <span class="keyword">false</span>,</div>
+<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>                                           <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>   </div>
+<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> DestTy = C.<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>(Ty);</div>
+<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> SrcTy = Ty;</div>
+<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>   SrcTy.<a class="code" href="classclang_1_1QualType.html#a43a8b5d4a9d63c319ad978252426379a" title="addConst - add the specified type qualifier to this QualType.">addConst</a>();</div>
+<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>   SrcTy = C.<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>(SrcTy);</div>
+<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>   </div>
+<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>   <a class="code" href="classclang_1_1CodeGen_1_1FunctionArgList.html">FunctionArgList</a> args;</div>
+<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>   <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> dstDecl(FD, <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>(), 0, DestTy);</div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>   args.push_back(&dstDecl);</div>
+<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>   <a class="code" href="classclang_1_1ImplicitParamDecl.html">ImplicitParamDecl</a> srcDecl(FD, <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>(), 0, SrcTy);</div>
+<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>   args.push_back(&srcDecl);</div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>   </div>
+<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CodeGen_1_1CGFunctionInfo.html">CGFunctionInfo</a> &FI =</div>
+<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>   CGM.<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>(C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, args,</div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>                                             <a class="code" href="classclang_1_1FunctionType_1_1ExtInfo.html">FunctionType::ExtInfo</a>(),</div>
+<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>                                             <a class="code" href="classclang_1_1CodeGen_1_1RequiredArgs.html#aa5f6271941257ae6b5f05b976a97e1bcac93f131e390095a56245147f25007607">RequiredArgs::All</a>);</div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>   </div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>   llvm::FunctionType *LTy = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a1325760f10142c1da8521b53734858ef">getTypes</a>().<a class="code" href="classclang_1_1CodeGen_1_1CodeGenTypes.html#a5e6c7473f14643c5a5b45ac9c0bb2ef8" title="GetFunctionType - Get the LLVM function type for.">GetFunctionType</a>(FI);</div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>   </div>
+<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>   llvm::Function *Fn =</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>   llvm::Function::Create(LTy, <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="l02986"></a><span class="lineno"> 2986</span>                          <span class="stringliteral">"__copy_helper_atomic_property_"</span>, &CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a908409c9231b015784ca008fd6bcb961">getModule</a>());</div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>   </div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a923f7d7b4fbe87ade9f82f39ebf804a9">StartFunction</a>(FD, C.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>, Fn, FI, args, <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="l02989"></a><span class="lineno"> 2989</span>   </div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</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> SrcExpr(&srcDecl, <span class="keyword">false</span>, SrcTy,</div>
+<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>                       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</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="l02992"></a><span class="lineno"> 2992</span>   </div>
+<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>   <a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> SRC(&SrcExpr, <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa7fa8b49244d53a4c50b7d8e63257449e">UO_Deref</a>, SrcTy-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>(),</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>                     <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="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</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="l02995"></a><span class="lineno"> 2995</span>   </div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>   <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *CXXConstExpr = </div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>     cast<CXXConstructExpr>(PID-><a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#aa913ea1dcfdd9c8d23ee69f7cb6dc8ee">getGetterCXXConstructor</a>());</div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>   </div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Expr*, 4></a> ConstructorArgs;</div>
+<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>   ConstructorArgs.push_back(&SRC);</div>
+<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>   <a class="code" href="classclang_1_1ExprIterator.html">CXXConstructExpr::arg_iterator</a> A = CXXConstExpr->arg_begin();</div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>   ++A;</div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>   </div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ExprIterator.html">CXXConstructExpr::arg_iterator</a> AEnd = CXXConstExpr->arg_end();</div>
+<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>        A != AEnd; ++A)</div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>     ConstructorArgs.push_back(*A);</div>
+<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>   </div>
+<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>   <a class="code" href="classclang_1_1CXXConstructExpr.html" title="Represents a call to a C++ constructor.">CXXConstructExpr</a> *TheCXXConstructExpr =</div>
+<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>     <a class="code" href="classclang_1_1CXXConstructExpr.html#a2038cb4ec4b338a810e64ac461280ea8">CXXConstructExpr::Create</a>(C, Ty, <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="l03010"></a><span class="lineno"> 3010</span>                              CXXConstExpr->getConstructor(),</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>                              CXXConstExpr->isElidable(),</div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>                              ConstructorArgs,</div>
+<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>                              CXXConstExpr->hadMultipleCandidates(),</div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>                              CXXConstExpr->isListInitialization(),</div>
+<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>                              CXXConstExpr->requiresZeroInitialization(),</div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>                              CXXConstExpr->getConstructionKind(),</div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>                              <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>());</div>
+<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>   </div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</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> DstExpr(&dstDecl, <span class="keyword">false</span>, DestTy,</div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>                       <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</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="l03021"></a><span class="lineno"> 3021</span>   </div>
+<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> DV = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ab55962fe5983453b24c64f76125c760c">EmitAnyExpr</a>(&DstExpr);</div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>   <a class="code" href="classclang_1_1CharUnits.html">CharUnits</a> Alignment</div>
+<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>     = <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a78053c06e4477f81b295cac200144fc4" title="Return the ABI-specified alignment of a (complete) type T, in characters.">getTypeAlignInChars</a>(TheCXXConstructExpr-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>());</div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#ad58a7f0f413e2aea5174df10adc6d1b5">EmitAggExpr</a>(TheCXXConstructExpr, </div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>               <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a64e50a62672b895e0e40f2a3390a175f">AggValueSlot::forAddr</a>(DV.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>(), Alignment, <a class="code" href="classclang_1_1Qualifiers.html">Qualifiers</a>(),</div>
+<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a6d84e167770e22bc451368b9a91ca431a8136bc24318d61056b0ceb4c75a149fd">AggValueSlot::IsDestructed</a>,</div>
+<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#abe9f62d142350d6acdcfde4704f3b3f6acbe806e6b4a058a90fec01ddd6e4107f">AggValueSlot::DoesNotNeedGCBarriers</a>,</div>
+<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>                                     <a class="code" href="classclang_1_1CodeGen_1_1AggValueSlot.html#a5c9c197ce5564bb19209233a7004db7fabc0ebb1a165c68902e446375b1e5bfe1">AggValueSlot::IsNotAliased</a>));</div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>   </div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>   <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#adefc925f9c3921cc89f39663e2b2379e">FinishFunction</a>();</div>
+<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>   HelperFn = llvm::ConstantExpr::getBitCast(Fn, <a class="code" href="structclang_1_1CodeGen_1_1CodeGenTypeCache.html#a0609fd52690a7779529ad842007e239f">VoidPtrTy</a>);</div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>   CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#ad4c53083365d404afaf60dcc22bba0ad">setAtomicGetterHelperFnMap</a>(Ty, HelperFn);</div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>   <span class="keywordflow">return</span> HelperFn;</div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> }</div>
+<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span> </div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> llvm::Value *</div>
+<div class="line"><a name="l03038"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a685dc98f4f20326006ae11659438efe0"> 3038</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a685dc98f4f20326006ae11659438efe0">CodeGenFunction::EmitBlockCopyAndAutorelease</a>(llvm::Value *Block, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) {</div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>   <span class="comment">// Get selectors for retain/autorelease.</span></div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *CopyID = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"copy"</span>);</div>
+<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> CopySelector =</div>
+<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#ae7aee427125848f61a587c05fe308722">getNullarySelector</a>(CopyID);</div>
+<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *AutoreleaseID = &<a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"autorelease"</span>);</div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> AutoreleaseSelector =</div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>       <a class="code" href="classclang_1_1CodeGen_1_1CodeGenFunction.html#a8a474f8f10090f44fc3e331d1e4b9ce0">getContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#ae7aee427125848f61a587c05fe308722">getNullarySelector</a>(AutoreleaseID);</div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span> </div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>   <span class="comment">// Emit calls to retain/autorelease.</span></div>
+<div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>   <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html" title="Implements runtime-specific code generation functions.">CGObjCRuntime</a> &Runtime = CGM.<a class="code" href="classclang_1_1CodeGen_1_1CodeGenModule.html#a16bb1e08ec65a39764922030379aa5bc">getObjCRuntime</a>();</div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>   llvm::Value *Val = Block;</div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>   <a class="code" href="classclang_1_1CodeGen_1_1RValue.html">RValue</a> Result;</div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>   Result = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>                                        Ty, CopySelector,</div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>                                        Val, <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a>(), 0, 0);</div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>   Val = Result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>   Result = Runtime.<a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a478a6b1580a6c1e2825a7d92102dcca1">GenerateMessageSend</a>(*<span class="keyword">this</span>, <a class="code" href="classclang_1_1CodeGen_1_1ReturnValueSlot.html">ReturnValueSlot</a>(),</div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>                                        Ty, AutoreleaseSelector,</div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>                                        Val, <a class="code" href="classclang_1_1CodeGen_1_1CallArgList.html">CallArgList</a>(), 0, 0);</div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>   Val = Result.<a class="code" href="classclang_1_1CodeGen_1_1RValue.html#a375d011820c192d736c37b316abf1cb9" title="getScalarVal() - Return the Value* of this scalar value.">getScalarVal</a>();</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>   <span class="keywordflow">return</span> Val;</div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span> }</div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> </div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span> </div>
+<div class="line"><a name="l03063"></a><span class="lineno"><a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a10c1ef47e73cf8d96c8941f8716429b3"> 3063</a></span> <a class="code" href="classclang_1_1CodeGen_1_1CGObjCRuntime.html#a10c1ef47e73cf8d96c8941f8716429b3">CGObjCRuntime::~CGObjCRuntime</a>() {}</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:25 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>





More information about the llvm-commits mailing list